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

[01/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 1d01a0660 -> e71c09879


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


[15/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html
index 37c7193..9426c45 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":9,"i5":9,"i6":10,"i7":10,"i8":10,"i9":9,"i10":9,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":9,"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};
+var methods = {"i0":10,"i1":10,"i2":9,"i3":9,"i4":10,"i5":10,"i6":10,"i7":9,"i8":9,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":9,"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};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -276,27 +276,12 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 </td>
 </tr>
 <tr id="i2" class="altColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#checkClosedRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-">checkClosedRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
-                 <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>
-<div class="block">Check whether there is recovered.edits in the closed region
- If any, that means this region is not closed property, we need
- to abort region merge to prevent data loss</div>
-</td>
-</tr>
-<tr id="i3" class="rowColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#checkClosedRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">checkClosedRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
-<div class="block">check the closed regions</div>
-</td>
-</tr>
-<tr id="i4" class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#checkRegionsToMerge-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo:A-boolean-">checkRegionsToMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                    <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge,
                    boolean&nbsp;forcible)</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#checkRegionsToMerge-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-boolean-">checkRegionsToMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                    <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToMergeA,
@@ -305,132 +290,138 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <div class="block">One time checks.</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<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/master/assignment/MergeTableRegionsProcedure.html#cleanupMergedRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">cleanupMergedRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Clean up a merged region</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#createAssignProcedures-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-int-">createAssignProcedures</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                       int&nbsp;regionReplication)</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<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/master/assignment/MergeTableRegionsProcedure.html#createMergedRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">createMergedRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Create a merged region</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#createMergedRegionInfo-org.apache.hadoop.hbase.client.RegionInfo:A-">createMergedRegionInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge)</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#createMergedRegionInfo-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">createMergedRegionInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToMergeA,
                       <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToMergeB)</code>
 <div class="block">Create merged region info through the specified two regions</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">UnassignProcedure</a>[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#createUnassignProcedures-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-int-">createUnassignProcedures</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                         int&nbsp;regionReplication)</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)</code>
 <div class="block">Called on store load to allow the user to decode the previously serialized
  state.</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState&nbsp;state)</code>
 <div class="block">called to perform a single step of the specified 'state' of the procedure</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#getInitialState--">getInitialState</a></span>()</code>
 <div class="block">Return the initial state object that will be used for the first call to executeFromState().</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#getMergedRegion--">getMergedRegion</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>private static long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#getMergedRegionIdTimestamp-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">getMergedRegionIdTimestamp</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToMergeA,
                           <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToMergeB)</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#getProcedureMetrics-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getProcedureMetrics</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Override this method to provide procedure specific counters for submitted count, failed
  count and time histogram.</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#getRegionReplication-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getRegionReplication</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#getServerName-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getServerName</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">The procedure could be restarted from a different machine.</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#getState-int-">getState</a></span>(int&nbsp;stateId)</code>
 <div class="block">Convert an ordinal (or state id) to an Enum (or more descriptive) state object.</div>
 </td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>protected int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState-">getStateId</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState&nbsp;state)</code>
 <div class="block">Convert the Enum (or more descriptive) state object to an ordinal (or state id).</div>
 </td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code><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/master/assignment/MergeTableRegionsProcedure.html#getTableName--">getTableName</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#getTableOperationType--">getTableOperationType</a></span>()</code>
 <div class="block">Given an operation type we can take decisions about what to do with pending operations.</div>
 </td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i22" class="altColor">
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#hasRecoveredEdits-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">hasRecoveredEdits</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
+<div class="block">Return list of regions that have recovered.edits...</div>
+</td>
+</tr>
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#holdLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">holdLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Used to keep the procedure lock even when the procedure is yielding or suspended.</div>
 </td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#isMergeable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.RegionState-">isMergeable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
            <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a>&nbsp;rs)</code>&nbsp;</td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#isRollbackSupported-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState-">isRollbackSupported</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState&nbsp;state)</code>
 <div class="block">Used by the default implementation of abort() to know if the current state can be aborted
  and rollback can be triggered.</div>
 </td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code>private <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></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#isTraceEnabled--">isTraceEnabled</a></span>()</code>
 <div class="block">The procedure could be restarted from a different machine.</div>
 </td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#mergeStoreFiles-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.regionserver.HRegionFileSystem-org.apache.hadoop.fs.Path-">mergeStoreFiles</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a>&nbsp;regionFs,
@@ -438,55 +429,55 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <div class="block">Create reference file(s) of merging regions under the merged directory</div>
 </td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#postCompletedMergeRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postCompletedMergeRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Post merge region action</div>
 </td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#postMergeRegionsCommit-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postMergeRegionsCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Post merge region action</div>
 </td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#postRollBackMergeRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postRollBackMergeRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Action after rollback a merge table regions action.</div>
 </td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#preMergeRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">preMergeRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Pre merge region action</div>
 </td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#preMergeRegionsCommit-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">preMergeRegionsCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Post merge region action</div>
 </td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#prepareMergeRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepareMergeRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Prepare merge and do some check</div>
 </td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">The user should override this method, and release lock if necessary.</div>
 </td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#rollbackCloseRegionsForMerge-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">rollbackCloseRegionsForMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Rollback close regions</div>
 </td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i36" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState-">rollbackState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
              org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState&nbsp;state)</code>
@@ -495,33 +486,33 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
  AssignProcedures) .</div>
 </td>
 </tr>
-<tr id="i38" class="altColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)</code>
 <div class="block">The user-level code of the procedure may have some state to
  persist (e.g.</div>
 </td>
 </tr>
-<tr id="i39" class="rowColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#setRegionStateToMerging-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">setRegionStateToMerging</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Set the region states to MERGING state</div>
 </td>
 </tr>
-<tr id="i40" class="altColor">
+<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/master/assignment/MergeTableRegionsProcedure.html#toStringClassDetails-java.lang.StringBuilder-">toStringClassDetails</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</code>
 <div class="block">Extend the toString() information with the procedure details
  e.g.</div>
 </td>
 </tr>
-<tr id="i41" class="rowColor">
+<tr id="i40" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#updateMetaForMergedRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateMetaForMergedRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Add merged region to META and delete original regions.</div>
 </td>
 </tr>
-<tr id="i42" class="altColor">
+<tr id="i41" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#writeMaxSequenceIdFile-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">writeMaxSequenceIdFile</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
@@ -786,7 +777,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>rollbackState</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.296">rollbackState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.309">rollbackState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                              org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState&nbsp;state)
                       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">To rollback <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment"><code>MergeTableRegionsProcedure</code></a>, two AssignProcedures are asynchronously
@@ -808,7 +799,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>isRollbackSupported</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.346">isRollbackSupported</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState&nbsp;state)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.359">isRollbackSupported</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState&nbsp;state)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">StateMachineProcedure</a></code></span></div>
 <div class="block">Used by the default implementation of abort() to know if the current state can be aborted
  and rollback can be triggered.</div>
@@ -824,7 +815,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getState</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.361">getState</a>(int&nbsp;stateId)</pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.374">getState</a>(int&nbsp;stateId)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">StateMachineProcedure</a></code></span></div>
 <div class="block">Convert an ordinal (or state id) to an Enum (or more descriptive) state object.</div>
 <dl>
@@ -843,7 +834,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getStateId</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.366">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState&nbsp;state)</pre>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.379">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState&nbsp;state)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">StateMachineProcedure</a></code></span></div>
 <div class="block">Convert the Enum (or more descriptive) state object to an ordinal (or state id).</div>
 <dl>
@@ -862,7 +853,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getInitialState</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.371">getInitialState</a>()</pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.384">getInitialState</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getInitialState--">StateMachineProcedure</a></code></span></div>
 <div class="block">Return the initial state object that will be used for the first call to executeFromState().</div>
 <dl>
@@ -879,7 +870,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>serializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.376">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.389">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                            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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
 <div class="block">The user-level code of the procedure may have some state to
@@ -901,7 +892,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>deserializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.392">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.405">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                              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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
 <div class="block">Called on store load to allow the user to decode the previously serialized
@@ -922,7 +913,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringClassDetails</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.410">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.423">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClassDetails-java.lang.StringBuilder-">Procedure</a></code></span></div>
 <div class="block">Extend the toString() information with the procedure details
  e.g. className and parameters</div>
@@ -940,7 +931,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>acquireLock</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.421">acquireLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.434">acquireLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#acquireLock-TEnvironment-">Procedure</a></code></span></div>
 <div class="block">The user should override this method if they need a lock on an Entity. A lock can be anything,
  and it is up to the implementor. The Procedure Framework will call this method just before it
@@ -977,7 +968,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>releaseLock</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.435">releaseLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.448">releaseLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#releaseLock-TEnvironment-">Procedure</a></code></span></div>
 <div class="block">The user should override this method, and release lock if necessary.</div>
 <dl>
@@ -992,7 +983,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>holdLock</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.441">holdLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.454">holdLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#holdLock-TEnvironment-">Procedure</a></code></span></div>
 <div class="block">Used to keep the procedure lock even when the procedure is yielding or suspended.</div>
 <dl>
@@ -1009,7 +1000,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableName</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.446">getTableName</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.459">getTableName</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html#getTableName--">getTableName</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a></code></dd>
@@ -1026,7 +1017,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableOperationType</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.451">getTableOperationType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.464">getTableOperationType</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html#getTableOperationType--">TableProcedureInterface</a></code></span></div>
 <div class="block">Given an operation type we can take decisions about what to do with pending operations.
  e.g. if we get a delete and we have some table operation pending (e.g. add column)
@@ -1047,7 +1038,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getProcedureMetrics</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.456">getProcedureMetrics</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.469">getProcedureMetrics</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcedureMetrics-TEnvironment-">Procedure</a></code></span></div>
 <div class="block">Override this method to provide procedure specific counters for submitted count, failed
  count and time histogram.</div>
@@ -1061,15 +1052,15 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 </dl>
 </li>
 </ul>
-<a name="checkClosedRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
+<a name="hasRecoveredEdits-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>checkClosedRegions</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.465">checkClosedRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
-                         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">check the closed regions</div>
+<h4>hasRecoveredEdits</h4>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.478">hasRecoveredEdits</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+                                    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">Return list of regions that have recovered.edits... usually its an empty list.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>env</code> - the master env</dd>
@@ -1078,34 +1069,13 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 </dl>
 </li>
 </ul>
-<a name="checkClosedRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>checkClosedRegion</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.478">checkClosedRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
-                               <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)
-                        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">Check whether there is recovered.edits in the closed region
- If any, that means this region is not closed property, we need
- to abort region merge to prevent data loss</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>env</code> - master env</dd>
-<dd><code>regionInfo</code> - regioninfo</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> - IOException</dd>
-</dl>
-</li>
-</ul>
 <a name="prepareMergeRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareMergeRegion</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.492">prepareMergeRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.494">prepareMergeRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                             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">Prepare merge and do some check</div>
 <dl>
@@ -1122,7 +1092,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>isMergeable</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.559">isMergeable</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.561">isMergeable</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                             <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a>&nbsp;rs)
                      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>
@@ -1137,7 +1107,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>preMergeRegions</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.570">preMergeRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.572">preMergeRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                       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">Pre merge region action</div>
 <dl>
@@ -1154,7 +1124,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>postRollBackMergeRegions</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.590">postRollBackMergeRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.592">postRollBackMergeRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                                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">Action after rollback a merge table regions action.</div>
 <dl>
@@ -1171,7 +1141,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>setRegionStateToMerging</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.601">setRegionStateToMerging</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.603">setRegionStateToMerging</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 <div class="block">Set the region states to MERGING state</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1185,7 +1155,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>createMergedRegion</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.612">createMergedRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.614">createMergedRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                          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">Create a merged region</div>
 <dl>
@@ -1202,7 +1172,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>mergeStoreFiles</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.638">mergeStoreFiles</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.640">mergeStoreFiles</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a>&nbsp;regionFs,
                              org.apache.hadoop.fs.Path&nbsp;mergedDir)
                       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>
@@ -1223,7 +1193,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanupMergedRegion</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.665">cleanupMergedRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.667">cleanupMergedRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                           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">Clean up a merged region</div>
 <dl>
@@ -1240,7 +1210,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>rollbackCloseRegionsForMerge</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.678">rollbackCloseRegionsForMerge</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.680">rollbackCloseRegionsForMerge</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                                    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">Rollback close regions</div>
 <dl>
@@ -1257,7 +1227,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>createUnassignProcedures</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">UnassignProcedure</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.695">createUnassignProcedures</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">UnassignProcedure</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.697">createUnassignProcedures</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                                      int&nbsp;regionReplication)</pre>
 </li>
 </ul>
@@ -1267,7 +1237,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>createAssignProcedures</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.710">createAssignProcedures</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.712">createAssignProcedures</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                                  int&nbsp;regionReplication)</pre>
 </li>
 </ul>
@@ -1277,7 +1247,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionReplication</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.721">getRegionReplication</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.723">getRegionReplication</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                           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>
@@ -1291,7 +1261,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>preMergeRegionsCommit</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.730">preMergeRegionsCommit</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.732">preMergeRegionsCommit</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                             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">Post merge region action</div>
 <dl>
@@ -1308,7 +1278,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>updateMetaForMergedRegions</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.751">updateMetaForMergedRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.753">updateMetaForMergedRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                                  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">Add merged region to META and delete original regions.</div>
 <dl>
@@ -1323,7 +1293,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>postMergeRegionsCommit</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.761">postMergeRegionsCommit</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.763">postMergeRegionsCommit</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                              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">Post merge region action</div>
 <dl>
@@ -1340,7 +1310,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>postCompletedMergeRegions</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.772">postCompletedMergeRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.774">postCompletedMergeRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                                 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">Post merge region action</div>
 <dl>
@@ -1357,7 +1327,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerName</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.785">getServerName</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.787">getServerName</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 <div class="block">The procedure could be restarted from a different machine. If the variable is null, we need to
  retrieve it.</div>
 <dl>
@@ -1374,7 +1344,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>writeMaxSequenceIdFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.797">writeMaxSequenceIdFile</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.799">writeMaxSequenceIdFile</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                              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>
@@ -1388,7 +1358,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>isTraceEnabled</h4>
-<pre>private&nbsp;<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>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.814">isTraceEnabled</a>()</pre>
+<pre>private&nbsp;<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>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.816">isTraceEnabled</a>()</pre>
 <div class="block">The procedure could be restarted from a different machine. If the variable is null, we need to
  retrieve it.</div>
 <dl>
@@ -1403,7 +1373,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getMergedRegion</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.825">getMergedRegion</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.827">getMergedRegion</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The merged region. Maybe be null if called to early or we failed.</dd>
@@ -1416,7 +1386,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockListLast">
 <li class="blockList">
 <h4>abort</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.830">abort</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#line.832">abort</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#abort-TEnvironment-">Procedure</a></code></span></div>
 <div class="block">The abort() call is asynchronous and each procedure must decide how to deal
  with it, if they want to be abortable. The simplest implementation

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html
index ed9b649..bfde48c 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html
@@ -292,7 +292,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>values</h4>
-<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html" title="enum in org.apache.hadoop.hbase.master.assignment">RegionStates.ServerState</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html#line.501">values</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html" title="enum in org.apache.hadoop.hbase.master.assignment">RegionStates.ServerState</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html#line.504">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:
@@ -312,7 +312,7 @@ for (RegionStates.ServerState c : RegionStates.ServerState.values())
 <ul class="blockListLast">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html" title="enum in org.apache.hadoop.hbase.master.assignment">RegionStates.ServerState</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html#line.501">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html" title="enum in org.apache.hadoop.hbase.master.assignment">RegionStates.ServerState</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html#line.504">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">Returns the enum constant of this type with the specified name.
 The string must match <i>exactly</i> an identifier used to declare an
 enum constant in this type.  (Extraneous whitespace characters are 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html
index e08345e..7e108cf 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.738">SplitTableRegionProcedure.StoreFileSplitter</a>
+<pre>private class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.742">SplitTableRegionProcedure.StoreFileSplitter</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/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&gt;</pre>
 <div class="block">Utility class used to do the file splitting / reference writing
@@ -220,7 +220,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurre
 <ul class="blockList">
 <li class="blockList">
 <h4>regionFs</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.739">regionFs</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.743">regionFs</a></pre>
 </li>
 </ul>
 <a name="family">
@@ -229,7 +229,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurre
 <ul class="blockList">
 <li class="blockList">
 <h4>family</h4>
-<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.740">family</a></pre>
+<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.744">family</a></pre>
 </li>
 </ul>
 <a name="sf">
@@ -238,7 +238,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurre
 <ul class="blockListLast">
 <li class="blockList">
 <h4>sf</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.741">sf</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.745">sf</a></pre>
 </li>
 </ul>
 </li>
@@ -255,7 +255,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurre
 <ul class="blockListLast">
 <li class="blockList">
 <h4>StoreFileSplitter</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.749">StoreFileSplitter</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a>&nbsp;regionFs,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.753">StoreFileSplitter</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a>&nbsp;regionFs,
                          byte[]&nbsp;family,
                          <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;sf)</pre>
 <div class="block">Constructor that takes what it needs to split</div>
@@ -281,7 +281,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurre
 <ul class="blockListLast">
 <li class="blockList">
 <h4>call</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.756">call</a>()
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html#line.760">call</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>


[04/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/testdevapidocs/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html b/testdevapidocs/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html
index 3c86eb5..0494303 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9};
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.34">HBaseKerberosUtils</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.40">HBaseKerberosUtils</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>
@@ -241,6 +241,26 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i13" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#setSecuredConfiguration-org.apache.hadoop.conf.Configuration-java.lang.String-java.lang.String-">setSecuredConfiguration</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;servicePrincipal,
+                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;spnegoPrincipal)</code>
+<div class="block">Set up configuration for a secure HDFS+HBase cluster.</div>
+</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>private static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#setSecuredHadoopConfiguration-org.apache.hadoop.conf.Configuration-java.lang.String-">setSecuredHadoopConfiguration</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;spnegoServerPrincipal)</code>&nbsp;</td>
+</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/security/HBaseKerberosUtils.html#setSSLConfiguration-org.apache.hadoop.hbase.HBaseTestingUtility-java.lang.Class-">setSSLConfiguration</a></span>(<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;utility,
+                   <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>&nbsp;clazz)</code>
+<div class="block">Set up SSL configuration for HDFS NameNode and DataNode.</div>
+</td>
+</tr>
+<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/security/HBaseKerberosUtils.html#setSystemProperty-java.lang.String-java.lang.String-">setSystemProperty</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;propertyName,
                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;propertyValue)</code>&nbsp;</td>
 </tr>
@@ -272,7 +292,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.35">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.41">LOG</a></pre>
 </li>
 </ul>
 <a name="KRB_PRINCIPAL">
@@ -281,7 +301,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>KRB_PRINCIPAL</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.37">KRB_PRINCIPAL</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.43">KRB_PRINCIPAL</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.security.HBaseKerberosUtils.KRB_PRINCIPAL">Constant Field Values</a></dd>
@@ -294,7 +314,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MASTER_KRB_PRINCIPAL</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.38">MASTER_KRB_PRINCIPAL</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.44">MASTER_KRB_PRINCIPAL</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.security.HBaseKerberosUtils.MASTER_KRB_PRINCIPAL">Constant Field Values</a></dd>
@@ -307,7 +327,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>KRB_KEYTAB_FILE</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.39">KRB_KEYTAB_FILE</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.45">KRB_KEYTAB_FILE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.security.HBaseKerberosUtils.KRB_KEYTAB_FILE">Constant Field Values</a></dd>
@@ -320,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>CLIENT_PRINCIPAL</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.40">CLIENT_PRINCIPAL</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.46">CLIENT_PRINCIPAL</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.security.HBaseKerberosUtils.CLIENT_PRINCIPAL">Constant Field Values</a></dd>
@@ -333,7 +353,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CLIENT_KEYTAB</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.41">CLIENT_KEYTAB</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.47">CLIENT_KEYTAB</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.security.HBaseKerberosUtils.CLIENT_KEYTAB">Constant Field Values</a></dd>
@@ -354,7 +374,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HBaseKerberosUtils</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.34">HBaseKerberosUtils</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.40">HBaseKerberosUtils</a>()</pre>
 </li>
 </ul>
 </li>
@@ -371,7 +391,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isKerberosPropertySetted</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.43">isKerberosPropertySetted</a>()</pre>
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.49">isKerberosPropertySetted</a>()</pre>
 </li>
 </ul>
 <a name="setPrincipalForTesting-java.lang.String-">
@@ -380,7 +400,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setPrincipalForTesting</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.52">setPrincipalForTesting</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;principal)</pre>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.58">setPrincipalForTesting</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;principal)</pre>
 </li>
 </ul>
 <a name="setKeytabFileForTesting-java.lang.String-">
@@ -389,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>setKeytabFileForTesting</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.56">setKeytabFileForTesting</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keytabFile)</pre>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.62">setKeytabFileForTesting</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keytabFile)</pre>
 </li>
 </ul>
 <a name="setClientPrincipalForTesting-java.lang.String-">
@@ -398,7 +418,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setClientPrincipalForTesting</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.60">setClientPrincipalForTesting</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;clientPrincipal)</pre>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.66">setClientPrincipalForTesting</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;clientPrincipal)</pre>
 </li>
 </ul>
 <a name="setClientKeytabForTesting-java.lang.String-">
@@ -407,7 +427,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setClientKeytabForTesting</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.64">setClientKeytabForTesting</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;clientKeytab)</pre>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.70">setClientKeytabForTesting</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;clientKeytab)</pre>
 </li>
 </ul>
 <a name="setSystemProperty-java.lang.String-java.lang.String-">
@@ -416,7 +436,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setSystemProperty</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.68">setSystemProperty</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;propertyName,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.74">setSystemProperty</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;propertyName,
                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;propertyValue)</pre>
 </li>
 </ul>
@@ -426,7 +446,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getKeytabFileForTesting</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.72">getKeytabFileForTesting</a>()</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.78">getKeytabFileForTesting</a>()</pre>
 </li>
 </ul>
 <a name="getPrincipalForTesting--">
@@ -435,7 +455,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getPrincipalForTesting</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.76">getPrincipalForTesting</a>()</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.82">getPrincipalForTesting</a>()</pre>
 </li>
 </ul>
 <a name="getClientPrincipalForTesting--">
@@ -444,7 +464,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getClientPrincipalForTesting</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.80">getClientPrincipalForTesting</a>()</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.86">getClientPrincipalForTesting</a>()</pre>
 </li>
 </ul>
 <a name="getClientKeytabForTesting--">
@@ -453,7 +473,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getClientKeytabForTesting</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.84">getClientKeytabForTesting</a>()</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.90">getClientKeytabForTesting</a>()</pre>
 </li>
 </ul>
 <a name="getConfigurationWoPrincipal--">
@@ -462,7 +482,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfigurationWoPrincipal</h4>
-<pre>public static&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.88">getConfigurationWoPrincipal</a>()</pre>
+<pre>public static&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.94">getConfigurationWoPrincipal</a>()</pre>
 </li>
 </ul>
 <a name="getSecuredConfiguration--">
@@ -471,7 +491,25 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSecuredConfiguration</h4>
-<pre>public static&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.96">getSecuredConfiguration</a>()</pre>
+<pre>public static&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.102">getSecuredConfiguration</a>()</pre>
+</li>
+</ul>
+<a name="setSecuredConfiguration-org.apache.hadoop.conf.Configuration-java.lang.String-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setSecuredConfiguration</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.114">setSecuredConfiguration</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;servicePrincipal,
+                                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;spnegoPrincipal)</pre>
+<div class="block">Set up configuration for a secure HDFS+HBase cluster.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>conf</code> - configuration object.</dd>
+<dd><code>servicePrincipal</code> - service principal used by NN, HM and RS.</dd>
+<dd><code>spnegoPrincipal</code> - SPNEGO principal used by NN web UI.</dd>
+</dl>
 </li>
 </ul>
 <a name="setSecuredConfiguration-org.apache.hadoop.conf.Configuration-">
@@ -480,7 +518,36 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setSecuredConfiguration</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.102">setSecuredConfiguration</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.121">setSecuredConfiguration</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+</li>
+</ul>
+<a name="setSecuredHadoopConfiguration-org.apache.hadoop.conf.Configuration-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setSecuredHadoopConfiguration</h4>
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.130">setSecuredHadoopConfiguration</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;spnegoServerPrincipal)</pre>
+</li>
+</ul>
+<a name="setSSLConfiguration-org.apache.hadoop.hbase.HBaseTestingUtility-java.lang.Class-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setSSLConfiguration</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.164">setSSLConfiguration</a>(<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;utility,
+                                       <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>&nbsp;clazz)
+                                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">Set up SSL configuration for HDFS NameNode and DataNode.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>utility</code> - a HBaseTestingUtility object.</dd>
+<dd><code>clazz</code> - the caller test class.</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> - if unable to set up SSL configuration</dd>
+</dl>
 </li>
 </ul>
 <a name="loginAndReturnUGI-org.apache.hadoop.conf.Configuration-java.lang.String-">
@@ -489,7 +556,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>loginAndReturnUGI</h4>
-<pre>public static&nbsp;org.apache.hadoop.security.UserGroupInformation&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.111">loginAndReturnUGI</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;org.apache.hadoop.security.UserGroupInformation&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#line.177">loginAndReturnUGI</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;username)
                                                                          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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/testdevapidocs/org/apache/hadoop/hbase/security/token/SecureTestCluster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/token/SecureTestCluster.html b/testdevapidocs/org/apache/hadoop/hbase/security/token/SecureTestCluster.html
index 11a1480..e3c0d9f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/token/SecureTestCluster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/token/SecureTestCluster.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":9,"i2":9};
+var methods = {"i0":9,"i1":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.41">SecureTestCluster</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.37">SecureTestCluster</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">The class for set up a security cluster with kerberos, hdfs, hbase.</div>
 </li>
@@ -199,18 +199,12 @@ 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>private static void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/SecureTestCluster.html#setHdfsSecuredConfiguration-org.apache.hadoop.conf.Configuration-">setHdfsSecuredConfiguration</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
-<div class="block">Setup the security configuration for hdfs.</div>
-</td>
-</tr>
-<tr id="i1" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/SecureTestCluster.html#setUp--">setUp</a></span>()</code>
 <div class="block">Setup and start kerberos, hbase</div>
 </td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i1" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/token/SecureTestCluster.html#tearDown--">tearDown</a></span>()</code>&nbsp;</td>
 </tr>
@@ -242,7 +236,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>protected static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.42">TEST_UTIL</a></pre>
+<pre>protected static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.38">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="USERNAME">
@@ -251,7 +245,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>USERNAME</h4>
-<pre>protected static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.44">USERNAME</a></pre>
+<pre>protected static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.40">USERNAME</a></pre>
 </li>
 </ul>
 <a name="CLUSTER">
@@ -260,7 +254,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLUSTER</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.LocalHBaseCluster <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.46">CLUSTER</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.LocalHBaseCluster <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.42">CLUSTER</a></pre>
 </li>
 </ul>
 <a name="KEYTAB_FILE">
@@ -269,7 +263,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>KEYTAB_FILE</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.48">KEYTAB_FILE</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.44">KEYTAB_FILE</a></pre>
 </li>
 </ul>
 <a name="KDC">
@@ -278,7 +272,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>KDC</h4>
-<pre>private static&nbsp;org.apache.hadoop.minikdc.MiniKdc <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.50">KDC</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.minikdc.MiniKdc <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.46">KDC</a></pre>
 </li>
 </ul>
 <a name="HOST">
@@ -287,7 +281,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HOST</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.52">HOST</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.48">HOST</a></pre>
 </li>
 </ul>
 <a name="PRINCIPAL">
@@ -296,7 +290,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>PRINCIPAL</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.54">PRINCIPAL</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.50">PRINCIPAL</a></pre>
 </li>
 </ul>
 <a name="HTTP_PRINCIPAL">
@@ -305,7 +299,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HTTP_PRINCIPAL</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.56">HTTP_PRINCIPAL</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.52">HTTP_PRINCIPAL</a></pre>
 </li>
 </ul>
 </li>
@@ -322,7 +316,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SecureTestCluster</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.41">SecureTestCluster</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.37">SecureTestCluster</a>()</pre>
 </li>
 </ul>
 </li>
@@ -333,28 +327,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="setHdfsSecuredConfiguration-org.apache.hadoop.conf.Configuration-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>setHdfsSecuredConfiguration</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.61">setHdfsSecuredConfiguration</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
-                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
-<div class="block">Setup the security configuration for hdfs.</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="setUp--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>setUp</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.86">setUp</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.58">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>
 <div class="block">Setup and start kerberos, hbase</div>
 <dl>
@@ -369,7 +348,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>tearDown</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.109">tearDown</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/token/SecureTestCluster.html#line.80">tearDown</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/e71c0987/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 1499365..db9b7a6 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -253,10 +253,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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>
-<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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 468669a..1ffde37 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.83">TestThriftSpnegoHttpServer</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.82">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>
@@ -277,7 +277,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.85">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.84">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -286,7 +286,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.88">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.87">LOG</a></pre>
 </li>
 </ul>
 <a name="kdc">
@@ -295,7 +295,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>kdc</h4>
-<pre>private static&nbsp;org.apache.kerby.kerberos.kerb.server.SimpleKdcServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.91">kdc</a></pre>
+<pre>private static&nbsp;org.apache.kerby.kerberos.kerb.server.SimpleKdcServer <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.90">kdc</a></pre>
 </li>
 </ul>
 <a name="serverKeytab">
@@ -304,7 +304,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>serverKeytab</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.92">serverKeytab</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.91">serverKeytab</a></pre>
 </li>
 </ul>
 <a name="spnegoServerKeytab">
@@ -313,7 +313,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>spnegoServerKeytab</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.93">spnegoServerKeytab</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.92">spnegoServerKeytab</a></pre>
 </li>
 </ul>
 <a name="clientKeytab">
@@ -322,7 +322,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>clientKeytab</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.94">clientKeytab</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.93">clientKeytab</a></pre>
 </li>
 </ul>
 <a name="clientPrincipal">
@@ -331,7 +331,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>clientPrincipal</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.96">clientPrincipal</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.95">clientPrincipal</a></pre>
 </li>
 </ul>
 <a name="serverPrincipal">
@@ -340,7 +340,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>serverPrincipal</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.97">serverPrincipal</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.96">serverPrincipal</a></pre>
 </li>
 </ul>
 <a name="spnegoServerPrincipal">
@@ -349,7 +349,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockListLast">
 <li class="blockList">
 <h4>spnegoServerPrincipal</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.98">spnegoServerPrincipal</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.97">spnegoServerPrincipal</a></pre>
 </li>
 </ul>
 </li>
@@ -366,7 +366,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestThriftSpnegoHttpServer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.83">TestThriftSpnegoHttpServer</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.82">TestThriftSpnegoHttpServer</a>()</pre>
 </li>
 </ul>
 </li>
@@ -383,7 +383,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>setupUser</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.100">setupUser</a>(org.apache.kerby.kerberos.kerb.server.SimpleKdcServer&nbsp;kdc,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.99">setupUser</a>(org.apache.kerby.kerberos.kerb.server.SimpleKdcServer&nbsp;kdc,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;keytab,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;principal)
                        throws org.apache.kerby.kerberos.kerb.KrbException</pre>
@@ -399,7 +399,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>buildMiniKdc</h4>
-<pre>private static&nbsp;org.apache.kerby.kerberos.kerb.server.SimpleKdcServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.106">buildMiniKdc</a>()
+<pre>private static&nbsp;org.apache.kerby.kerberos.kerb.server.SimpleKdcServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.105">buildMiniKdc</a>()
                                                                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -413,7 +413,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>addSecurityConfigurations</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.130">addSecurityConfigurations</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.129">addSecurityConfigurations</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 <a name="setUpBeforeClass--">
@@ -422,7 +422,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>setUpBeforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.166">setUpBeforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.147">setUpBeforeClass</a>()
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -436,7 +436,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDownAfterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.200">tearDownAfterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.181">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,7 +450,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockList">
 <li class="blockList">
 <h4>talkToThriftServer</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.213">talkToThriftServer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;url,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.194">talkToThriftServer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;url,
                         int&nbsp;customHeaderSize)
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
@@ -467,7 +467,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/thrift/TestThriftHttpSer
 <ul class="blockListLast">
 <li class="blockList">
 <h4>createHttpClient</h4>
-<pre>private&nbsp;org.apache.http.impl.client.CloseableHttpClient&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.238">createHttpClient</a>()
+<pre>private&nbsp;org.apache.http.impl.client.CloseableHttpClient&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/thrift/TestThriftSpnegoHttpServer.html#line.219">createHttpClient</a>()
                                                                   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/e71c0987/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 5282059..9e0700e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -141,9 +141,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/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>
+<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/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">IOTestProvider.AllowedOperations</span></a></li>
 </ul>
 </li>
 </ul>


[09/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html
index 624224f..da0fffb 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html
@@ -246,602 +246,604 @@
 <span class="sourceLineNo">238</span>          setNextState(MergeTableRegionsState.MERGE_TABLE_REGIONS_CHECK_CLOSED_REGIONS);<a name="line.238"></a>
 <span class="sourceLineNo">239</span>          break;<a name="line.239"></a>
 <span class="sourceLineNo">240</span>        case MERGE_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          checkClosedRegions(env);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          setNextState(MergeTableRegionsState.MERGE_TABLE_REGIONS_CREATE_MERGED_REGION);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          break;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        case MERGE_TABLE_REGIONS_CREATE_MERGED_REGION:<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          createMergedRegion(env);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          setNextState(MergeTableRegionsState.MERGE_TABLE_REGIONS_WRITE_MAX_SEQUENCE_ID_FILE);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          break;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        case MERGE_TABLE_REGIONS_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.248"></a>
-<span class="sourceLineNo">249</span>          writeMaxSequenceIdFile(env);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          setNextState(MergeTableRegionsState.MERGE_TABLE_REGIONS_PRE_MERGE_COMMIT_OPERATION);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>          break;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        case MERGE_TABLE_REGIONS_PRE_MERGE_COMMIT_OPERATION:<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          preMergeRegionsCommit(env);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          setNextState(MergeTableRegionsState.MERGE_TABLE_REGIONS_UPDATE_META);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>          break;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>        case MERGE_TABLE_REGIONS_UPDATE_META:<a name="line.256"></a>
-<span class="sourceLineNo">257</span>          updateMetaForMergedRegions(env);<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          setNextState(MergeTableRegionsState.MERGE_TABLE_REGIONS_POST_MERGE_COMMIT_OPERATION);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          break;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        case MERGE_TABLE_REGIONS_POST_MERGE_COMMIT_OPERATION:<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          postMergeRegionsCommit(env);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>          setNextState(MergeTableRegionsState.MERGE_TABLE_REGIONS_OPEN_MERGED_REGION);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          break;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        case MERGE_TABLE_REGIONS_OPEN_MERGED_REGION:<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          addChildProcedure(createAssignProcedures(env, getRegionReplication(env)));<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          setNextState(MergeTableRegionsState.MERGE_TABLE_REGIONS_POST_OPERATION);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>          break;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        case MERGE_TABLE_REGIONS_POST_OPERATION:<a name="line.268"></a>
-<span class="sourceLineNo">269</span>          postCompletedMergeRegions(env);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>          return Flow.NO_MORE_STATE;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        default:<a name="line.271"></a>
-<span class="sourceLineNo">272</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    } catch (IOException e) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      String msg = "Error trying to merge regions " +<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        RegionInfo.getShortNameToLog(regionsToMerge) + " in the table " + getTableName() +<a name="line.276"></a>
-<span class="sourceLineNo">277</span>           " (in state=" + state + ")";<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      if (!isRollbackSupported(state)) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        // We reach a state that cannot be rolled back. We just need to keep retrying.<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        LOG.warn(msg, e);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      } else {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        LOG.error(msg, e);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        setFailure("master-merge-regions", e);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    return Flow.HAS_MORE_STATE;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  }<a name="line.287"></a>
-<span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>  /**<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * To rollback {@link MergeTableRegionsProcedure}, two AssignProcedures are asynchronously<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * submitted for each region to be merged (rollback doesn't wait on the completion of the<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * AssignProcedures) . This can be improved by changing rollback() to support sub-procedures.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   * See HBASE-19851 for details.<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   */<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  @Override<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  protected void rollbackState(final MasterProcedureEnv env, final MergeTableRegionsState state)<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      throws IOException {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    if (isTraceEnabled()) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      LOG.trace(this + " rollback state=" + state);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
+<span class="sourceLineNo">241</span>          List&lt;RegionInfo&gt; ris = hasRecoveredEdits(env);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          if (ris.isEmpty()) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>            setNextState(MergeTableRegionsState.MERGE_TABLE_REGIONS_CREATE_MERGED_REGION);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          } else {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>            // Need to reopen parent regions to pickup missed recovered.edits. Do it by creating<a name="line.245"></a>
+<span class="sourceLineNo">246</span>            // child assigns and then stepping back to MERGE_TABLE_REGIONS_CLOSE_REGIONS.<a name="line.246"></a>
+<span class="sourceLineNo">247</span>            // Just assign the primary regions recovering the missed recovered.edits -- no replicas.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>            // May need to cycle here a few times if heavy writes.<a name="line.248"></a>
+<span class="sourceLineNo">249</span>            // TODO: Add an assign read-only.<a name="line.249"></a>
+<span class="sourceLineNo">250</span>            for (RegionInfo ri: ris) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>              LOG.info("Found recovered.edits under {}, reopen to pickup missed edits!", ri);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>              addChildProcedure(env.getAssignmentManager().createAssignProcedure(ri));<a name="line.252"></a>
+<span class="sourceLineNo">253</span>            }<a name="line.253"></a>
+<span class="sourceLineNo">254</span>            setNextState(MergeTableRegionsState.MERGE_TABLE_REGIONS_CLOSE_REGIONS);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>          }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>          break;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        case MERGE_TABLE_REGIONS_CREATE_MERGED_REGION:<a name="line.257"></a>
+<span class="sourceLineNo">258</span>          createMergedRegion(env);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          setNextState(MergeTableRegionsState.MERGE_TABLE_REGIONS_WRITE_MAX_SEQUENCE_ID_FILE);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          break;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        case MERGE_TABLE_REGIONS_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          writeMaxSequenceIdFile(env);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          setNextState(MergeTableRegionsState.MERGE_TABLE_REGIONS_PRE_MERGE_COMMIT_OPERATION);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          break;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        case MERGE_TABLE_REGIONS_PRE_MERGE_COMMIT_OPERATION:<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          preMergeRegionsCommit(env);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          setNextState(MergeTableRegionsState.MERGE_TABLE_REGIONS_UPDATE_META);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>          break;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        case MERGE_TABLE_REGIONS_UPDATE_META:<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          updateMetaForMergedRegions(env);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          setNextState(MergeTableRegionsState.MERGE_TABLE_REGIONS_POST_MERGE_COMMIT_OPERATION);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          break;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        case MERGE_TABLE_REGIONS_POST_MERGE_COMMIT_OPERATION:<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          postMergeRegionsCommit(env);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          setNextState(MergeTableRegionsState.MERGE_TABLE_REGIONS_OPEN_MERGED_REGION);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>          break;<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        case MERGE_TABLE_REGIONS_OPEN_MERGED_REGION:<a name="line.277"></a>
+<span class="sourceLineNo">278</span>          addChildProcedure(createAssignProcedures(env, getRegionReplication(env)));<a name="line.278"></a>
+<span class="sourceLineNo">279</span>          setNextState(MergeTableRegionsState.MERGE_TABLE_REGIONS_POST_OPERATION);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>          break;<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        case MERGE_TABLE_REGIONS_POST_OPERATION:<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          postCompletedMergeRegions(env);<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          return Flow.NO_MORE_STATE;<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        default:<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      }<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    } catch (IOException e) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      String msg = "Error trying to merge regions " +<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        RegionInfo.getShortNameToLog(regionsToMerge) + " in the table " + getTableName() +<a name="line.289"></a>
+<span class="sourceLineNo">290</span>           " (in state=" + state + ")";<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      if (!isRollbackSupported(state)) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        // We reach a state that cannot be rolled back. We just need to keep retrying.<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        LOG.warn(msg, e);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      } else {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        LOG.error(msg, e);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        setFailure("master-merge-regions", e);<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>    return Flow.HAS_MORE_STATE;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  }<a name="line.300"></a>
 <span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>    try {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      switch (state) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        case MERGE_TABLE_REGIONS_POST_OPERATION:<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        case MERGE_TABLE_REGIONS_OPEN_MERGED_REGION:<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        case MERGE_TABLE_REGIONS_POST_MERGE_COMMIT_OPERATION:<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        case MERGE_TABLE_REGIONS_UPDATE_META:<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          String msg = this + " We are in the " + state + " state." +<a name="line.308"></a>
-<span class="sourceLineNo">309</span>            " It is complicated to rollback the merge operation that region server is working on." +<a name="line.309"></a>
-<span class="sourceLineNo">310</span>            " Rollback is not supported and we should let the merge operation to complete";<a name="line.310"></a>
-<span class="sourceLineNo">311</span>          LOG.warn(msg);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>          // PONR<a name="line.312"></a>
-<span class="sourceLineNo">313</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>        case MERGE_TABLE_REGIONS_PRE_MERGE_COMMIT_OPERATION:<a name="line.314"></a>
-<span class="sourceLineNo">315</span>          break;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        case MERGE_TABLE_REGIONS_CREATE_MERGED_REGION:<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        case MERGE_TABLE_REGIONS_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.317"></a>
-<span class="sourceLineNo">318</span>          cleanupMergedRegion(env);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>          break;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        case MERGE_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.320"></a>
-<span class="sourceLineNo">321</span>          break;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        case MERGE_TABLE_REGIONS_CLOSE_REGIONS:<a name="line.322"></a>
-<span class="sourceLineNo">323</span>          rollbackCloseRegionsForMerge(env);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>          break;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        case MERGE_TABLE_REGIONS_PRE_MERGE_OPERATION:<a name="line.325"></a>
-<span class="sourceLineNo">326</span>          postRollBackMergeRegions(env);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          break;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        case MERGE_TABLE_REGIONS_PREPARE:<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          break;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        default:<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    } catch (Exception e) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      // This will be retried. Unless there is a bug in the code,<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      // this should be just a "temporary error" (e.g. network down)<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      LOG.warn("Failed rollback attempt step " + state + " for merging the regions "<a name="line.336"></a>
-<span class="sourceLineNo">337</span>          + RegionInfo.getShortNameToLog(regionsToMerge) + " in table " + getTableName(), e);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      throw e;<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><a name="line.341"></a>
-<span class="sourceLineNo">342</span>  /*<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   * Check whether we are in the state that can be rolled back<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   */<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  @Override<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  protected boolean isRollbackSupported(final MergeTableRegionsState state) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    switch (state) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      case MERGE_TABLE_REGIONS_POST_OPERATION:<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      case MERGE_TABLE_REGIONS_OPEN_MERGED_REGION:<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      case MERGE_TABLE_REGIONS_POST_MERGE_COMMIT_OPERATION:<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      case MERGE_TABLE_REGIONS_UPDATE_META:<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        // It is not safe to rollback in these states.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        return false;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      default:<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        break;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    return true;<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>  @Override<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  protected MergeTableRegionsState getState(final int stateId) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    return MergeTableRegionsState.forNumber(stateId);<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>  @Override<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  protected int getStateId(final MergeTableRegionsState state) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    return state.getNumber();<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>  @Override<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  protected MergeTableRegionsState getInitialState() {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    return MergeTableRegionsState.MERGE_TABLE_REGIONS_PREPARE;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  }<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  @Override<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    super.serializeStateData(serializer);<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>    final MasterProcedureProtos.MergeTableRegionsStateData.Builder mergeTableRegionsMsg =<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        MasterProcedureProtos.MergeTableRegionsStateData.newBuilder()<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        .setUserInfo(MasterProcedureUtil.toProtoUserInfo(getUser()))<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        .setMergedRegionInfo(ProtobufUtil.toRegionInfo(mergedRegion))<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        .setForcible(forcible);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; regionsToMerge.length; ++i) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      mergeTableRegionsMsg.addRegionInfo(ProtobufUtil.toRegionInfo(regionsToMerge[i]));<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    serializer.serialize(mergeTableRegionsMsg.build());<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>  protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      throws IOException {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    super.deserializeStateData(serializer);<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    final MasterProcedureProtos.MergeTableRegionsStateData mergeTableRegionsMsg =<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        serializer.deserialize(MasterProcedureProtos.MergeTableRegionsStateData.class);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    setUser(MasterProcedureUtil.toUserInfo(mergeTableRegionsMsg.getUserInfo()));<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>    assert(mergeTableRegionsMsg.getRegionInfoCount() == 2);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    regionsToMerge = new RegionInfo[mergeTableRegionsMsg.getRegionInfoCount()];<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    for (int i = 0; i &lt; regionsToMerge.length; i++) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      regionsToMerge[i] = ProtobufUtil.toRegionInfo(mergeTableRegionsMsg.getRegionInfo(i));<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>    mergedRegion = ProtobufUtil.toRegionInfo(mergeTableRegionsMsg.getMergedRegionInfo());<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  }<a name="line.407"></a>
+<span class="sourceLineNo">302</span>  /**<a name="line.302"></a>
+<span class="sourceLineNo">303</span>   * To rollback {@link MergeTableRegionsProcedure}, two AssignProcedures are asynchronously<a name="line.303"></a>
+<span class="sourceLineNo">304</span>   * submitted for each region to be merged (rollback doesn't wait on the completion of the<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * AssignProcedures) . This can be improved by changing rollback() to support sub-procedures.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   * See HBASE-19851 for details.<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>  protected void rollbackState(final MasterProcedureEnv env, final MergeTableRegionsState state)<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      throws IOException {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    if (isTraceEnabled()) {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      LOG.trace(this + " rollback state=" + state);<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>    try {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      switch (state) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>        case MERGE_TABLE_REGIONS_POST_OPERATION:<a name="line.317"></a>
+<span class="sourceLineNo">318</span>        case MERGE_TABLE_REGIONS_OPEN_MERGED_REGION:<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        case MERGE_TABLE_REGIONS_POST_MERGE_COMMIT_OPERATION:<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        case MERGE_TABLE_REGIONS_UPDATE_META:<a name="line.320"></a>
+<span class="sourceLineNo">321</span>          String msg = this + " We are in the " + state + " state." +<a name="line.321"></a>
+<span class="sourceLineNo">322</span>            " It is complicated to rollback the merge operation that region server is working on." +<a name="line.322"></a>
+<span class="sourceLineNo">323</span>            " Rollback is not supported and we should let the merge operation to complete";<a name="line.323"></a>
+<span class="sourceLineNo">324</span>          LOG.warn(msg);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>          // PONR<a name="line.325"></a>
+<span class="sourceLineNo">326</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>        case MERGE_TABLE_REGIONS_PRE_MERGE_COMMIT_OPERATION:<a name="line.327"></a>
+<span class="sourceLineNo">328</span>          break;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        case MERGE_TABLE_REGIONS_CREATE_MERGED_REGION:<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        case MERGE_TABLE_REGIONS_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.330"></a>
+<span class="sourceLineNo">331</span>          cleanupMergedRegion(env);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>          break;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>        case MERGE_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          break;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        case MERGE_TABLE_REGIONS_CLOSE_REGIONS:<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          rollbackCloseRegionsForMerge(env);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          break;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        case MERGE_TABLE_REGIONS_PRE_MERGE_OPERATION:<a name="line.338"></a>
+<span class="sourceLineNo">339</span>          postRollBackMergeRegions(env);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>          break;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        case MERGE_TABLE_REGIONS_PREPARE:<a name="line.341"></a>
+<span class="sourceLineNo">342</span>          break;<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        default:<a name="line.343"></a>
+<span class="sourceLineNo">344</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    } catch (Exception e) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      // This will be retried. Unless there is a bug in the code,<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      // this should be just a "temporary error" (e.g. network down)<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      LOG.warn("Failed rollback attempt step " + state + " for merging the regions "<a name="line.349"></a>
+<span class="sourceLineNo">350</span>          + RegionInfo.getShortNameToLog(regionsToMerge) + " in table " + getTableName(), e);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      throw e;<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><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  /*<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * Check whether we are in the state that can be rolled back<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  @Override<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  protected boolean isRollbackSupported(final MergeTableRegionsState state) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    switch (state) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      case MERGE_TABLE_REGIONS_POST_OPERATION:<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      case MERGE_TABLE_REGIONS_OPEN_MERGED_REGION:<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      case MERGE_TABLE_REGIONS_POST_MERGE_COMMIT_OPERATION:<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      case MERGE_TABLE_REGIONS_UPDATE_META:<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        // It is not safe to rollback in these states.<a name="line.365"></a>
+<span class="sourceLineNo">366</span>        return false;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      default:<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        break;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    return true;<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>  @Override<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  protected MergeTableRegionsState getState(final int stateId) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    return MergeTableRegionsState.forNumber(stateId);<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>  protected int getStateId(final MergeTableRegionsState state) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    return state.getNumber();<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>  @Override<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  protected MergeTableRegionsState getInitialState() {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    return MergeTableRegionsState.MERGE_TABLE_REGIONS_PREPARE;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  @Override<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      throws IOException {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    super.serializeStateData(serializer);<a name="line.391"></a>
+<span class="sourceLineNo">392</span><a name="line.392"></a>
+<span class="sourceLineNo">393</span>    final MasterProcedureProtos.MergeTableRegionsStateData.Builder mergeTableRegionsMsg =<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        MasterProcedureProtos.MergeTableRegionsStateData.newBuilder()<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        .setUserInfo(MasterProcedureUtil.toProtoUserInfo(getUser()))<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        .setMergedRegionInfo(ProtobufUtil.toRegionInfo(mergedRegion))<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        .setForcible(forcible);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    for (int i = 0; i &lt; regionsToMerge.length; ++i) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      mergeTableRegionsMsg.addRegionInfo(ProtobufUtil.toRegionInfo(regionsToMerge[i]));<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    serializer.serialize(mergeTableRegionsMsg.build());<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>  protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      throws IOException {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    super.deserializeStateData(serializer);<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 void toStringClassDetails(StringBuilder sb) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    sb.append(getClass().getSimpleName());<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    sb.append(" table=");<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    sb.append(getTableName());<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    sb.append(", regions=");<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    sb.append(RegionInfo.getShortNameToLog(regionsToMerge));<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    sb.append(", forcibly=");<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    sb.append(forcible);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  @Override<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  protected LockState acquireLock(final MasterProcedureEnv env) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    if (env.getProcedureScheduler().waitRegions(this, getTableName(),<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        mergedRegion, regionsToMerge[0], regionsToMerge[1])) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      try {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        LOG.debug(LockState.LOCK_EVENT_WAIT + " " + env.getProcedureScheduler().dumpLocks());<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      } catch (IOException e) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>        // Ignore, just for logging<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return LockState.LOCK_EVENT_WAIT;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    return LockState.LOCK_ACQUIRED;<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>  protected void releaseLock(final MasterProcedureEnv env) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    env.getProcedureScheduler().wakeRegions(this, getTableName(),<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      mergedRegion, regionsToMerge[0], regionsToMerge[1]);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  }<a name="line.438"></a>
-<span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>  @Override<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  protected boolean holdLock(MasterProcedureEnv env) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    return true;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  }<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  @Override<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public TableName getTableName() {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    return mergedRegion.getTable();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  }<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  @Override<a name="line.450"></a>
-<span class="sourceLineNo">451</span>  public TableOperationType getTableOperationType() {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    return TableOperationType.REGION_MERGE;<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>  @Override<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getMergeProcMetrics();<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>   * check the closed regions<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * @param env the master env<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * @throws IOException IOException<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   */<a name="line.464"></a>
-<span class="sourceLineNo">465</span>  private void checkClosedRegions(final MasterProcedureEnv env) throws IOException {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    checkClosedRegion(env, regionsToMerge[0]);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    checkClosedRegion(env, regionsToMerge[1]);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  }<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>  /**<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   * Check whether there is recovered.edits in the closed region<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * If any, that means this region is not closed property, we need<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * to abort region merge to prevent data loss<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * @param env master env<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * @param regionInfo regioninfo<a name="line.475"></a>
+<span class="sourceLineNo">409</span>    final MasterProcedureProtos.MergeTableRegionsStateData mergeTableRegionsMsg =<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        serializer.deserialize(MasterProcedureProtos.MergeTableRegionsStateData.class);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    setUser(MasterProcedureUtil.toUserInfo(mergeTableRegionsMsg.getUserInfo()));<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>    assert(mergeTableRegionsMsg.getRegionInfoCount() == 2);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    regionsToMerge = new RegionInfo[mergeTableRegionsMsg.getRegionInfoCount()];<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    for (int i = 0; i &lt; regionsToMerge.length; i++) {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      regionsToMerge[i] = ProtobufUtil.toRegionInfo(mergeTableRegionsMsg.getRegionInfo(i));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>    mergedRegion = ProtobufUtil.toRegionInfo(mergeTableRegionsMsg.getMergedRegionInfo());<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>  @Override<a name="line.422"></a>
+<span class="sourceLineNo">423</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    sb.append(getClass().getSimpleName());<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    sb.append(" table=");<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    sb.append(getTableName());<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    sb.append(", regions=");<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    sb.append(RegionInfo.getShortNameToLog(regionsToMerge));<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    sb.append(", forcibly=");<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    sb.append(forcible);<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  }<a name="line.431"></a>
+<span class="sourceLineNo">432</span><a name="line.432"></a>
+<span class="sourceLineNo">433</span>  @Override<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  protected LockState acquireLock(final MasterProcedureEnv env) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    if (env.getProcedureScheduler().waitRegions(this, getTableName(),<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        mergedRegion, regionsToMerge[0], regionsToMerge[1])) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      try {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        LOG.debug(LockState.LOCK_EVENT_WAIT + " " + env.getProcedureScheduler().dumpLocks());<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      } catch (IOException e) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        // Ignore, just for logging<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      return LockState.LOCK_EVENT_WAIT;<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    }<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    return LockState.LOCK_ACQUIRED;<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>  @Override<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  protected void releaseLock(final MasterProcedureEnv env) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    env.getProcedureScheduler().wakeRegions(this, getTableName(),<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      mergedRegion, regionsToMerge[0], regionsToMerge[1]);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  }<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>  @Override<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  protected boolean holdLock(MasterProcedureEnv env) {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    return true;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>  @Override<a name="line.458"></a>
+<span class="sourceLineNo">459</span>  public TableName getTableName() {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    return mergedRegion.getTable();<a name="line.460"></a>
+<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
+<span class="sourceLineNo">462</span><a name="line.462"></a>
+<span class="sourceLineNo">463</span>  @Override<a name="line.463"></a>
+<span class="sourceLineNo">464</span>  public TableOperationType getTableOperationType() {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    return TableOperationType.REGION_MERGE;<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  }<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>  @Override<a name="line.468"></a>
+<span class="sourceLineNo">469</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getMergeProcMetrics();<a name="line.470"></a>
+<span class="sourceLineNo">471</span>  }<a name="line.471"></a>
+<span class="sourceLineNo">472</span><a name="line.472"></a>
+<span class="sourceLineNo">473</span>  /**<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   * Return list of regions that have recovered.edits... usually its an empty list.<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * @param env the master env<a name="line.475"></a>
 <span class="sourceLineNo">476</span>   * @throws IOException IOException<a name="line.476"></a>
 <span class="sourceLineNo">477</span>   */<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private void checkClosedRegion(final MasterProcedureEnv env,<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      RegionInfo regionInfo) throws IOException {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (WALSplitter.hasRecoveredEdits(env.getMasterServices().getFileSystem(),<a name="line.480"></a>
-<span class="sourceLineNo">481</span>        env.getMasterConfiguration(), regionInfo)) {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      throw new IOException("Recovered.edits are found in Region: " + regionInfo<a name="line.482"></a>
-<span class="sourceLineNo">483</span>          + ", abort merge to prevent data loss");<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>   * Prepare merge and do some check<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * @param env MasterProcedureEnv<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * @throws IOException<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   */<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  private boolean prepareMergeRegion(final MasterProcedureEnv env) throws IOException {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    // Note: the following logic assumes that we only have 2 regions to merge.  In the future,<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    // if we want to extend to more than 2 regions, the code needs to be modified a little bit.<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    CatalogJanitor catalogJanitor = env.getMasterServices().getCatalogJanitor();<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    boolean regionAHasMergeQualifier = !catalogJanitor.cleanMergeQualifier(regionsToMerge[0]);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    if (regionAHasMergeQualifier<a name="line.497"></a>
-<span class="sourceLineNo">498</span>        || !catalogJanitor.cleanMergeQualifier(regionsToMerge[1])) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      String msg = "Skip merging regions " + RegionInfo.getShortNameToLog(regionsToMerge) +<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        ", because region "<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        + (regionAHasMergeQualifier ? regionsToMerge[0].getEncodedName() : regionsToMerge[1]<a name="line.501"></a>
-<span class="sourceLineNo">502</span>              .getEncodedName()) + " has merge qualifier";<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      LOG.warn(msg);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      throw new MergeRegionException(msg);<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>    RegionStates regionStates = env.getAssignmentManager().getRegionStates();<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    RegionState regionStateA = regionStates.getRegionState(regionsToMerge[0].getEncodedName());<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    RegionState regionStateB = regionStates.getRegionState(regionsToMerge[1].getEncodedName());<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    if (regionStateA == null || regionStateB == null) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      throw new UnknownRegionException(<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        regionStateA == null ?<a name="line.512"></a>
-<span class="sourceLineNo">513</span>            regionsToMerge[0].getEncodedName() : regionsToMerge[1].getEncodedName());<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    }<a name="line.514"></a>
-<span class="sourceLineNo">515</span><a name="line.515"></a>
-<span class="sourceLineNo">516</span>    if (!regionStateA.isOpened() || !regionStateB.isOpened()) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      throw new MergeRegionException(<a name="line.517"></a>
-<span class="sourceLineNo">518</span>        "Unable to merge regions that are not online " + regionStateA + ", " + regionStateB);<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>    if (!env.getMasterServices().isSplitOrMergeEnabled(MasterSwitchType.MERGE)) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      String regionsStr = Arrays.deepToString(regionsToMerge);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      LOG.warn("merge switch is off! skip merge of " + regionsStr);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      super.setFailure(getClass().getSimpleName(),<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          new IOException("Merge of " + regionsStr + " failed because merge switch is off"));<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      return false;<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>    // Ask the remote regionserver if regions are mergeable. If we get an IOE, report it<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    // along with the failure, so we can see why regions are not mergeable at this time.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    IOException mergeableCheckIOE = null;<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    boolean mergeable = false;<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    RegionState current = regionStateA;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    try {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      mergeable = isMergeable(env, current);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    } catch (IOException e) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      mergeableCheckIOE = e;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    if (mergeable &amp;&amp; mergeableCheckIOE == null) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      current = regionStateB;<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      try {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        mergeable = isMergeable(env, current);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      } catch (IOException e) {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        mergeableCheckIOE = e;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      }<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    }<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    if (!mergeable) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      IOException e = new IOException(current.getRegion().getShortNameToLog() + " NOT mergeable");<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      if (mergeableCheckIOE != null) e.initCause(mergeableCheckIOE);<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      super.setFailure(getClass().getSimpleName(), e);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      return false;<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    }<a name="line.552"></a>
-<span class="sourceLineNo">553</span><a name="line.553"></a>
-<span class="sourceLineNo">554</span>    // Update region states to Merging<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    setRegionStateToMerging(env);<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    return true;<a name="line.556"></a>
-<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
-<span class="sourceLineNo">558</span><a name="line.558"></a>
-<span class="sourceLineNo">559</span>  private boolean isMergeable(final MasterProcedureEnv env, final RegionState rs)<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  throws IOException {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    GetRegionInfoResponse response =<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      Util.getRegionInfoResponse(env, rs.getServerName(), rs.getRegion());<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    return response.hasMergeable() &amp;&amp; response.getMergeable();<a name="line.563"></a>
-<span class="sourceLineNo">564</span>  }<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  /**<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   * Pre merge region action<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   * @param env MasterProcedureEnv<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   **/<a name="line.569"></a>
-<span class="sourceLineNo">570</span>  private void preMergeRegions(final MasterProcedureEnv env) throws IOException {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    if (cpHost != null) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      cpHost.preMergeRegionsAction(regionsToMerge, getUser());<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    }<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    // TODO: Clean up split and merge. Currently all over the place.<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    try {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      env.getMasterServices().getMasterQuotaManager().onRegionMerged(this.mergedRegion);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    } catch (QuotaExceededException e) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      env.getMasterServices().getRegionNormalizer().planSkipped(this.mergedRegion,<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          NormalizationPlan.PlanType.MERGE);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      throw e;<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><a name="line.584"></a>
-<span class="sourceLineNo">585</span>  /**<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * Action after rollback a merge table regions action.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   * @param env MasterProcedureEnv<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @throws IOException<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   */<a name="line.589"></a>
-<span class="sourceLineNo">590</span>  private void postRollBackMergeRegions(final MasterProcedureEnv env) throws IOException {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    if (cpHost != null) {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      cpHost.postRollBackMergeRegionsAction(regionsToMerge, getUser());<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>   * Set the region states to MERGING state<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   * @param env MasterProcedureEnv<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   */<a name="line.600"></a>
-<span class="sourceLineNo">601</span>  public void setRegionStateToMerging(final MasterProcedureEnv env) {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    // Set State.MERGING to regions to be merged<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    RegionStates regionStates = env.getAssignmentManager().getRegionStates();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    regionStates.getRegionStateNode(regionsToMerge[0]).setState(State.MERGING);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    regionStates.getRegionStateNode(regionsToMerge[1]).setState(State.MERGING);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
-<span class="sourceLineNo">607</span><a name="line.607"></a>
-<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   * Create a merged region<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   * @param env MasterProcedureEnv<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   */<a name="line.611"></a>
-<span class="sourceLineNo">612</span>  private void createMergedRegion(final MasterProcedureEnv env) throws IOException {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    final Path tabledir = FSUtils.getTableDir(mfs.getRootDir(), regionsToMerge[0].getTable());<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    final FileSystem fs = mfs.getFileSystem();<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    HRegionFileSystem regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      env.getMasterConfiguration(), fs, tabledir, regionsToMerge[0], false);<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    regionFs.createMergesDir();<a name="line.618"></a>
-<span class="sourceLineNo">619</span><a name="line.619"></a>
-<span class="sourceLineNo">620</span>    mergeStoreFiles(env, regionFs, regionFs.getMergesDir());<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    HRegionFileSystem regionFs2 = HRegionFileSystem.openRegionFromFileSystem(<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      env.getMasterConfiguration(), fs, tabledir, regionsToMerge[1], false);<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    mergeStoreFiles(env, regionFs2, regionFs.getMergesDir());<a name="line.623"></a>
-<span class="sourceLineNo">624</span><a name="line.624"></a>
-<span class="sourceLineNo">625</span>    regionFs.commitMergedRegion(mergedRegion);<a name="line.625"></a>
+<span class="sourceLineNo">478</span>  private List&lt;RegionInfo&gt; hasRecoveredEdits(final MasterProcedureEnv env) throws IOException {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    List&lt;RegionInfo&gt; ris =  new ArrayList&lt;RegionInfo&gt;(regionsToMerge.length);<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    for (int i = 0; i &lt; regionsToMerge.length; i++) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      RegionInfo ri = regionsToMerge[i];<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      if (SplitTableRegionProcedure.hasRecoveredEdits(env, ri)) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        ris.add(ri);<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>    return ris;<a name="line.486"></a>
+<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   * Prepare merge and do some check<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   * @param env MasterProcedureEnv<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * @throws IOException<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   */<a name="line.493"></a>
+<span class="sourceLineNo">494</span>  private boolean prepareMergeRegion(final MasterProcedureEnv env) throws IOException {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    // Note: the following logic assumes that we only have 2 regions to merge.  In the future,<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    // if we want to extend to more than 2 regions, the code needs to be modified a little bit.<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    CatalogJanitor catalogJanitor = env.getMasterServices().getCatalogJanitor();<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    boolean regionAHasMergeQualifier = !catalogJanitor.cleanMergeQualifier(regionsToMerge[0]);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    if (regionAHasMergeQualifier<a name="line.499"></a>
+<span class="sourceLineNo">500</span>        || !catalogJanitor.cleanMergeQualifier(regionsToMerge[1])) {<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      String msg = "Skip merging regions " + RegionInfo.getShortNameToLog(regionsToMerge) +<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        ", because region "<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        + (regionAHasMergeQualifier ? regionsToMerge[0].getEncodedName() : regionsToMerge[1]<a name="line.503"></a>
+<span class="sourceLineNo">504</span>              .getEncodedName()) + " has merge qualifier";<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      LOG.warn(msg);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      throw new MergeRegionException(msg);<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>    RegionStates regionStates = env.getAssignmentManager().getRegionStates();<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    RegionState regionStateA = regionStates.getRegionState(regionsToMerge[0].getEncodedName());<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    RegionState regionStateB = regionStates.getRegionState(regionsToMerge[1].getEncodedName());<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    if (regionStateA == null || regionStateB == null) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>      throw new UnknownRegionException(<a name="line.513"></a>
+<span class="sourceLineNo">514</span>        regionStateA == null ?<a name="line.514"></a>
+<span class="sourceLineNo">515</span>            regionsToMerge[0].getEncodedName() : regionsToMerge[1].getEncodedName());<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
+<span class="sourceLineNo">517</span><a name="line.517"></a>
+<span class="sourceLineNo">518</span>    if (!regionStateA.isOpened() || !regionStateB.isOpened()) {<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      throw new MergeRegionException(<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        "Unable to merge regions that are not online " + regionStateA + ", " + regionStateB);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    }<a name="line.521"></a>
+<span class="sourceLineNo">522</span><a name="line.522"></a>
+<span class="sourceLineNo">523</span>    if (!env.getMasterServices().isSplitOrMergeEnabled(MasterSwitchType.MERGE)) {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      String regionsStr = Arrays.deepToString(regionsToMerge);<a name="line.524"></a>
+<span class="sourceLineNo">525</span>      LOG.warn("merge switch is off! skip merge of " + regionsStr);<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      super.setFailure(getClass().getSimpleName(),<a name="line.526"></a>
+<span class="sourceLineNo">527</span>          new IOException("Merge of " + regionsStr + " failed because merge switch is off"));<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      return false;<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>    // Ask the remote regionserver if regions are mergeable. If we get an IOE, report it<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    // along with the failure, so we can see why regions are not mergeable at this time.<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    IOException mergeableCheckIOE = null;<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    boolean mergeable = false;<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    RegionState current = regionStateA;<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    try {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      mergeable = isMergeable(env, current);<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    } catch (IOException e) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>      mergeableCheckIOE = e;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    }<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    if (mergeable &amp;&amp; mergeableCheckIOE == null) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      current = regionStateB;<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      try {<a name="line.543"></a>
+<span class="sourceLineNo">544</span>        mergeable = isMergeable(env, current);<a name="line.544"></a>
+<span class="sourceLineNo">545</span>      } catch (IOException e) {<a name="line.545"></a>
+<span class="sourceLineNo">546</span>        mergeableCheckIOE = e;<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      }<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    }<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    if (!mergeable) {<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      IOException e = new IOException(current.getRegion().getShortNameToLog() + " NOT mergeable");<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      if (mergeableCheckIOE != null) e.initCause(mergeableCheckIOE);<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      super.setFailure(getClass().getSimpleName(), e);<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      return false;<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>    // Update region states to Merging<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    setRegionStateToMerging(env);<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    return true;<a name="line.558"></a>
+<span class="sourceLineNo">559</span>  }<a name="line.559"></a>
+<span class="sourceLineNo">560</span><a name="line.560"></a>
+<span class="sourceLineNo">561</span>  private boolean isMergeable(final MasterProcedureEnv env, final RegionState rs)<a name="line.561"></a>
+<span class="sourceLineNo">562</span>  throws IOException {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>    GetRegionInfoResponse response =<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      Util.getRegionInfoResponse(env, rs.getServerName(), rs.getRegion());<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    return response.hasMergeable() &amp;&amp; response.getMergeable();<a name="line.565"></a>
+<span class="sourceLineNo">566</span>  }<a name="line.566"></a>
+<span class="sourceLineNo">567</span><a name="line.567"></a>
+<span class="sourceLineNo">568</span>  /**<a name="line.568"></a>
+<span class="sourceLineNo">569</span>   * Pre merge region action<a name="line.569"></a>
+<span class="sourceLineNo">570</span>   * @param env MasterProcedureEnv<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   **/<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private void preMergeRegions(final MasterProcedureEnv env) throws IOException {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>    final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.573"></a>
+<span class="sourceLineNo">574</span>    if (cpHost != null) {<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      cpHost.preMergeRegionsAction(regionsToMerge, getUser());<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    }<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    // TODO: Clean up split and merge. Currently all over the place.<a name="line.577"></a>
+<span class="sourceLineNo">578</span>    try {<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      env.getMasterServices().getMasterQuotaManager().onRegionMerged(this.mergedRegion);<a name="line.579"></a>
+<span class="sourceLineNo">580</span>    } catch (QuotaExceededException e) {<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      env.getMasterServices().getRegionNormalizer().planSkipped(this.mergedRegion,<a name="line.581"></a>
+<span class="sourceLineNo">582</span>          NormalizationPlan.PlanType.MERGE);<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      throw e;<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    }<a name="line.584"></a>
+<span class="sourceLineNo">585</span>  }<a name="line.585"></a>
+<span class="sourceLineNo">586</span><a name="line.586"></a>
+<span class="sourceLineNo">587</span>  /**<a name="line.587"></a>
+<span class="sourceLineNo">588</span>   * Action after rollback a merge table regions action.<a name="line.588"></a>
+<span class="sourceLineNo">589</span>   * @param env MasterProcedureEnv<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   * @throws IOException<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   */<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  private void postRollBackMergeRegions(final MasterProcedureEnv env) throws IOException {<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.593"></a>
+<span class="sourceLineNo">594</span>    if (cpHost != null) {<a name="line.594"></a>
+<span class="sourceLineNo">595</span>      cpHost.postRollBackMergeRegionsAction(regionsToMerge, getUser());<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><a name="line.598"></a>
+<span class="sourceLineNo">599</span>  /**<a name="line.599"></a>
+<span class="sourceLineNo">600</span>   * Set the region states to MERGING state<a name="line.600"></a>
+<span class="sourceLineNo">601</span>   * @param env MasterProcedureEnv<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   */<a name="line.602"></a>
+<span class="sourceLineNo">603</span>  public void setRegionStateToMerging(final MasterProcedureEnv env) {<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    // Set State.MERGING to regions to be merged<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    RegionStates regionStates = env.getAssignmentManager().getRegionStates();<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    regionStates.getRegionStateNode(regionsToMerge[0]).setState(State.MERGING);<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    regionStates.getRegionStateNode(regionsToMerge[1]).setState(State.MERGING);<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>   * Create a merged region<a name="line.611"></a>
+<span class="sourceLineNo">612</span>   * @param env MasterProcedureEnv<a name="line.612"></a>
+<span class="sourceLineNo">613</span>   */<a name="line.613"></a>
+<span class="sourceLineNo">614</span>  private void createMergedRegion(final MasterProcedureEnv env) throws IOException {<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    final Path tabledir = FSUtils.getTableDir(mfs.getRootDir(), regionsToMerge[0].getTable());<a name="line.616"></a>
+<span class="sourceLineNo">617</span>    final FileSystem fs = mfs.getFileSystem();<a name="line.617"></a>
+<span class="sourceLineNo">618</span>    HRegionFileSystem regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.618"></a>
+<span class="sourceLineNo">619</span>      env.getMasterConfiguration(), fs, tabledir, regionsToMerge[0], false);<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    regionFs.createMergesDir();<a name="line.620"></a>
+<span class="sourceLineNo">621</span><a name="line.621"></a>
+<span class="sourceLineNo">622</span>    mergeStoreFiles(env, regionFs, regionFs.getMergesDir());<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    HRegionFileSystem regionFs2 = HRegionFileSystem.openRegionFromFileSystem(<a name="line.623"></a>
+<span class="sourceLineNo">624</span>      env.getMasterConfiguration(), fs, tabledir, regionsToMerge[1], false);<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    mergeStoreFiles(env, regionFs2, regionFs.getMergesDir());<a name="line.625"></a>
 <span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>    //Prepare to create merged regions<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    env.getAssignmentManager().getRegionStates().<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        getOrCreateRegionStateNode(mergedRegion).setState(State.MERGING_NEW);<a name="line.629"></a>
-<span class="sourceLineNo">630</span>  }<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>   * Create reference file(s) of merging regions under the merged directory<a name="line.633"></a>
-<span class="sourceLineNo">634</span>   * @param env MasterProcedureEnv<a name="line.634"></a>
-<span class="sourceLineNo">635</span>   * @param regionFs region file system<a name="line.635"></a>
-<span class="sourceLineNo">636</span>   * @param mergedDir the temp directory of merged region<a name="line.636"></a>
-<span class="sourceLineNo">637</span>   */<a name="line.637"></a>
-<span class="sourceLineNo">638</span>  private void mergeStoreFiles(<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      final MasterProcedureEnv env, final HRegionFileSystem regionFs, final Path mergedDir)<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      throws IOException {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    final Configuration conf = env.getMasterConfiguration();<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    final TableDescriptor htd = env.getMasterServices().getTableDescriptors().get(getTableName());<a name="line.643"></a>
-<span class="sourceLineNo">644</span><a name="line.644"></a>
-<span class="sourceLineNo">645</span>    for (String family: regionFs.getFamilies()) {<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      final ColumnFamilyDescriptor hcd = htd.getColumnFamily(Bytes.toBytes(family));<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      final Collection&lt;StoreFileInfo&gt; storeFiles = regionFs.getStoreFiles(family);<a name="line.647"></a>
-<span class="sourceLineNo">648</span><a name="line.648"></a>
-<span class="sourceLineNo">649</span>      if (storeFiles != null &amp;&amp; storeFiles.size() &gt; 0) {<a name="line.649"></a>
-<span class="sourceLineNo">650</span>        final CacheConfig cacheConf = new CacheConfig(conf, hcd);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>        for (StoreFileInfo storeFileInfo: storeFiles) {<a name="line.651"></a>
-<span class="sourceLineNo">652</span>          // Create reference file(s) of the region in mergedDir<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          regionFs.mergeStoreFile(mergedRegion, family, new HStoreFile(mfs.getFileSystem(),<a name="line.653"></a>
-<span class="sourceLineNo">654</span>              storeFileInfo, conf, cacheConf, hcd.getBloomFilterType(), true),<a name="line.654"></a>
-<span class="sourceLineNo">655</span>            mergedDir);<a name="line.655"></a>
-<span class="sourceLineNo">656</span>        }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      }<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    }<a name="line.658"></a>
-<span class="sourceLineNo">659</span>  }<a name="line.659"></a>
-<span class="sourceLineNo">660</span><a name="line.660"></a>
-<span class="sourceLineNo">661</span>  /**<a name="line.661"></a>
-<span class="sourceLineNo">662</span>   * Clean up a merged region<a name="line.662"></a>
-<span class="sourceLineNo">663</span>   * @param env MasterProcedureEnv<a name="line.663"></a>
-<span class="sourceLineNo">664</span>   */<a name="line.664"></a>
-<span class="sourceLineNo">665</span>  private void cleanupMergedRegion(final MasterProcedureEnv env) throws IOException {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    final Path tabledir = FSUtils.getTableDir(mfs.getRootDir(), regionsToMerge[0].getTable());<a name="line.667"></a>
-<span class="sourceLineNo">668</span>    final FileSystem fs = mfs.getFileSystem();<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    HRegionFileSystem regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      env.getMasterConfiguration(), fs, tabledir, regionsToMerge[0], false);<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    regionFs.cleanupMergedRegion(mergedRegion);<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>   * Rollback close regions<a name="line.675"></a>
-<span class="sourceLineNo">676</span>   * @param env MasterProcedureEnv<a name="line.676"></a>
-<span class="sourceLineNo">677</span>   **/<a name="line.677"></a>
-<span class="sourceLineNo">678</span>  private void rollbackCloseRegionsForMerge(final MasterProcedureEnv env) throws IOException {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    // Check whether the region is closed; if so, open it in the same server<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    final int regionReplication = getRegionReplication(env);<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    final ServerName serverName = getServerName(env);<a name="line.681"></a>
-<span class="sourceLineNo">682</span><a name="line.682"></a>
-<span class="sourceLineNo">683</span>    final AssignProcedure[] procs =<a name="line.683"></a>
-<span class="sourceLineNo">684</span>        new AssignProcedure[regionsToMerge.length * regionReplication];<a name="line.684"></a>
-<span class="sourceLineNo">685</span>    int procsIdx = 0;<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    for (int i = 0; i &lt; regionsToMerge.length; ++i) {<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      for (int j = 0; j &lt; regionReplication; ++j) {<a name="line.687"></a>
-<span class="sourceLineNo">688</span>        final RegionInfo hri = RegionReplicaUtil.getRegionInfoForReplica(regionsToMerge[i], j);<a name="line.688"></a>
-<span class="sourceLineNo">689</span>        procs[procsIdx++] = env.getAssignmentManager().createAssignProcedure(hri, serverName);<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      }<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    }<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    env.getMasterServices().getMasterProcedureExecutor().submitProcedures(procs);<a name="line.692"></a>
-<span class="sourceLineNo">693</span>  }<a name="line.693"></a>
-<span class="sourceLineNo">694</span><a name="line.694"></a>
-<span class="sourceLineNo">695</span>  private UnassignProcedure[] createUnassignProcedures(final MasterProcedureEnv env,<a name="line.695"></a>
-<span class="sourceLineNo">696</span>      final int regionReplication) {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>    final UnassignProcedure[] procs =<a name="line.697"></a>
-<span class="sourceLineNo">698</span>        new UnassignProcedure[regionsToMerge.length * regionReplication];<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    int procsIdx = 0;<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    for (int i = 0; i &lt; regionsToMerge.length; ++i) {<a name="line.700"></a>
-<span class="sourceLineNo">701</span>      for (int j = 0; j &lt; regionReplication; ++j) {<a name="line.701"></a>
-<span class="sourceLineNo">702</span>        final RegionInfo hri = RegionReplicaUtil.getRegionInfoForReplica(regionsToMerge[i], j);<a name="line.702"></a>
-<span class="sourceLineNo">703</span>        procs[procsIdx++] = env.getAssignmentManager().<a name="line.703"></a>
-<span class="sourceLineNo">704</span>            createUnassignProcedure(hri, null, true, !RegionReplicaUtil.isDefaultReplica(hri));<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>    return procs;<a name="line.707"></a>
-<span class="sourceLineNo">708</span>  }<a name="line.708"></a>
-<span class="sourceLineNo">709</span><a name="line.709"></a>
-<span class="sourceLineNo">710</span>  private AssignProcedure[] createAssignProcedures(final MasterProcedureEnv env,<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      final int regionReplication) {<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    final ServerName targetServer = getServerName(env);<a name="line.712"></a>
-<span class="sourceLineNo">713</span>    final AssignProcedure[] procs = new AssignProcedure[regionReplication];<a name="line.713"></a>
-<span class="sourceLineNo">714</span>    for (int i = 0; i &lt; procs.length; ++i) {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      final RegionInfo hri = RegionReplicaUtil.getRegionInfoForReplica(mergedRegion, i);<a name="line.715"></a>
-<span class="sourceLineNo">716</span>      procs[i] = env.getAssignmentManager().createAssignProcedure(hri, targetServer);<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    }<a name="line.717"></a>
-<span class="sourceLineNo">718</span>    return procs;<a name="line.718"></a>
-<span class="sourceLineNo">719</span>  }<a name="line.719"></a>
-<span class="sourceLineNo">720</span><a name="line.720"></a>
-<span class="sourceLineNo">721</span>  private int getRegionReplication(final MasterProcedureEnv env) throws IOException {<a name="line.721"></a>
-<span class="sourceLineNo">722</span>    final TableDescriptor htd = env.getMasterServices().getTableDescriptors().get(getTableName());<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    return htd.getRegionReplication();<a name="line.723"></a>
-<span class="sourceLineNo">724</span>  }<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>   * Post merge region action<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   * @param env MasterProcedureEnv<a name="line.728"></a>
-<span class="sourceLineNo">729</span>   **/<a name="line.729"></a>
-<span class="sourceLineNo">730</span>  private void preMergeRegionsCommit(final MasterProcedureEnv env) throws IOException {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    if (cpHost != null) {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      @MetaMutationAnnotation<a name="line.

<TRUNCATED>

[18/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index ef9d7be..0b79690 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -284,7 +284,7 @@
 <td>3697</td>
 <td>0</td>
 <td>0</td>
-<td>15627</td></tr></table></div>
+<td>15626</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -8202,7 +8202,7 @@
 <td><a href="#org.apache.hadoop.hbase.security.HBaseKerberosUtils.java">org/apache/hadoop/hbase/security/HBaseKerberosUtils.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>3</td></tr>
+<td>2</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.security.HBasePolicyProvider.java">org/apache/hadoop/hbase/security/HBasePolicyProvider.java</a></td>
 <td>0</td>
@@ -9868,7 +9868,7 @@
 <li>sortStaticImportsAlphabetically: <tt>&quot;true&quot;</tt></li>
 <li>groups: <tt>&quot;*,org.apache.hbase.thirdparty,org.apache.hadoop.hbase.shaded&quot;</tt></li>
 <li>option: <tt>&quot;top&quot;</tt></li></ul></td>
-<td>1155</td>
+<td>1154</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td></td>
@@ -65423,31 +65423,31 @@
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>227</td></tr>
+<td>228</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
-<td>262</td></tr>
+<td>263</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
-<td>347</td></tr>
+<td>348</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>363</td></tr>
+<td>364</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>370</td></tr></table></div>
+<td>371</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.assignment.AssignmentManager.java">org/apache/hadoop/hbase/master/assignment/AssignmentManager.java</h3>
 <table border="0" class="table table-striped">
@@ -65951,25 +65951,25 @@
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>490</td></tr>
+<td>492</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>549</td></tr>
+<td>551</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>560</td></tr>
+<td>562</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>588</td></tr></table></div>
+<td>590</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.assignment.MockMasterServices.java">org/apache/hadoop/hbase/master/assignment/MockMasterServices.java</h3>
 <table border="0" class="table table-striped">
@@ -66230,49 +66230,49 @@
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>161</td></tr>
+<td>156</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
-<td>166</td></tr>
+<td>161</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
-<td>168</td></tr>
+<td>163</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 107).</td>
-<td>177</td></tr>
+<td>172</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
-<td>184</td></tr>
+<td>179</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
-<td>197</td></tr>
+<td>192</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>198</td></tr>
+<td>193</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>607</td></tr></table></div>
+<td>611</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.assignment.TestAssignmentManager.java">org/apache/hadoop/hbase/master/assignment/TestAssignmentManager.java</h3>
 <table border="0" class="table table-striped">
@@ -80627,7 +80627,7 @@
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
-<td>2623</td></tr></table></div>
+<td>2628</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.HStoreFile.java">org/apache/hadoop/hbase/regionserver/HStoreFile.java</h3>
 <table border="0" class="table table-striped">
@@ -99200,65 +99200,59 @@
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.security.UserGroupInformation' import.</td>
-<td>28</td></tr>
+<td>37</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>imports</td>
-<td>ImportOrder</td>
-<td>Wrong order for 'java.io.IOException' import.</td>
-<td>30</td></tr>
-<tr class="a">
-<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
-<td>33</td></tr></table></div>
+<td>39</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.HBasePolicyProvider.java">org/apache/hadoop/hbase/security/HBasePolicyProvider.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td>21</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.security.authorize.PolicyProvider' import.</td>
 <td>26</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child has incorrect indentation level 6, expected level should be 4.</td>
 <td>38</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child has incorrect indentation level 6, expected level should be 4.</td>
 <td>39</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child has incorrect indentation level 6, expected level should be 4.</td>
 <td>40</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child has incorrect indentation level 6, expected level should be 4.</td>
 <td>41</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -99267,43 +99261,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.HBaseSaslRpcClient.java">org/apache/hadoop/hbase/security/HBaseSaslRpcClient.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.io.crypto.aes.CryptoAES' import.</td>
 <td>39</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.io.WritableUtils' import.</td>
 <td>41</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>89</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>188</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>215</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -99312,13 +99306,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.HBaseSaslRpcServer.java">org/apache/hadoop/hbase/security/HBaseSaslRpcServer.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -99327,13 +99321,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.HadoopSecurityEnabledUserProviderForTesting.java">org/apache/hadoop/hbase/security/HadoopSecurityEnabledUserProviderForTesting.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>RedundantImport</td>
@@ -99342,19 +99336,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.NettyHBaseRpcConnectionHeaderHandler.java">org/apache/hadoop/hbase/security/NettyHBaseRpcConnectionHeaderHandler.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td>27</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -99363,19 +99357,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.NettyHBaseSaslRpcClient.java">org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClient.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.io.IOException' import.</td>
 <td>23</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -99384,19 +99378,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.NettyHBaseSaslRpcClientHandler.java">org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.io.IOException' import.</td>
 <td>26</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -99405,19 +99399,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.SaslChallengeDecoder.java">org/apache/hadoop/hbase/security/SaslChallengeDecoder.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.io.IOException' import.</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -99426,19 +99420,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.SaslStatus.java">org/apache/hadoop/hbase/security/SaslStatus.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
 <td>26</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
@@ -99447,13 +99441,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.SaslUnwrapHandler.java">org/apache/hadoop/hbase/security/SaslUnwrapHandler.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -99462,13 +99456,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.SaslUtil.java">org/apache/hadoop/hbase/security/SaslUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
@@ -99477,13 +99471,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.SecurityInfo.java">org/apache/hadoop/hbase/security/SecurityInfo.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -99492,13 +99486,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.SecurityUtil.java">org/apache/hadoop/hbase/security/SecurityUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
@@ -99507,13 +99501,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.Superusers.java">org/apache/hadoop/hbase/security/Superusers.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
@@ -99522,37 +99516,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.TestSecureIPC.java">org/apache/hadoop/hbase/security/TestSecureIPC.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>190</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>220</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>231</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 108).</td>
 <td>276</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
@@ -99561,13 +99555,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.TestUser.java">org/apache/hadoop/hbase/security/TestUser.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>AvoidStarImport</td>
@@ -99576,13 +99570,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.TestUsersOperationsWithSecureHadoop.java">org/apache/hadoop/hbase/security/TestUsersOperationsWithSecureHadoop.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -99591,43 +99585,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.User.java">org/apache/hadoop/hbase/security/User.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>182</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>184</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'class def modifier' has incorrect indentation level 3, expected level should be 2.</td>
 <td>295</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>317</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>370</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
@@ -99636,295 +99630,295 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.access.AccessControlClient.java">org/apache/hadoop/hbase/security/access/AccessControlClient.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Admin' import.</td>
 <td>33</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
 <td>45</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>54</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>65</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>83</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>84</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>85</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>86</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>90</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>91</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
 <td>94</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 118).</td>
 <td>105</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>107</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>108</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>109</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>110</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>111</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>112</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>121</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>122</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>123</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>127</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>128</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 111).</td>
 <td>141</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>144</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>145</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>146</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>147</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>156</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>157</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>161</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>162</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 107).</td>
 <td>175</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>177</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>178</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>179</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>180</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>197</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>198</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>199</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>200</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>201</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>202</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>221</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>222</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>223</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>224</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -99933,25 +99927,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.access.AccessControlFilter.java">org/apache/hadoop/hbase/security/access/AccessControlFilter.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.Cell' import.</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>167</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -99960,103 +99954,103 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.access.AccessControlLists.java">org/apache/hadoop/hbase/security/access/AccessControlLists.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>71</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
 <td>105</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call rparen' has incorrect indentation level 10, expected level should be 6.</td>
 <td>185</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
 <td>245</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>334</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>335</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>403</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>405</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 107).</td>
 <td>414</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td>465</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>484</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>514</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
 <td>743</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>818</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 107).</td>
 <td>855</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
@@ -100065,247 +100059,247 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.access.AccessControlUtil.java">org/apache/hadoop/hbase/security/access/AccessControlUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.protobuf.ProtobufUtil' import.</td>
 <td>29</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.protobuf.ByteString' import.</td>
 <td>38</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
 <td>Class AccessControlUtil should be declared as final.</td>
 <td>45</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>320</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>321</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>365</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>380</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>414</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>415</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>416</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>417</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>418</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>419</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>420</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>421</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>422</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>423</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>437</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>438</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>439</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>440</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>441</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>442</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>443</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>444</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>445</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>446</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>518</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 110).</td>
 <td>521</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td>528</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>545</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>571</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 116).</td>
 <td>581</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>682</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>711</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>728</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>767</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>781</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>819</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -100314,157 +100308,157 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.access.AccessController.java">org/apache/hadoop/hbase/security/access/AccessController.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.ByteRange' import.</td>
 <td>126</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'catch' child has incorrect indentation level 10, expected level should be 6.</td>
 <td>295</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>394</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>536</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 166 lines (max allowed is 150).</td>
 <td>538</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>651</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>887</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1121</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>1217</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>1384</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>1385</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>1386</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>1387</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>1388</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>1389</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>1390</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>1391</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>1392</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1990</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>1994</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2003</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>2007</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 11, expected level should be 12.</td>
 <td>2061</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>2389</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -100473,31 +100467,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.access.AuthResult.java">org/apache/hadoop/hbase/security/access/AuthResult.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.Cell' import.</td>
 <td>27</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 29 should have line break after.</td>
 <td>132</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child has incorrect indentation level 10, expected level should be 8.</td>
 <td>296</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -100506,49 +100500,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.access.Permission.java">org/apache/hadoop/hbase/security/access/Permission.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>30</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 24 should have line break after.</td>
 <td>54</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>81</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>137</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>163</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>165</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -100557,55 +100551,55 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.access.SecureTestUtil.java">org/apache/hadoop/hbase/security/access/SecureTestUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.protobuf.BlockingRpcChannel' import.</td>
 <td>31</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread' import.</td>
 <td>68</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.junit.Assert.assertEquals' import.</td>
 <td>72</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
 <td>78</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>119</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
 <td>140</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>151</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
@@ -100614,301 +100608,301 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.access.ShadedAccessControlUtil.java">org/apache/hadoop/hbase/security/access/ShadedAccessControlUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.TableName' import.</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.security.access.Permission.Action' import.</td>
 <td>26</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hbase.thirdparty.com.google.protobuf.ByteString' import.</td>
 <td>29</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.util.ArrayList' import.</td>
 <td>31</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
 <td>46</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>56</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>57</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td>57</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>58</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>59</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 107).</td>
 <td>59</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>60</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>61</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td>61</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>62</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>63</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 108).</td>
 <td>63</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>64</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>65</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 107).</td>
 <td>65</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
 <td>74</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>76</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>77</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>78</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>79</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>80</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>81</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>82</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>83</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>84</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>85</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 115).</td>
 <td>97</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 116).</td>
 <td>99</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>154</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>155</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 107).</td>
 <td>177</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 115).</td>
 <td>179</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>180</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
 <td>194</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 111).</td>
 <td>196</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>206</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 108).</td>
 <td>220</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>223</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 104).</td>
 <td>240</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 119).</td>
 <td>242</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 111).</td>
 <td>262</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 137).</td>
 <td>266</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 115).</td>
 <td>267</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -100917,265 +100911,265 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.access.TableAuthManager.java">org/apache/hadoop/hbase/security/access/TableAuthManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.io.Closeable' import.</td>
 <td>28</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.exceptions.DeserializationException' import.</td>
 <td>42</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
 <td>Class TableAuthManager should be declared as final.</td>
 <td>55</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>211</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>238</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>239</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>262</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>263</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>291</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>292</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>312</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>313</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>435</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>436</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>437</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>438</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>448</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>462</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>463</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>464</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>468</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>493</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>494</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>495</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>496</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>497</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>506</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>525</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>526</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>527</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>535</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>662</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>663</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>664</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>676</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>677</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>678</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>690</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>691</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>692</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>704</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>705</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -101184,67 +101178,67 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.access.TablePermission.java">org/apache/hadoop/hbase/security/access/TablePermission.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>29</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>97</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>114</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>131</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>142</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>321</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 7, expected level should be 6.</td>
 <td>371</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>381</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>383</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -101253,13 +101247,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.access.TestAccessControlFilter.java">org/apache/hadoop/hbase/security/access/TestAccessControlFilter.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
@@ -101268,115 +101262,115 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.access.TestAccessController.java">org/apache/hadoop/hbase/security/access/TestAccessController.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'implements' has incorrect indentation level 2, expected level should be 4.</td>
 <td>510</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 7, expected level should be one of the following: 8, 10.</td>
 <td>575</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 7, expected level should be one of the following: 8, 10.</td>
 <td>597</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
 <td>881</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1047</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td>1147</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 243 lines (max allowed is 150).</td>
 <td>1204</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>1362</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>1454</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 165 lines (max allowed is 150).</td>
 <td>1725</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child has incorrect indentation level 14, expected level should be 12.</td>
 <td>1799</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child has incorrect indentation level 14, expected level should be 12.</td>
 <td>1800</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child has incorrect indentation level 14, expected level should be 12.</td>
 <td>1809</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child has incorrect indentation level 14, expected level should be 12.</td>
 <td>1810</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 104).</td>
 <td>2203</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 112).</td>
 <td>2431</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
 <td>2701</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -101385,25 +101379,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.access.TestAccessController2.java">org/apache/hadoop/hbase/security/access/TestAccessController2.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
 <td>300</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
 <td>326</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
@@ -101412,13 +101406,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.access.TestCellACLWithMultipleVersions.java">org/apache/hadoop/hbase/security/access/TestCellACLWithMultipleVersions.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">
+

<TRUNCATED>

[08/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html
index 11c182b..7a1d88a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.StoreFileSplitter.html
@@ -147,747 +147,751 @@
 <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>  /**<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * Check whether there is recovered.edits in the closed region<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * If any, that means this region is not closed property, we need<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * to abort region split to prevent data loss<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * @param env master env<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   * @throws IOException IOException<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   */<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private void checkClosedRegion(final MasterProcedureEnv env) throws IOException {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    if (WALSplitter.hasRecoveredEdits(env.getMasterServices().getFileSystem(),<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        env.getMasterConfiguration(), getRegion())) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      throw new IOException("Recovered.edits are found in Region: " + getRegion()<a name="line.151"></a>
-<span class="sourceLineNo">152</span>          + ", abort split to prevent data loss");<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>  /**<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * Check whether the region is splittable<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   * @param env MasterProcedureEnv<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   * @param regionToSplit parent Region to be split<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   * @param splitRow if splitRow is not specified, will first try to get bestSplitRow from RS<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * @throws IOException<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   */<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  private void checkSplittable(final MasterProcedureEnv env,<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      final RegionInfo regionToSplit, final byte[] splitRow) throws IOException {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    // Ask the remote RS if this region is splittable.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // If we get an IOE, report it along w/ the failure so can see why we are not splittable at this time.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    if(regionToSplit.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      throw new IllegalArgumentException ("Can't invoke split on non-default regions directly");<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    }<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    RegionStateNode node =<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    IOException splittableCheckIOE = null;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    boolean splittable = false;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    if (node != null) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      try {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        if (bestSplitRow == null || bestSplitRow.length == 0) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          LOG.info("splitKey isn't explicitly specified, " + " will try to find a best split key from RS");<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        }<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        // Always set bestSplitRow request as true here,<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        // need to call Region#checkSplit to check it splittable or not<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        GetRegionInfoResponse response =<a name="line.181"></a>
-<span class="sourceLineNo">182</span>            Util.getRegionInfoResponse(env, node.getRegionLocation(), node.getRegionInfo(), true);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        if(bestSplitRow == null || bestSplitRow.length == 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>          bestSplitRow = response.hasBestSplitRow() ? response.getBestSplitRow().toByteArray() : null;<a name="line.184"></a>
+<span class="sourceLineNo">142</span>   * Check whether there are recovered.edits in the parent closed region.<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * @param env master env<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * @throws IOException IOException<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  static boolean hasRecoveredEdits(MasterProcedureEnv env, RegionInfo ri) throws IOException {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    return WALSplitter.hasRecoveredEdits(env.getMasterServices().getFileSystem(),<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        env.getMasterConfiguration(), ri);<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>   * Check whether the region is splittable<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * @param env MasterProcedureEnv<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @param regionToSplit parent Region to be split<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @param splitRow if splitRow is not specified, will first try to get bestSplitRow from RS<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * @throws IOException<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   */<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  private void checkSplittable(final MasterProcedureEnv env,<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      final RegionInfo regionToSplit, final byte[] splitRow) throws IOException {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    // Ask the remote RS if this region is splittable.<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    // If we get an IOE, report it along w/ the failure so can see why we are not splittable at this time.<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    if(regionToSplit.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      throw new IllegalArgumentException ("Can't invoke split on non-default regions directly");<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    RegionStateNode node =<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    IOException splittableCheckIOE = null;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    boolean splittable = false;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    if (node != null) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      try {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        if (bestSplitRow == null || bestSplitRow.length == 0) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>          LOG.info("splitKey isn't explicitly specified, " + " will try to find a best split key from RS");<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        }<a name="line.173"></a>
+<span class="sourceLineNo">174</span>        // Always set bestSplitRow request as true here,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        // need to call Region#checkSplit to check it splittable or not<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        GetRegionInfoResponse response =<a name="line.176"></a>
+<span class="sourceLineNo">177</span>            Util.getRegionInfoResponse(env, node.getRegionLocation(), node.getRegionInfo(), true);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        if(bestSplitRow == null || bestSplitRow.length == 0) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>          bestSplitRow = response.hasBestSplitRow() ? response.getBestSplitRow().toByteArray() : null;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>        splittable = response.hasSplittable() &amp;&amp; response.getSplittable();<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>        if (LOG.isDebugEnabled()) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          LOG.debug("Splittable=" + splittable + " " + node.toShortString());<a name="line.184"></a>
 <span class="sourceLineNo">185</span>        }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        splittable = response.hasSplittable() &amp;&amp; response.getSplittable();<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>        if (LOG.isDebugEnabled()) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>          LOG.debug("Splittable=" + splittable + " " + node.toShortString());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      } catch (IOException e) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        splittableCheckIOE = e;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      }<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    }<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    if (!splittable) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      IOException e = new DoNotRetryIOException(regionToSplit.getShortNameToLog() + " NOT splittable");<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      if (splittableCheckIOE != null) e.initCause(splittableCheckIOE);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      throw e;<a name="line.199"></a>
+<span class="sourceLineNo">186</span>      } catch (IOException e) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        splittableCheckIOE = e;<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>    if (!splittable) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      IOException e = new DoNotRetryIOException(regionToSplit.getShortNameToLog() + " NOT splittable");<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      if (splittableCheckIOE != null) e.initCause(splittableCheckIOE);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      throw e;<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>    if(bestSplitRow == null || bestSplitRow.length == 0) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      throw new DoNotRetryIOException("Region not splittable because bestSplitPoint = null, "<a name="line.198"></a>
+<span class="sourceLineNo">199</span>          + "maybe table is too small for auto split. For force split, try specifying split row");<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>    if(bestSplitRow == null || bestSplitRow.length == 0) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      throw new DoNotRetryIOException("Region not splittable because bestSplitPoint = null, "<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          + "maybe table is too small for auto split. For force split, try specifying split row");<a name="line.204"></a>
+<span class="sourceLineNo">202</span>    if (Bytes.equals(regionToSplit.getStartKey(), bestSplitRow)) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      throw new DoNotRetryIOException(<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        "Split row is equal to startkey: " + Bytes.toStringBinary(splitRow));<a name="line.204"></a>
 <span class="sourceLineNo">205</span>    }<a name="line.205"></a>
 <span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>    if (Bytes.equals(regionToSplit.getStartKey(), bestSplitRow)) {<a name="line.207"></a>
+<span class="sourceLineNo">207</span>    if (!regionToSplit.containsRow(bestSplitRow)) {<a name="line.207"></a>
 <span class="sourceLineNo">208</span>      throw new DoNotRetryIOException(<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        "Split row is equal to startkey: " + Bytes.toStringBinary(splitRow));<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    }<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>    if (!regionToSplit.containsRow(bestSplitRow)) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      throw new DoNotRetryIOException(<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        "Split row is not inside region key range splitKey:" + Bytes.toStringBinary(splitRow) +<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        " region: " + regionToSplit);<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>  /**<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * Calculate daughter regionid to use.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * @param hri Parent {@link RegionInfo}<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @return Daughter region id (timestamp) to use.<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   */<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  private static long getDaughterRegionIdTimestamp(final RegionInfo hri) {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    long rid = EnvironmentEdgeManager.currentTime();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    // Regionid is timestamp.  Can't be less than that of parent else will insert<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    // at wrong location in hbase:meta (See HBASE-710).<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    if (rid &lt; hri.getRegionId()) {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      LOG.warn("Clock skew; parent regions id is " + hri.getRegionId() +<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        " but current time here is " + rid);<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      rid = hri.getRegionId() + 1;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    return rid;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
+<span class="sourceLineNo">209</span>        "Split row is not inside region key range splitKey:" + Bytes.toStringBinary(splitRow) +<a name="line.209"></a>
+<span class="sourceLineNo">210</span>        " region: " + regionToSplit);<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>  /**<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   * Calculate daughter regionid to use.<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * @param hri Parent {@link RegionInfo}<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * @return Daughter region id (timestamp) to use.<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
+<span class="sourceLineNo">219</span>  private static long getDaughterRegionIdTimestamp(final RegionInfo hri) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    long rid = EnvironmentEdgeManager.currentTime();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    // Regionid is timestamp.  Can't be less than that of parent else will insert<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    // at wrong location in hbase:meta (See HBASE-710).<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    if (rid &lt; hri.getRegionId()) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      LOG.warn("Clock skew; parent regions id is " + hri.getRegionId() +<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        " but current time here is " + rid);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      rid = hri.getRegionId() + 1;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    return rid;<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>  @Override<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  protected Flow executeFromState(final MasterProcedureEnv env, final SplitTableRegionState state)<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      throws InterruptedException {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    LOG.trace("{} execute state={}", this, state);<a name="line.234"></a>
 <span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  protected Flow executeFromState(final MasterProcedureEnv env, final SplitTableRegionState state)<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      throws InterruptedException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    LOG.trace("{} execute state={}", this, state);<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>    try {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      switch (state) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        case SPLIT_TABLE_REGION_PREPARE:<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          if (prepareSplitRegion(env)) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>            setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>            break;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          } else {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>            return Flow.NO_MORE_STATE;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>          }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        case SPLIT_TABLE_REGION_PRE_OPERATION:<a name="line.250"></a>
-<span class="sourceLineNo">251</span>          preSplitRegion(env);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CLOSE_PARENT_REGION);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          break;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:<a name="line.254"></a>
-<span class="sourceLineNo">255</span>          addChildProcedure(createUnassignProcedures(env, getRegionReplication(env)));<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>          break;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          checkClosedRegion(env);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          break;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        case SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS:<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          createDaughterRegions(env);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          break;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        case SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.266"></a>
-<span class="sourceLineNo">267</span>          writeMaxSequenceIdFile(env);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>          break;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        case SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META:<a name="line.270"></a>
-<span class="sourceLineNo">271</span>          preSplitRegionBeforeMETA(env);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_UPDATE_META);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          break;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          updateMeta(env);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>          break;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          preSplitRegionAfterMETA(env);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          break;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          addChildProcedure(createAssignProcedures(env, getRegionReplication(env)));<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_POST_OPERATION);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>          break;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          postSplitRegion(env);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>          return Flow.NO_MORE_STATE;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        default:<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    } catch (IOException e) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      String msg = "Error trying to split region " + getParentRegion().getEncodedName() +<a name="line.293"></a>
-<span class="sourceLineNo">294</span>          " in the table " + getTableName() + " (in state=" + state + ")";<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      if (!isRollbackSupported(state)) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        // We reach a state that cannot be rolled back. We just need to keep retry.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        LOG.warn(msg, e);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      } else {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        LOG.error(msg, e);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        setFailure("master-split-regions", e);<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>    // if split fails,  need to call ((HRegion)parent).clearSplit() when it is a force split<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return Flow.HAS_MORE_STATE;<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>   * To rollback {@link SplitTableRegionProcedure}, an AssignProcedure is asynchronously<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * submitted for parent region to be split (rollback doesn't wait on the completion of the<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * AssignProcedure) . This can be improved by changing rollback() to support sub-procedures.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * See HBASE-19851 for details.<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>  protected void rollbackState(final MasterProcedureEnv env, final SplitTableRegionState state)<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      throws IOException, InterruptedException {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    if (isTraceEnabled()) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      LOG.trace(this + " rollback state=" + state);<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>    try {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      switch (state) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.323"></a>
-<span class="sourceLineNo">324</span>        case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.325"></a>
-<span class="sourceLineNo">326</span>          // PONR<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        case SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META:<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          break;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        case SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS:<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        case SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.331"></a>
-<span class="sourceLineNo">332</span>          // Doing nothing, as re-open parent region would clean up daughter region directories.<a name="line.332"></a>
+<span class="sourceLineNo">236</span>    try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      switch (state) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        case SPLIT_TABLE_REGION_PREPARE:<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          if (prepareSplitRegion(env)) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>            setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>            break;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          } else {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>            return Flow.NO_MORE_STATE;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          }<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        case SPLIT_TABLE_REGION_PRE_OPERATION:<a name="line.245"></a>
+<span class="sourceLineNo">246</span>          preSplitRegion(env);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CLOSE_PARENT_REGION);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>          break;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:<a name="line.249"></a>
+<span class="sourceLineNo">250</span>          addChildProcedure(createUnassignProcedures(env, getRegionReplication(env)));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>          break;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          if (hasRecoveredEdits(env, getRegion())) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>            // If recovered edits, reopen parent region and then re-run the close by going back to<a name="line.255"></a>
+<span class="sourceLineNo">256</span>            // SPLIT_TABLE_REGION_CLOSE_PARENT_REGION. We might have to cycle here a few times<a name="line.256"></a>
+<span class="sourceLineNo">257</span>            // (TODO: Add being able to open a region in read-only mode). Open the primary replica<a name="line.257"></a>
+<span class="sourceLineNo">258</span>            // in this case only where we just want to pickup the left-out replicated.edits.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>            LOG.info("Found recovered.edits under {}, reopen so we pickup these missed edits!",<a name="line.259"></a>
+<span class="sourceLineNo">260</span>                getRegion().getEncodedName());<a name="line.260"></a>
+<span class="sourceLineNo">261</span>            addChildProcedure(env.getAssignmentManager().createAssignProcedure(getParentRegion()));<a name="line.261"></a>
+<span class="sourceLineNo">262</span>            setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CLOSE_PARENT_REGION);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          } else {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>            setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          break;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        case SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS:<a name="line.267"></a>
+<span class="sourceLineNo">268</span>          createDaughterRegions(env);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          break;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        case SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          writeMaxSequenceIdFile(env);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          break;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        case SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META:<a name="line.275"></a>
+<span class="sourceLineNo">276</span>          preSplitRegionBeforeMETA(env);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_UPDATE_META);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>          break;<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.279"></a>
+<span class="sourceLineNo">280</span>          updateMeta(env);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          break;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          preSplitRegionAfterMETA(env);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          break;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>        case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          addChildProcedure(createAssignProcedures(env, getRegionReplication(env)));<a name="line.288"></a>
+<span class="sourceLineNo">289</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_POST_OPERATION);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          break;<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          postSplitRegion(env);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          return Flow.NO_MORE_STATE;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        default:<a name="line.294"></a>
+<span class="sourceLineNo">295</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      }<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    } catch (IOException e) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      String msg = "Splitting " + getParentRegion().getEncodedName() + ", " + this;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      if (!isRollbackSupported(state)) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        // We reach a state that cannot be rolled back. We just need to keep retrying.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        LOG.warn(msg, e);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      } else {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        LOG.error(msg, e);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        setFailure("master-split-regions", e);<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>    // if split fails,  need to call ((HRegion)parent).clearSplit() when it is a force split<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    return Flow.HAS_MORE_STATE;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  /**<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * To rollback {@link SplitTableRegionProcedure}, an AssignProcedure is asynchronously<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * submitted for parent region to be split (rollback doesn't wait on the completion of the<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * AssignProcedure) . This can be improved by changing rollback() to support sub-procedures.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * See HBASE-19851 for details.<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   */<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  @Override<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  protected void rollbackState(final MasterProcedureEnv env, final SplitTableRegionState state)<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      throws IOException, InterruptedException {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    if (isTraceEnabled()) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      LOG.trace(this + " rollback state=" + state);<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>    try {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      switch (state) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.326"></a>
+<span class="sourceLineNo">327</span>        case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.329"></a>
+<span class="sourceLineNo">330</span>          // PONR<a name="line.330"></a>
+<span class="sourceLineNo">331</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        case SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META:<a name="line.332"></a>
 <span class="sourceLineNo">333</span>          break;<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          // Doing nothing, in SPLIT_TABLE_REGION_CLOSE_PARENT_REGION,<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          // we will bring parent region online<a name="line.336"></a>
+<span class="sourceLineNo">334</span>        case SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS:<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        case SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          // Doing nothing, as re-open parent region would clean up daughter region directories.<a name="line.336"></a>
 <span class="sourceLineNo">337</span>          break;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          openParentRegion(env);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>          break;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        case SPLIT_TABLE_REGION_PRE_OPERATION:<a name="line.341"></a>
-<span class="sourceLineNo">342</span>          postRollBackSplitRegion(env);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>          break;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        case SPLIT_TABLE_REGION_PREPARE:<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          break; // nothing to do<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        default:<a name="line.346"></a>
-<span class="sourceLineNo">347</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    } catch (IOException e) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      // This will be retried. Unless there is a bug in the code,<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      // this should be just a "temporary error" (e.g. network down)<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      LOG.warn("pid=" + getProcId() + " failed rollback attempt step " + state +<a name="line.352"></a>
-<span class="sourceLineNo">353</span>          " for splitting the region "<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        + getParentRegion().getEncodedName() + " in table " + getTableName(), e);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      throw e;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>  /*<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   * Check whether we are in the state that can be rollback<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   */<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  @Override<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  protected boolean isRollbackSupported(final SplitTableRegionState state) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    switch (state) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        // It is not safe to rollback if we reach to these states.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        return false;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      default:<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        break;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    return true;<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>  @Override<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  protected SplitTableRegionState getState(final int stateId) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    return SplitTableRegionState.forNumber(stateId);<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>  protected int getStateId(final SplitTableRegionState state) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    return state.getNumber();<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Override<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  protected SplitTableRegionState getInitialState() {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    return SplitTableRegionState.SPLIT_TABLE_REGION_PREPARE;<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>  @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      throws IOException {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    super.serializeStateData(serializer);<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    final MasterProcedureProtos.SplitTableRegionStateData.Builder splitTableRegionMsg =<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        MasterProcedureProtos.SplitTableRegionStateData.newBuilder()<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        .setUserInfo(MasterProcedureUtil.toProtoUserInfo(getUser()))<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        .setParentRegionInfo(ProtobufUtil.toRegionInfo(getRegion()))<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        .addChildRegionInfo(ProtobufUtil.toRegionInfo(daughter_1_RI))<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        .addChildRegionInfo(ProtobufUtil.toRegionInfo(daughter_2_RI));<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    serializer.serialize(splitTableRegionMsg.build());<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>  @Override<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      throws IOException {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    super.deserializeStateData(serializer);<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>    final MasterProcedureProtos.SplitTableRegionStateData splitTableRegionsMsg =<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        serializer.deserialize(MasterProcedureProtos.SplitTableRegionStateData.class);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    setUser(MasterProcedureUtil.toUserInfo(splitTableRegionsMsg.getUserInfo()));<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    setRegion(ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getParentRegionInfo()));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    assert(splitTableRegionsMsg.getChildRegionInfoCount() == 2);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    daughter_1_RI = ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getChildRegionInfo(0));<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    daughter_2_RI = ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getChildRegionInfo(1));<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  @Override<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    sb.append(getClass().getSimpleName());<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    sb.append(" table=");<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    sb.append(getTableName());<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    sb.append(", parent=");<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    sb.append(getParentRegion().getShortNameToLog());<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    sb.append(", daughterA=");<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    sb.append(daughter_1_RI.getShortNameToLog());<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    sb.append(", daughterB=");<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    sb.append(daughter_2_RI.getShortNameToLog());<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  }<a name="line.431"></a>
-<span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>  private RegionInfo getParentRegion() {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return getRegion();<a name="line.434"></a>
+<span class="sourceLineNo">338</span>        case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.338"></a>
+<span class="sourceLineNo">339</span>          // Doing nothing, in SPLIT_TABLE_REGION_CLOSE_PARENT_REGION,<a name="line.339"></a>
+<span class="sourceLineNo">340</span>          // we will bring parent region online<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          break;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          openParentRegion(env);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>          break;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        case SPLIT_TABLE_REGION_PRE_OPERATION:<a name="line.345"></a>
+<span class="sourceLineNo">346</span>          postRollBackSplitRegion(env);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>          break;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        case SPLIT_TABLE_REGION_PREPARE:<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          break; // nothing to do<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        default:<a name="line.350"></a>
+<span class="sourceLineNo">351</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    } catch (IOException e) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      // This will be retried. Unless there is a bug in the code,<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      // this should be just a "temporary error" (e.g. network down)<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      LOG.warn("pid=" + getProcId() + " failed rollback attempt step " + state +<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          " for splitting the region "<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        + getParentRegion().getEncodedName() + " in table " + getTableName(), e);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      throw e;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    }<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>   * Check whether we are in the state that can be rollback<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>  protected boolean isRollbackSupported(final SplitTableRegionState state) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    switch (state) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        // It is not safe to rollback if we reach to these states.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        return false;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      default:<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        break;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    }<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    return true;<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>  @Override<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  protected SplitTableRegionState getState(final int stateId) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    return SplitTableRegionState.forNumber(stateId);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  @Override<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  protected int getStateId(final SplitTableRegionState state) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    return state.getNumber();<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>  protected SplitTableRegionState getInitialState() {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    return SplitTableRegionState.SPLIT_TABLE_REGION_PREPARE;<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>  @Override<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      throws IOException {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    super.serializeStateData(serializer);<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    final MasterProcedureProtos.SplitTableRegionStateData.Builder splitTableRegionMsg =<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        MasterProcedureProtos.SplitTableRegionStateData.newBuilder()<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        .setUserInfo(MasterProcedureUtil.toProtoUserInfo(getUser()))<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        .setParentRegionInfo(ProtobufUtil.toRegionInfo(getRegion()))<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        .addChildRegionInfo(ProtobufUtil.toRegionInfo(daughter_1_RI))<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        .addChildRegionInfo(ProtobufUtil.toRegionInfo(daughter_2_RI));<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    serializer.serialize(splitTableRegionMsg.build());<a name="line.407"></a>
+<span class="sourceLineNo">408</span>  }<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>  @Override<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      throws IOException {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    super.deserializeStateData(serializer);<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>    final MasterProcedureProtos.SplitTableRegionStateData splitTableRegionsMsg =<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        serializer.deserialize(MasterProcedureProtos.SplitTableRegionStateData.class);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    setUser(MasterProcedureUtil.toUserInfo(splitTableRegionsMsg.getUserInfo()));<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    setRegion(ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getParentRegionInfo()));<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    assert(splitTableRegionsMsg.getChildRegionInfoCount() == 2);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    daughter_1_RI = ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getChildRegionInfo(0));<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    daughter_2_RI = ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getChildRegionInfo(1));<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 void toStringClassDetails(StringBuilder sb) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    sb.append(getClass().getSimpleName());<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    sb.append(" table=");<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    sb.append(getTableName());<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    sb.append(", parent=");<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    sb.append(getParentRegion().getShortNameToLog());<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    sb.append(", daughterA=");<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    sb.append(daughter_1_RI.getShortNameToLog());<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    sb.append(", daughterB=");<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    sb.append(daughter_2_RI.getShortNameToLog());<a name="line.434"></a>
 <span class="sourceLineNo">435</span>  }<a name="line.435"></a>
 <span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  @Override<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  public TableOperationType getTableOperationType() {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    return TableOperationType.REGION_SPLIT;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  @Override<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getSplitProcMetrics();<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>  private byte[] getSplitRow() {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    return daughter_2_RI.getStartKey();<a name="line.448"></a>
+<span class="sourceLineNo">437</span>  private RegionInfo getParentRegion() {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    return getRegion();<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 TableOperationType getTableOperationType() {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    return TableOperationType.REGION_SPLIT;<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  }<a name="line.444"></a>
+<span class="sourceLineNo">445</span><a name="line.445"></a>
+<span class="sourceLineNo">446</span>  @Override<a name="line.446"></a>
+<span class="sourceLineNo">447</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getSplitProcMetrics();<a name="line.448"></a>
 <span class="sourceLineNo">449</span>  }<a name="line.449"></a>
 <span class="sourceLineNo">450</span><a name="line.450"></a>
-<span class="sourceLineNo">451</span>  private static final State[] EXPECTED_SPLIT_STATES = new State[] { State.OPEN, State.CLOSED };<a name="line.451"></a>
-<span class="sourceLineNo">452</span><a name="line.452"></a>
-<span class="sourceLineNo">453</span>  /**<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * Prepare to Split region.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   * @param env MasterProcedureEnv<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   */<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  @VisibleForTesting<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  public boolean prepareSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    // Check whether the region is splittable<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    RegionStateNode node =<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>    if (node == null) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      throw new UnknownRegionException(getParentRegion().getRegionNameAsString());<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">451</span>  private byte[] getSplitRow() {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    return daughter_2_RI.getStartKey();<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>  private static final State[] EXPECTED_SPLIT_STATES = new State[] { State.OPEN, State.CLOSED };<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>  /**<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * Prepare to Split region.<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   * @param env MasterProcedureEnv<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   */<a name="line.460"></a>
+<span class="sourceLineNo">461</span>  @VisibleForTesting<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  public boolean prepareSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    // Check whether the region is splittable<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    RegionStateNode node =<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());<a name="line.465"></a>
 <span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    RegionInfo parentHRI = node.getRegionInfo();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    if (parentHRI == null) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      LOG.info("Unsplittable; parent region is null; node={}", node);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      return false;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    // Lookup the parent HRI state from the AM, which has the latest updated info.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // Protect against the case where concurrent SPLIT requests came in and succeeded<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    // just before us.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    if (node.isInState(State.SPLIT)) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      LOG.info("Split of " + parentHRI + " skipped; state is already SPLIT");<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      return false;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    }<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    if (parentHRI.isSplit() || parentHRI.isOffline()) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      LOG.info("Split of " + parentHRI + " skipped because offline/split.");<a name="line.480"></a>
+<span class="sourceLineNo">467</span>    if (node == null) {<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      throw new UnknownRegionException(getParentRegion().getRegionNameAsString());<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>    RegionInfo parentHRI = node.getRegionInfo();<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    if (parentHRI == null) {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      LOG.info("Unsplittable; parent region is null; node={}", node);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      return false;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    }<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    // Lookup the parent HRI state from the AM, which has the latest updated info.<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    // Protect against the case where concurrent SPLIT requests came in and succeeded<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    // just before us.<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    if (node.isInState(State.SPLIT)) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      LOG.info("Split of " + parentHRI + " skipped; state is already SPLIT");<a name="line.480"></a>
 <span class="sourceLineNo">481</span>      return false;<a name="line.481"></a>
 <span class="sourceLineNo">482</span>    }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>    // expected parent to be online or closed<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    if (!node.isInState(EXPECTED_SPLIT_STATES)) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      // We may have SPLIT already?<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      setFailure(new IOException("Split " + parentHRI.getRegionNameAsString() +<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          " FAILED because state=" + node.getState() + "; expected " +<a name="line.488"></a>
-<span class="sourceLineNo">489</span>          Arrays.toString(EXPECTED_SPLIT_STATES)));<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      return false;<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>    // Since we have the lock and the master is coordinating the operation<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    // we are always able to split the region<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    if (!env.getMasterServices().isSplitOrMergeEnabled(MasterSwitchType.SPLIT)) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      LOG.warn("pid=" + getProcId() + " split switch is off! skip split of " + parentHRI);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      setFailure(new IOException("Split region " + parentHRI.getRegionNameAsString() +<a name="line.497"></a>
-<span class="sourceLineNo">498</span>          " failed due to split switch off"));<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      return false;<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>    // set node state as SPLITTING<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    node.setState(State.SPLITTING);<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>    return true;<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>   * Action before splitting region in a table.<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   * @param env MasterProcedureEnv<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
-<span class="sourceLineNo">512</span>  private void preSplitRegion(final MasterProcedureEnv env)<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      throws IOException, InterruptedException {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    if (cpHost != null) {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      cpHost.preSplitRegionAction(getTableName(), getSplitRow(), getUser());<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    }<a name="line.517"></a>
-<span class="sourceLineNo">518</span><a name="line.518"></a>
-<span class="sourceLineNo">519</span>    // TODO: Clean up split and merge. Currently all over the place.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    // Notify QuotaManager and RegionNormalizer<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    try {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      env.getMasterServices().getMasterQuotaManager().onRegionSplit(this.getParentRegion());<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    } catch (QuotaExceededException e) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      env.getMasterServices().getRegionNormalizer().planSkipped(this.getParentRegion(),<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          NormalizationPlan.PlanType.SPLIT);<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      throw e;<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    }<a name="line.527"></a>
-<span class="sourceLineNo">528</span>  }<a name="line.528"></a>
-<span class="sourceLineNo">529</span><a name="line.529"></a>
-<span class="sourceLineNo">530</span>  /**<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * Action after rollback a split table region action.<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * @param env MasterProcedureEnv<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  private void postRollBackSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    if (cpHost != null) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      cpHost.postRollBackSplitRegionAction(getUser());<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>  /**<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   * Rollback close parent region<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * @param env MasterProcedureEnv<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   */<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  private void openParentRegion(final MasterProcedureEnv env) throws IOException {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    // Check whether the region is closed; if so, open it in the same server<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    final int regionReplication = getRegionReplication(env);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    final ServerName serverName = getParentRegionServerName(env);<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>    final AssignProcedure[] procs = new AssignProcedure[regionReplication];<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    for (int i = 0; i &lt; regionReplication; ++i) {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      final RegionInfo hri = RegionReplicaUtil.getRegionInfoForReplica(getParentRegion(), i);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      procs[i] = env.getAssignmentManager().createAssignProcedure(hri, serverName);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    }<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    env.getMasterServices().getMasterProcedureExecutor().submitProcedures(procs);<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>   * Create daughter regions<a name="line.559"></a>
-<span class="sourceLineNo">560</span>   * @param env MasterProcedureEnv<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   */<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  @VisibleForTesting<a name="line.562"></a>
-<span class="sourceLineNo">563</span>  public void createDaughterRegions(final MasterProcedureEnv env) throws IOException {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    final Path tabledir = FSUtils.getTableDir(mfs.getRootDir(), getTableName());<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    final FileSystem fs = mfs.getFileSystem();<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    HRegionFileSystem regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      env.getMasterConfiguration(), fs, tabledir, getParentRegion(), false);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    regionFs.createSplitsDir();<a name="line.569"></a>
-<span class="sourceLineNo">570</span><a name="line.570"></a>
-<span class="sourceLineNo">571</span>    Pair&lt;Integer, Integer&gt; expectedReferences = splitStoreFiles(env, regionFs);<a name="line.571"></a>
-<span class="sourceLineNo">572</span><a name="line.572"></a>
-<span class="sourceLineNo">573</span>    assertReferenceFileCount(fs, expectedReferences.getFirst(),<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      regionFs.getSplitsDir(daughter_1_RI));<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    //Move the files from the temporary .splits to the final /table/region directory<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    regionFs.commitDaughterRegion(daughter_1_RI);<a name="line.576"></a>
+<span class="sourceLineNo">483</span>    if (parentHRI.isSplit() || parentHRI.isOffline()) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      LOG.info("Split of " + parentHRI + " skipped because offline/split.");<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      return false;<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>    // expected parent to be online or closed<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    if (!node.isInState(EXPECTED_SPLIT_STATES)) {<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      // We may have SPLIT already?<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      setFailure(new IOException("Split " + parentHRI.getRegionNameAsString() +<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          " FAILED because state=" + node.getState() + "; expected " +<a name="line.492"></a>
+<span class="sourceLineNo">493</span>          Arrays.toString(EXPECTED_SPLIT_STATES)));<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      return false;<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>    // Since we have the lock and the master is coordinating the operation<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    // we are always able to split the region<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    if (!env.getMasterServices().isSplitOrMergeEnabled(MasterSwitchType.SPLIT)) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      LOG.warn("pid=" + getProcId() + " split switch is off! skip split of " + parentHRI);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      setFailure(new IOException("Split region " + parentHRI.getRegionNameAsString() +<a name="line.501"></a>
+<span class="sourceLineNo">502</span>          " failed due to split switch off"));<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      return false;<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>    // set node state as SPLITTING<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    node.setState(State.SPLITTING);<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return true;<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>  /**<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * Action before splitting region in a table.<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * @param env MasterProcedureEnv<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   */<a name="line.515"></a>
+<span class="sourceLineNo">516</span>  private void preSplitRegion(final MasterProcedureEnv env)<a name="line.516"></a>
+<span class="sourceLineNo">517</span>      throws IOException, InterruptedException {<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    if (cpHost != null) {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>      cpHost.preSplitRegionAction(getTableName(), getSplitRow(), getUser());<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    }<a name="line.521"></a>
+<span class="sourceLineNo">522</span><a name="line.522"></a>
+<span class="sourceLineNo">523</span>    // TODO: Clean up split and merge. Currently all over the place.<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    // Notify QuotaManager and RegionNormalizer<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    try {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      env.getMasterServices().getMasterQuotaManager().onRegionSplit(this.getParentRegion());<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    } catch (QuotaExceededException e) {<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      env.getMasterServices().getRegionNormalizer().planSkipped(this.getParentRegion(),<a name="line.528"></a>
+<span class="sourceLineNo">529</span>          NormalizationPlan.PlanType.SPLIT);<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      throw e;<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><a name="line.533"></a>
+<span class="sourceLineNo">534</span>  /**<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * Action after rollback a split table region action.<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * @param env MasterProcedureEnv<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   */<a name="line.537"></a>
+<span class="sourceLineNo">538</span>  private void postRollBackSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    if (cpHost != null) {<a name="line.540"></a>
+<span class="sourceLineNo">541</span>      cpHost.postRollBackSplitRegionAction(getUser());<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>  /**<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   * Rollback close parent region<a name="line.546"></a>
+<span class="sourceLineNo">547</span>   * @param env MasterProcedureEnv<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   */<a name="line.548"></a>
+<span class="sourceLineNo">549</span>  private void openParentRegion(final MasterProcedureEnv env) throws IOException {<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    // Check whether the region is closed; if so, open it in the same server<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    final int regionReplication = getRegionReplication(env);<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    final ServerName serverName = getParentRegionServerName(env);<a name="line.552"></a>
+<span class="sourceLineNo">553</span><a name="line.553"></a>
+<span class="sourceLineNo">554</span>    final AssignProcedure[] procs = new AssignProcedure[regionReplication];<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    for (int i = 0; i &lt; regionReplication; ++i) {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>      final RegionInfo hri = RegionReplicaUtil.getRegionInfoForReplica(getParentRegion(), i);<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      procs[i] = env.getAssignmentManager().createAssignProcedure(hri, serverName);<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    }<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    env.getMasterServices().getMasterProcedureExecutor().submitProcedures(procs);<a name="line.559"></a>
+<span class="sourceLineNo">560</span>  }<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>  /**<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   * Create daughter regions<a name="line.563"></a>
+<span class="sourceLineNo">564</span>   * @param env MasterProcedureEnv<a name="line.564"></a>
+<span class="sourceLineNo">565</span>   */<a name="line.565"></a>
+<span class="sourceLineNo">566</span>  @VisibleForTesting<a name="line.566"></a>
+<span class="sourceLineNo">567</span>  public void createDaughterRegions(final MasterProcedureEnv env) throws IOException {<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.568"></a>
+<span class="sourceLineNo">569</span>    final Path tabledir = FSUtils.getTableDir(mfs.getRootDir(), getTableName());<a name="line.569"></a>
+<span class="sourceLineNo">570</span>    final FileSystem fs = mfs.getFileSystem();<a name="line.570"></a>
+<span class="sourceLineNo">571</span>    HRegionFileSystem regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.571"></a>
+<span class="sourceLineNo">572</span>      env.getMasterConfiguration(), fs, tabledir, getParentRegion(), false);<a name="line.572"></a>
+<span class="sourceLineNo">573</span>    regionFs.createSplitsDir();<a name="line.573"></a>
+<span class="sourceLineNo">574</span><a name="line.574"></a>
+<span class="sourceLineNo">575</span>    Pair&lt;Integer, Integer&gt; expectedReferences = splitStoreFiles(env, regionFs);<a name="line.575"></a>
+<span class="sourceLineNo">576</span><a name="line.576"></a>
 <span class="sourceLineNo">577</span>    assertReferenceFileCount(fs, expectedReferences.getFirst(),<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      new Path(tabledir, daughter_1_RI.getEncodedName()));<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>    assertReferenceFileCount(fs, expectedReferences.getSecond(),<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      regionFs.getSplitsDir(daughter_2_RI));<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    regionFs.commitDaughterRegion(daughter_2_RI);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    assertReferenceFileCount(fs, expectedReferences.getSecond(),<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      new Path(tabledir, daughter_2_RI.getEncodedName()));<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  }<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>  /**<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * Create Split directory<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param env MasterProcedureEnv<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   */<a name="line.590"

<TRUNCATED>

[14/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html
index f073d26..b742ebf 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":9,"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};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":9,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":9,"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};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -289,103 +289,102 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 </tr>
 <tr id="i2" class="altColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#checkClosedRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">checkClosedRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
-<div class="block">Check whether there is recovered.edits in the closed region
- If any, that means this region is not closed property, we need
- to abort region split to prevent data loss</div>
-</td>
-</tr>
-<tr id="i3" class="rowColor">
-<td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#checkSplittable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-byte:A-">checkSplittable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToSplit,
                byte[]&nbsp;splitRow)</code>
 <div class="block">Check whether the region is splittable</div>
 </td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#createAssignProcedures-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-int-">createAssignProcedures</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                       int&nbsp;regionReplication)</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<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/master/assignment/SplitTableRegionProcedure.html#createDaughterRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">createDaughterRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Create daughter regions</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">UnassignProcedure</a>[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#createUnassignProcedures-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-int-">createUnassignProcedures</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                         int&nbsp;regionReplication)</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<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/master/assignment/SplitTableRegionProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)</code>
 <div class="block">Called on store load to allow the user to decode the previously serialized
  state.</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState&nbsp;state)</code>
 <div class="block">called to perform a single step of the specified 'state' of the procedure</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>private static long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#getDaughterRegionIdTimestamp-org.apache.hadoop.hbase.client.RegionInfo-">getDaughterRegionIdTimestamp</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri)</code>
 <div class="block">Calculate daughter regionid to use.</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#getInitialState--">getInitialState</a></span>()</code>
 <div class="block">Return the initial state object that will be used for the first call to executeFromState().</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#getParentRegion--">getParentRegion</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#getParentRegionServerName-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getParentRegionServerName</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#getProcedureMetrics-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getProcedureMetrics</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Override this method to provide procedure specific counters for submitted count, failed
  count and time histogram.</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#getRegionReplication-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getRegionReplication</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>private byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#getSplitRow--">getSplitRow</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#getState-int-">getState</a></span>(int&nbsp;stateId)</code>
 <div class="block">Convert an ordinal (or state id) to an Enum (or more descriptive) state object.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>protected int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState-">getStateId</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState&nbsp;state)</code>
 <div class="block">Convert the Enum (or more descriptive) state object to an ordinal (or state id).</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#getTableOperationType--">getTableOperationType</a></span>()</code>
 <div class="block">Given an operation type we can take decisions about what to do with pending operations.</div>
 </td>
 </tr>
+<tr id="i18" class="altColor">
+<td class="colFirst"><code>(package private) static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#hasRecoveredEdits-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-">hasRecoveredEdits</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+                 <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;ri)</code>
+<div class="block">Check whether there are recovered.edits in the parent closed region.</div>
+</td>
+</tr>
 <tr id="i19" class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#isRollbackSupported-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState-">isRollbackSupported</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState&nbsp;state)</code>
@@ -597,7 +596,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockListLast">
 <li class="blockList">
 <h4>EXPECTED_SPLIT_STATES</h4>
-<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.451">EXPECTED_SPLIT_STATES</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.455">EXPECTED_SPLIT_STATES</a></pre>
 </li>
 </ul>
 </li>
@@ -641,17 +640,16 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="checkClosedRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
+<a name="hasRecoveredEdits-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>checkClosedRegion</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.148">checkClosedRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
-                        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">Check whether there is recovered.edits in the closed region
- If any, that means this region is not closed property, we need
- to abort region split to prevent data loss</div>
+<h4>hasRecoveredEdits</h4>
+<pre>static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.146">hasRecoveredEdits</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+                                 <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;ri)
+                          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">Check whether there are recovered.edits in the parent closed region.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>env</code> - master env</dd>
@@ -666,7 +664,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>checkSplittable</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.163">checkSplittable</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.158">checkSplittable</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                              <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToSplit,
                              byte[]&nbsp;splitRow)
                       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>
@@ -687,7 +685,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getDaughterRegionIdTimestamp</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.224">getDaughterRegionIdTimestamp</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri)</pre>
+<pre>private static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.219">getDaughterRegionIdTimestamp</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri)</pre>
 <div class="block">Calculate daughter regionid to use.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -703,7 +701,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>executeFromState</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.237">executeFromState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.232">executeFromState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                                       org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState&nbsp;state)
                                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#executeFromState-TEnvironment-TState-">StateMachineProcedure</a></code></span></div>
@@ -726,7 +724,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>rollbackState</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.314">rollbackState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.318">rollbackState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                              org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState&nbsp;state)
                       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>,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -750,7 +748,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>isRollbackSupported</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.363">isRollbackSupported</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState&nbsp;state)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.367">isRollbackSupported</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState&nbsp;state)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">StateMachineProcedure</a></code></span></div>
 <div class="block">Used by the default implementation of abort() to know if the current state can be aborted
  and rollback can be triggered.</div>
@@ -766,7 +764,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getState</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.378">getState</a>(int&nbsp;stateId)</pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.382">getState</a>(int&nbsp;stateId)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">StateMachineProcedure</a></code></span></div>
 <div class="block">Convert an ordinal (or state id) to an Enum (or more descriptive) state object.</div>
 <dl>
@@ -785,7 +783,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getStateId</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.383">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState&nbsp;state)</pre>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.387">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState&nbsp;state)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">StateMachineProcedure</a></code></span></div>
 <div class="block">Convert the Enum (or more descriptive) state object to an ordinal (or state id).</div>
 <dl>
@@ -804,7 +802,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getInitialState</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.388">getInitialState</a>()</pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.392">getInitialState</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getInitialState--">StateMachineProcedure</a></code></span></div>
 <div class="block">Return the initial state object that will be used for the first call to executeFromState().</div>
 <dl>
@@ -821,7 +819,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>serializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.393">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.397">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                            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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
 <div class="block">The user-level code of the procedure may have some state to
@@ -843,7 +841,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>deserializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.407">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.411">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                              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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
 <div class="block">Called on store load to allow the user to decode the previously serialized
@@ -864,7 +862,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringClassDetails</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.421">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.425">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClassDetails-java.lang.StringBuilder-">Procedure</a></code></span></div>
 <div class="block">Extend the toString() information with the procedure details
  e.g. className and parameters</div>
@@ -882,7 +880,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getParentRegion</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.433">getParentRegion</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.437">getParentRegion</a>()</pre>
 </li>
 </ul>
 <a name="getTableOperationType--">
@@ -891,7 +889,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableOperationType</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.438">getTableOperationType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.442">getTableOperationType</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html#getTableOperationType--">TableProcedureInterface</a></code></span></div>
 <div class="block">Given an operation type we can take decisions about what to do with pending operations.
  e.g. if we get a delete and we have some table operation pending (e.g. add column)
@@ -912,7 +910,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getProcedureMetrics</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.443">getProcedureMetrics</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.447">getProcedureMetrics</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcedureMetrics-TEnvironment-">Procedure</a></code></span></div>
 <div class="block">Override this method to provide procedure specific counters for submitted count, failed
  count and time histogram.</div>
@@ -932,7 +930,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplitRow</h4>
-<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.447">getSplitRow</a>()</pre>
+<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.451">getSplitRow</a>()</pre>
 </li>
 </ul>
 <a name="prepareSplitRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
@@ -941,7 +939,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareSplitRegion</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.458">prepareSplitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.462">prepareSplitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                            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">Prepare to Split region.</div>
 <dl>
@@ -958,7 +956,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>preSplitRegion</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.512">preSplitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.516">preSplitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                      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>,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Action before splitting region in a table.</div>
@@ -977,7 +975,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>postRollBackSplitRegion</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.534">postRollBackSplitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.538">postRollBackSplitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                               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">Action after rollback a split table region action.</div>
 <dl>
@@ -994,7 +992,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>openParentRegion</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.545">openParentRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.549">openParentRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                        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">Rollback close parent region</div>
 <dl>
@@ -1011,7 +1009,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>createDaughterRegions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.563">createDaughterRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.567">createDaughterRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                            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">Create daughter regions</div>
 <dl>
@@ -1028,7 +1026,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>splitStoreFiles</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.591">splitStoreFiles</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.595">splitStoreFiles</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a>&nbsp;regionFs)
                                        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">Create Split directory</div>
@@ -1046,7 +1044,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>assertReferenceFileCount</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.706">assertReferenceFileCount</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.710">assertReferenceFileCount</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                                       int&nbsp;expectedReferenceFileCount,
                                       org.apache.hadoop.fs.Path&nbsp;dir)
                                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>
@@ -1062,7 +1060,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>splitStoreFile</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.714">splitStoreFile</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a>&nbsp;regionFs,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.718">splitStoreFile</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a>&nbsp;regionFs,
                                                                                  byte[]&nbsp;family,
                                                                                  <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;sf)
                                                                           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>
@@ -1078,7 +1076,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>preSplitRegionBeforeMETA</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.765">preSplitRegionBeforeMETA</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.769">preSplitRegionBeforeMETA</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                                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>,
                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Post split region actions before the Point-of-No-Return step</div>
@@ -1097,7 +1095,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>updateMeta</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.788">updateMeta</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.792">updateMeta</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                  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">Add daughter regions to META</div>
 <dl>
@@ -1114,7 +1112,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>preSplitRegionAfterMETA</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.797">preSplitRegionAfterMETA</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.801">preSplitRegionAfterMETA</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                               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>,
                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Pre split region actions after the Point-of-No-Return step</div>
@@ -1133,7 +1131,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>postSplitRegion</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.809">postSplitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.813">postSplitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                       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">Post split region actions</div>
 <dl>
@@ -1150,7 +1148,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getParentRegionServerName</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.816">getParentRegionServerName</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.820">getParentRegionServerName</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 </li>
 </ul>
 <a name="createUnassignProcedures-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-int-">
@@ -1159,7 +1157,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>createUnassignProcedures</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">UnassignProcedure</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.821">createUnassignProcedures</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">UnassignProcedure</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.825">createUnassignProcedures</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                                      int&nbsp;regionReplication)</pre>
 </li>
 </ul>
@@ -1169,7 +1167,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>createAssignProcedures</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.832">createAssignProcedures</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.836">createAssignProcedures</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                                  int&nbsp;regionReplication)</pre>
 </li>
 </ul>
@@ -1179,7 +1177,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionReplication</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.848">getRegionReplication</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.852">getRegionReplication</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                           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>
@@ -1193,7 +1191,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>writeMaxSequenceIdFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.853">writeMaxSequenceIdFile</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.857">writeMaxSequenceIdFile</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                              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>
@@ -1207,7 +1205,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>isTraceEnabled</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.868">isTraceEnabled</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.872">isTraceEnabled</a>()</pre>
 <div class="block">The procedure could be restarted from a different machine. If the variable is null, we need to
  retrieve it.</div>
 <dl>
@@ -1222,7 +1220,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockListLast">
 <li class="blockList">
 <h4>abort</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.876">abort</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#line.880">abort</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#abort-TEnvironment-">Procedure</a></code></span></div>
 <div class="block">The abort() call is asynchronous and each procedure must decide how to deal
  with it, if they want to be abortable. The simplest implementation

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 abd92a9..1799704 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
@@ -198,8 +198,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.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>
+<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>
 </ul>
 </li>
 </ul>

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


[10/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
index 468124c..ae9d014 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
@@ -76,342 +76,343 @@
 <span class="sourceLineNo">068</span> * failure. Should we ignore rollback calls to Assign/Unassign then? Or just<a name="line.68"></a>
 <span class="sourceLineNo">069</span> * remove rollback here?<a name="line.69"></a>
 <span class="sourceLineNo">070</span> */<a name="line.70"></a>
-<span class="sourceLineNo">071</span>@InterfaceAudience.Private<a name="line.71"></a>
-<span class="sourceLineNo">072</span>public class AssignProcedure extends RegionTransitionProcedure {<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private static final Logger LOG = LoggerFactory.getLogger(AssignProcedure.class);<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>   * Set to true when we need recalibrate -- choose a new target -- because original assign failed.<a name="line.76"></a>
-<span class="sourceLineNo">077</span>   */<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private boolean forceNewPlan = false;<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>   * Gets set as desired target on move, merge, etc., when we want to go to a particular server.<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   * We may not be able to respect this request but will try. When it is NOT set, then we ask<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   * the balancer to assign. This value is used below in startTransition to set regionLocation if<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   * non-null. Setting regionLocation in regionServerNode is how we override balancer setting<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * destination.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   */<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  protected volatile ServerName targetServer;<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>   * Comparator that will sort AssignProcedures so meta assigns come first, then system table<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   * assigns and finally user space assigns.<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   */<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  public static final CompareAssignProcedure COMPARATOR = new CompareAssignProcedure();<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  public AssignProcedure() {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    // Required by the Procedure framework to create the procedure on replay<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    super();<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 AssignProcedure(final RegionInfo regionInfo) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    super(regionInfo);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    this.targetServer = null;<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>  public AssignProcedure(final RegionInfo regionInfo, final ServerName destinationServer) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    super(regionInfo);<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    this.targetServer = destinationServer;<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>  @Override<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public TableOperationType getTableOperationType() {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    return TableOperationType.REGION_ASSIGN;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>  @Override<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  protected boolean isRollbackSupported(final RegionTransitionState state) {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    switch (state) {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      case REGION_TRANSITION_QUEUE:<a name="line.118"></a>
-<span class="sourceLineNo">119</span>        return true;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      default:<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        return false;<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><a name="line.124"></a>
-<span class="sourceLineNo">125</span>  @Override<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      throws IOException {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    final AssignRegionStateData.Builder state = AssignRegionStateData.newBuilder()<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        .setTransitionState(getTransitionState())<a name="line.129"></a>
-<span class="sourceLineNo">130</span>        .setRegionInfo(ProtobufUtil.toRegionInfo(getRegionInfo()));<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    if (forceNewPlan) {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      state.setForceNewPlan(true);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    if (this.targetServer != null) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      state.setTargetServer(ProtobufUtil.toServerName(this.targetServer));<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    if (getAttempt() &gt; 0) {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      state.setAttempt(getAttempt());<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    }<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    serializer.serialize(state.build());<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  }<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>  @Override<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      throws IOException {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    final AssignRegionStateData state = serializer.deserialize(AssignRegionStateData.class);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    setTransitionState(state.getTransitionState());<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    setRegionInfo(ProtobufUtil.toRegionInfo(state.getRegionInfo()));<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    forceNewPlan = state.getForceNewPlan();<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    if (state.hasTargetServer()) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      this.targetServer = ProtobufUtil.toServerName(state.getTargetServer());<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    if (state.hasAttempt()) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      setAttempt(state.getAttempt());<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><a name="line.157"></a>
-<span class="sourceLineNo">158</span>  @Override<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  protected boolean startTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      throws IOException {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    // If the region is already open we can't do much...<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    if (regionNode.isInState(State.OPEN) &amp;&amp; isServerOnline(env, regionNode)) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      LOG.info("Assigned, not reassigning; " + this + "; " + regionNode.toShortString());<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      return false;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // Don't assign if table is in disabling or disabled state.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    TableStateManager tsm = env.getMasterServices().getTableStateManager();<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    TableName tn = regionNode.getRegionInfo().getTable();<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    if (tsm.getTableState(tn).isDisabledOrDisabling()) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      LOG.info("Table " + tn + " state=" + tsm.getTableState(tn) + ", skipping " + this);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return false;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    // If the region is SPLIT, we can't assign it. But state might be CLOSED, rather than<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    // SPLIT which is what a region gets set to when unassigned as part of SPLIT. FIX.<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    if (regionNode.isInState(State.SPLIT) ||<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        (regionNode.getRegionInfo().isOffline() &amp;&amp; regionNode.getRegionInfo().isSplit())) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      LOG.info("SPLIT, cannot be assigned; " + this + "; " + regionNode +<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        "; hri=" + regionNode.getRegionInfo());<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      return false;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>    // If we haven't started the operation yet, we can abort<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    if (aborted.get() &amp;&amp; regionNode.isInState(State.CLOSED, State.OFFLINE)) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        regionNode.setState(State.FAILED_OPEN);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        setFailure(getClass().getSimpleName(),<a name="line.186"></a>
-<span class="sourceLineNo">187</span>          new RetriesExhaustedException("Max attempts exceeded"));<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      } else {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        setAbortFailure(getClass().getSimpleName(), "Abort requested");<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      return false;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    // Send assign (add into assign-pool). We call regionNode.offline below to set state to<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // OFFLINE and to clear the region location. Setting a new regionLocation here is how we retain<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // old assignment or specify target server if a move or merge. See<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    // AssignmentManager#processAssignQueue. Otherwise, balancer gives us location.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    // TODO: Region will be set into OFFLINE state below regardless of what its previous state was<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    // This is dangerous? Wrong? What if region was in an unexpected state?<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    ServerName lastRegionLocation = regionNode.offline();<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    boolean retain = false;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    if (!forceNewPlan) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      if (this.targetServer != null) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        retain = targetServer.equals(lastRegionLocation);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        regionNode.setRegionLocation(targetServer);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      } else {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        if (lastRegionLocation != null) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>          // Try and keep the location we had before we offlined.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>          retain = true;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>          regionNode.setRegionLocation(lastRegionLocation);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        } else if (regionNode.getLastHost() != null) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>          retain = true;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          LOG.info("Setting lastHost as the region location " + regionNode.getLastHost());<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          regionNode.setRegionLocation(regionNode.getLastHost());<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        }<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      }<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    LOG.info("Starting " + this + "; " + regionNode.toShortString() +<a name="line.218"></a>
-<span class="sourceLineNo">219</span>        "; forceNewPlan=" + this.forceNewPlan +<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        ", retain=" + retain);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    env.getAssignmentManager().queueAssign(regionNode);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    return true;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  @Override<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  protected boolean updateTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  throws IOException, ProcedureSuspendedException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    // TODO: crash if destinationServer is specified and not online<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    // which is also the case when the balancer provided us with a different location.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    if (LOG.isTraceEnabled()) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      LOG.trace("Update " + this + "; " + regionNode.toShortString());<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    if (regionNode.getRegionLocation() == null) {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      return true;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>    if (!isServerOnline(env, regionNode)) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      // TODO: is this correct? should we wait the chore/ssh?<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      LOG.info("Server not online, re-queuing " + this + "; " + regionNode.toShortString());<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      return true;<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>    if (env.getAssignmentManager().waitServerReportEvent(regionNode.getRegionLocation(), this)) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      LOG.info("Early suspend! " + this + "; " + regionNode.toShortString());<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      throw new ProcedureSuspendedException();<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span>    if (regionNode.isInState(State.OPEN)) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      LOG.info("Already assigned: " + this + "; " + regionNode.toShortString());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      return false;<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>    // Transition regionNode State. Set it to OPENING. Update hbase:meta, and add<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    // region to list of regions on the target regionserver. Need to UNDO if failure!<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    env.getAssignmentManager().markRegionAsOpening(regionNode);<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    // TODO: Requires a migration to be open by the RS?<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    // regionNode.getFormatVersion()<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>    if (!addToRemoteDispatcher(env, regionNode.getRegionLocation())) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      // Failed the dispatch BUT addToRemoteDispatcher internally does<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      // cleanup on failure -- even the undoing of markRegionAsOpening above --<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      // so nothing more to do here; in fact we need to get out of here<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      // fast since we've been put back on the scheduler.<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>    // We always return true, even if we fail dispatch because addToRemoteDispatcher<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    // failure processing sets state back to REGION_TRANSITION_QUEUE so we try again;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // i.e. return true to keep the Procedure running; it has been reset to startover.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    return true;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  protected void finishTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      throws IOException {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    env.getAssignmentManager().markRegionAsOpened(regionNode);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // This success may have been after we failed open a few times. Be sure to cleanup any<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // failed open references. See #incrementAndCheckMaxAttempts and where it is called.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    env.getAssignmentManager().getRegionStates().removeFromFailedOpen(regionNode.getRegionInfo());<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  }<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>  @Override<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  protected void reportTransition(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      final TransitionCode code, final long openSeqNum) throws UnexpectedStateException {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    switch (code) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      case OPENED:<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        if (openSeqNum &lt; 0) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.290"></a>
-<span class="sourceLineNo">291</span>              " transition openSeqNum=" + openSeqNum + ", " + regionNode);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        if (openSeqNum &lt; regionNode.getOpenSeqNum()) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>          // Don't bother logging if openSeqNum == 0<a name="line.294"></a>
-<span class="sourceLineNo">295</span>          if (openSeqNum != 0) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>            LOG.warn("Skipping update of open seqnum with " + openSeqNum +<a name="line.296"></a>
-<span class="sourceLineNo">297</span>                " because current seqnum=" + regionNode.getOpenSeqNum());<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        } else {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          regionNode.setOpenSeqNum(openSeqNum);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        // Leave the state here as OPENING for now. We set it to OPEN in<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        // REGION_TRANSITION_FINISH section where we do a bunch of checks.<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        // regionNode.setState(RegionState.State.OPEN, RegionState.State.OPENING);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        setTransitionState(RegionTransitionState.REGION_TRANSITION_FINISH);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        break;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      case FAILED_OPEN:<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        handleFailure(env, regionNode);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        break;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      default:<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.311"></a>
-<span class="sourceLineNo">312</span>            " transition openSeqNum=" + openSeqNum + ", " + regionNode.toShortString() +<a name="line.312"></a>
-<span class="sourceLineNo">313</span>            ", " + this + ", expected OPENED or FAILED_OPEN.");<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  }<a name="line.315"></a>
-<span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>  /**<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * Called when dispatch or subsequent OPEN request fail. Can be run by the<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * inline dispatch call or later by the ServerCrashProcedure. Our state is<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * generally OPENING. Cleanup and reset to OFFLINE and put our Procedure<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * State back to REGION_TRANSITION_QUEUE so the Assign starts over.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   */<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  private void handleFailure(final MasterProcedureEnv env, final RegionStateNode regionNode) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      aborted.set(true);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    this.forceNewPlan = true;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    this.targetServer = null;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    regionNode.offline();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    // We were moved to OPENING state before dispatch. Undo. It is safe to call<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    // this method because it checks for OPENING first.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    env.getAssignmentManager().undoRegionAsOpening(regionNode);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<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>  private boolean incrementAndCheckMaxAttempts(final MasterProcedureEnv env,<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      final RegionStateNode regionNode) {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    final int retries = env.getAssignmentManager().getRegionStates().<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        addToFailedOpen(regionNode).incrementAndGetRetries();<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    int max = env.getAssignmentManager().getAssignMaxAttempts();<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    LOG.info("Retry=" + retries + " of max=" + max + "; " +<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        this + "; " + regionNode.toShortString());<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    return retries &gt;= max;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  @Override<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public RemoteOperation remoteCallBuild(final MasterProcedureEnv env, final ServerName serverName) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    assert serverName.equals(getRegionState(env).getRegionLocation());<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    return new RegionOpenOperation(this, getRegionInfo(),<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        env.getAssignmentManager().getFavoredNodes(getRegionInfo()), false);<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>  protected boolean remoteCallFailed(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      final IOException exception) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    handleFailure(env, regionNode);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    return true;<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>  @Override<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    super.toStringClassDetails(sb);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    if (this.targetServer != null) sb.append(", target=").append(this.targetServer);<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 ServerName getServer(final MasterProcedureEnv env) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    RegionStateNode node =<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(this.getRegionInfo());<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    if (node == null) return null;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    return node.getRegionLocation();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  @Override<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getAssignProcMetrics();<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>  /**<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   * Sort AssignProcedures such that meta and system assigns come first before user-space assigns.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>   * Have to do it this way w/ distinct Comparator because Procedure is already Comparable on<a name="line.381"></a>
-<span class="sourceLineNo">382</span>   * 'Env'(?).<a name="line.382"></a>
-<span class="sourceLineNo">383</span>   */<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  public static class CompareAssignProcedure implements Comparator&lt;AssignProcedure&gt; {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    @Override<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    public int compare(AssignProcedure left, AssignProcedure right) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      if (left.getRegionInfo().isMetaRegion()) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        if (right.getRegionInfo().isMetaRegion()) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.389"></a>
-<span class="sourceLineNo">390</span>        }<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        return -1;<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      } else if (right.getRegionInfo().isMetaRegion()) {<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>      if (left.getRegionInfo().getTable().isSystemTable()) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        }<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        return -1;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      } else if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        return +1;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<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">071</span>// TODO: Add being able to assign a region to open read-only.<a name="line.71"></a>
+<span class="sourceLineNo">072</span>@InterfaceAudience.Private<a name="line.72"></a>
+<span class="sourceLineNo">073</span>public class AssignProcedure extends RegionTransitionProcedure {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private static final Logger LOG = LoggerFactory.getLogger(AssignProcedure.class);<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  /**<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   * Set to true when we need recalibrate -- choose a new target -- because original assign failed.<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   */<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private boolean forceNewPlan = false;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  /**<a name="line.81"></a>
+<span class="sourceLineNo">082</span>   * Gets set as desired target on move, merge, etc., when we want to go to a particular server.<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   * We may not be able to respect this request but will try. When it is NOT set, then we ask<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   * the balancer to assign. This value is used below in startTransition to set regionLocation if<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   * non-null. Setting regionLocation in regionServerNode is how we override balancer setting<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   * destination.<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   */<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  protected volatile ServerName targetServer;<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>   * Comparator that will sort AssignProcedures so meta assigns come first, then system table<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   * assigns and finally user space assigns.<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   */<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public static final CompareAssignProcedure COMPARATOR = new CompareAssignProcedure();<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>  public AssignProcedure() {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    // Required by the Procedure framework to create the procedure on replay<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    super();<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span>  public AssignProcedure(final RegionInfo regionInfo) {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    super(regionInfo);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    this.targetServer = null;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>  public AssignProcedure(final RegionInfo regionInfo, final ServerName destinationServer) {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    super(regionInfo);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    this.targetServer = destinationServer;<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>  @Override<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  public TableOperationType getTableOperationType() {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    return TableOperationType.REGION_ASSIGN;<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>  @Override<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  protected boolean isRollbackSupported(final RegionTransitionState state) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    switch (state) {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      case REGION_TRANSITION_QUEUE:<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        return true;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      default:<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        return false;<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>  @Override<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      throws IOException {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    final AssignRegionStateData.Builder state = AssignRegionStateData.newBuilder()<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        .setTransitionState(getTransitionState())<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        .setRegionInfo(ProtobufUtil.toRegionInfo(getRegionInfo()));<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    if (forceNewPlan) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      state.setForceNewPlan(true);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    }<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    if (this.targetServer != null) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      state.setTargetServer(ProtobufUtil.toServerName(this.targetServer));<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    if (getAttempt() &gt; 0) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      state.setAttempt(getAttempt());<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    }<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    serializer.serialize(state.build());<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>  @Override<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      throws IOException {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    final AssignRegionStateData state = serializer.deserialize(AssignRegionStateData.class);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    setTransitionState(state.getTransitionState());<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    setRegionInfo(ProtobufUtil.toRegionInfo(state.getRegionInfo()));<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    forceNewPlan = state.getForceNewPlan();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    if (state.hasTargetServer()) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      this.targetServer = ProtobufUtil.toServerName(state.getTargetServer());<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    if (state.hasAttempt()) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      setAttempt(state.getAttempt());<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  }<a name="line.157"></a>
+<span class="sourceLineNo">158</span><a name="line.158"></a>
+<span class="sourceLineNo">159</span>  @Override<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  protected boolean startTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      throws IOException {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // If the region is already open we can't do much...<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    if (regionNode.isInState(State.OPEN) &amp;&amp; isServerOnline(env, regionNode)) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      LOG.info("Assigned, not reassigning; " + this + "; " + regionNode.toShortString());<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      return false;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    // Don't assign if table is in disabling or disabled state.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    TableStateManager tsm = env.getMasterServices().getTableStateManager();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    TableName tn = regionNode.getRegionInfo().getTable();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    if (tsm.getTableState(tn).isDisabledOrDisabling()) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      LOG.info("Table " + tn + " state=" + tsm.getTableState(tn) + ", skipping " + this);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      return false;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    // If the region is SPLIT, we can't assign it. But state might be CLOSED, rather than<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    // SPLIT which is what a region gets set to when unassigned as part of SPLIT. FIX.<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    if (regionNode.isInState(State.SPLIT) ||<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        (regionNode.getRegionInfo().isOffline() &amp;&amp; regionNode.getRegionInfo().isSplit())) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      LOG.info("SPLIT, cannot be assigned; " + this + "; " + regionNode +<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        "; hri=" + regionNode.getRegionInfo());<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>    // If we haven't started the operation yet, we can abort<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    if (aborted.get() &amp;&amp; regionNode.isInState(State.CLOSED, State.OFFLINE)) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        regionNode.setState(State.FAILED_OPEN);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        setFailure(getClass().getSimpleName(),<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          new RetriesExhaustedException("Max attempts exceeded"));<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      } else {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        setAbortFailure(getClass().getSimpleName(), "Abort requested");<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      return false;<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>    // Send assign (add into assign-pool). We call regionNode.offline below to set state to<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // OFFLINE and to clear the region location. Setting a new regionLocation here is how we retain<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    // old assignment or specify target server if a move or merge. See<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    // AssignmentManager#processAssignQueue. Otherwise, balancer gives us location.<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    // TODO: Region will be set into OFFLINE state below regardless of what its previous state was<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    // This is dangerous? Wrong? What if region was in an unexpected state?<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    ServerName lastRegionLocation = regionNode.offline();<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    boolean retain = false;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    if (!forceNewPlan) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      if (this.targetServer != null) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        retain = targetServer.equals(lastRegionLocation);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        regionNode.setRegionLocation(targetServer);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      } else {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>        if (lastRegionLocation != null) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>          // Try and keep the location we had before we offlined.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          retain = true;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>          regionNode.setRegionLocation(lastRegionLocation);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        } else if (regionNode.getLastHost() != null) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>          retain = true;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>          LOG.info("Setting lastHost as the region location " + regionNode.getLastHost());<a name="line.214"></a>
+<span class="sourceLineNo">215</span>          regionNode.setRegionLocation(regionNode.getLastHost());<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>    LOG.info("Starting " + this + "; " + regionNode.toShortString() +<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        "; forceNewPlan=" + this.forceNewPlan +<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        ", retain=" + retain);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    env.getAssignmentManager().queueAssign(regionNode);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    return true;<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>  protected boolean updateTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  throws IOException, ProcedureSuspendedException {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    // TODO: crash if destinationServer is specified and not online<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    // which is also the case when the balancer provided us with a different location.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    if (LOG.isTraceEnabled()) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      LOG.trace("Update " + this + "; " + regionNode.toShortString());<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    if (regionNode.getRegionLocation() == null) {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      return true;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>    if (!isServerOnline(env, regionNode)) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      // TODO: is this correct? should we wait the chore/ssh?<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      LOG.info("Server not online, re-queuing " + this + "; " + regionNode.toShortString());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      return true;<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>    if (env.getAssignmentManager().waitServerReportEvent(regionNode.getRegionLocation(), this)) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      LOG.info("Early suspend! " + this + "; " + regionNode.toShortString());<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      throw new ProcedureSuspendedException();<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>    if (regionNode.isInState(State.OPEN)) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      LOG.info("Already assigned: " + this + "; " + regionNode.toShortString());<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      return false;<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>    // Transition regionNode State. Set it to OPENING. Update hbase:meta, and add<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    // region to list of regions on the target regionserver. Need to UNDO if failure!<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    env.getAssignmentManager().markRegionAsOpening(regionNode);<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>    // TODO: Requires a migration to be open by the RS?<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    // regionNode.getFormatVersion()<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>    if (!addToRemoteDispatcher(env, regionNode.getRegionLocation())) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      // Failed the dispatch BUT addToRemoteDispatcher internally does<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      // cleanup on failure -- even the undoing of markRegionAsOpening above --<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      // so nothing more to do here; in fact we need to get out of here<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      // fast since we've been put back on the scheduler.<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>    // We always return true, even if we fail dispatch because addToRemoteDispatcher<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    // failure processing sets state back to REGION_TRANSITION_QUEUE so we try again;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    // i.e. return true to keep the Procedure running; it has been reset to startover.<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    return true;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  @Override<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  protected void finishTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      throws IOException {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    env.getAssignmentManager().markRegionAsOpened(regionNode);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    // This success may have been after we failed open a few times. Be sure to cleanup any<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // failed open references. See #incrementAndCheckMaxAttempts and where it is called.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    env.getAssignmentManager().getRegionStates().removeFromFailedOpen(regionNode.getRegionInfo());<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  @Override<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  protected void reportTransition(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      final TransitionCode code, final long openSeqNum) throws UnexpectedStateException {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    switch (code) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      case OPENED:<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        if (openSeqNum &lt; 0) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.291"></a>
+<span class="sourceLineNo">292</span>              " transition openSeqNum=" + openSeqNum + ", " + regionNode);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        if (openSeqNum &lt; regionNode.getOpenSeqNum()) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>          // Don't bother logging if openSeqNum == 0<a name="line.295"></a>
+<span class="sourceLineNo">296</span>          if (openSeqNum != 0) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            LOG.warn("Skipping update of open seqnum with " + openSeqNum +<a name="line.297"></a>
+<span class="sourceLineNo">298</span>                " because current seqnum=" + regionNode.getOpenSeqNum());<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          }<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        } else {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          regionNode.setOpenSeqNum(openSeqNum);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        // Leave the state here as OPENING for now. We set it to OPEN in<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        // REGION_TRANSITION_FINISH section where we do a bunch of checks.<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        // regionNode.setState(RegionState.State.OPEN, RegionState.State.OPENING);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        setTransitionState(RegionTransitionState.REGION_TRANSITION_FINISH);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        break;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      case FAILED_OPEN:<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        handleFailure(env, regionNode);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        break;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      default:<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.312"></a>
+<span class="sourceLineNo">313</span>            " transition openSeqNum=" + openSeqNum + ", " + regionNode.toShortString() +<a name="line.313"></a>
+<span class="sourceLineNo">314</span>            ", " + this + ", expected OPENED or FAILED_OPEN.");<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    }<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>  /**<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * Called when dispatch or subsequent OPEN request fail. Can be run by the<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * inline dispatch call or later by the ServerCrashProcedure. Our state is<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   * generally OPENING. Cleanup and reset to OFFLINE and put our Procedure<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   * State back to REGION_TRANSITION_QUEUE so the Assign starts over.<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  private void handleFailure(final MasterProcedureEnv env, final RegionStateNode regionNode) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      aborted.set(true);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    this.forceNewPlan = true;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    this.targetServer = null;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    regionNode.offline();<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    // We were moved to OPENING state before dispatch. Undo. It is safe to call<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // this method because it checks for OPENING first.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    env.getAssignmentManager().undoRegionAsOpening(regionNode);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<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>  private boolean incrementAndCheckMaxAttempts(final MasterProcedureEnv env,<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      final RegionStateNode regionNode) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    final int retries = env.getAssignmentManager().getRegionStates().<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        addToFailedOpen(regionNode).incrementAndGetRetries();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    int max = env.getAssignmentManager().getAssignMaxAttempts();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    LOG.info("Retry=" + retries + " of max=" + max + "; " +<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        this + "; " + regionNode.toShortString());<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    return retries &gt;= max;<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>  @Override<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  public RemoteOperation remoteCallBuild(final MasterProcedureEnv env, final ServerName serverName) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    assert serverName.equals(getRegionState(env).getRegionLocation());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    return new RegionOpenOperation(this, getRegionInfo(),<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        env.getAssignmentManager().getFavoredNodes(getRegionInfo()), false);<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>  @Override<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  protected boolean remoteCallFailed(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      final IOException exception) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    handleFailure(env, regionNode);<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    return true;<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>  @Override<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    super.toStringClassDetails(sb);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    if (this.targetServer != null) sb.append(", target=").append(this.targetServer);<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>  @Override<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  public ServerName getServer(final MasterProcedureEnv env) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    RegionStateNode node =<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(this.getRegionInfo());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    if (node == null) return null;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    return node.getRegionLocation();<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  }<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>  @Override<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getAssignProcMetrics();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  }<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>   * Sort AssignProcedures such that meta and system assigns come first before user-space assigns.<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * Have to do it this way w/ distinct Comparator because Procedure is already Comparable on<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * 'Env'(?).<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   */<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  public static class CompareAssignProcedure implements Comparator&lt;AssignProcedure&gt; {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    @Override<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    public int compare(AssignProcedure left, AssignProcedure right) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      if (left.getRegionInfo().isMetaRegion()) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        if (right.getRegionInfo().isMetaRegion()) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        return -1;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      } else if (right.getRegionInfo().isMetaRegion()) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        return +1;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      }<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      if (left.getRegionInfo().getTable().isSystemTable()) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        return -1;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      } else if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        return +1;<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    }<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span>}<a name="line.407"></a>
 
 
 


[11/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
index 468124c..ae9d014 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
@@ -76,342 +76,343 @@
 <span class="sourceLineNo">068</span> * failure. Should we ignore rollback calls to Assign/Unassign then? Or just<a name="line.68"></a>
 <span class="sourceLineNo">069</span> * remove rollback here?<a name="line.69"></a>
 <span class="sourceLineNo">070</span> */<a name="line.70"></a>
-<span class="sourceLineNo">071</span>@InterfaceAudience.Private<a name="line.71"></a>
-<span class="sourceLineNo">072</span>public class AssignProcedure extends RegionTransitionProcedure {<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private static final Logger LOG = LoggerFactory.getLogger(AssignProcedure.class);<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>   * Set to true when we need recalibrate -- choose a new target -- because original assign failed.<a name="line.76"></a>
-<span class="sourceLineNo">077</span>   */<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private boolean forceNewPlan = false;<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>   * Gets set as desired target on move, merge, etc., when we want to go to a particular server.<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   * We may not be able to respect this request but will try. When it is NOT set, then we ask<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   * the balancer to assign. This value is used below in startTransition to set regionLocation if<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   * non-null. Setting regionLocation in regionServerNode is how we override balancer setting<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * destination.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   */<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  protected volatile ServerName targetServer;<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>   * Comparator that will sort AssignProcedures so meta assigns come first, then system table<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   * assigns and finally user space assigns.<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   */<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  public static final CompareAssignProcedure COMPARATOR = new CompareAssignProcedure();<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  public AssignProcedure() {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    // Required by the Procedure framework to create the procedure on replay<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    super();<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 AssignProcedure(final RegionInfo regionInfo) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    super(regionInfo);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    this.targetServer = null;<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>  public AssignProcedure(final RegionInfo regionInfo, final ServerName destinationServer) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    super(regionInfo);<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    this.targetServer = destinationServer;<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>  @Override<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public TableOperationType getTableOperationType() {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    return TableOperationType.REGION_ASSIGN;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>  @Override<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  protected boolean isRollbackSupported(final RegionTransitionState state) {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    switch (state) {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      case REGION_TRANSITION_QUEUE:<a name="line.118"></a>
-<span class="sourceLineNo">119</span>        return true;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      default:<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        return false;<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><a name="line.124"></a>
-<span class="sourceLineNo">125</span>  @Override<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      throws IOException {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    final AssignRegionStateData.Builder state = AssignRegionStateData.newBuilder()<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        .setTransitionState(getTransitionState())<a name="line.129"></a>
-<span class="sourceLineNo">130</span>        .setRegionInfo(ProtobufUtil.toRegionInfo(getRegionInfo()));<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    if (forceNewPlan) {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      state.setForceNewPlan(true);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    if (this.targetServer != null) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      state.setTargetServer(ProtobufUtil.toServerName(this.targetServer));<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    if (getAttempt() &gt; 0) {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      state.setAttempt(getAttempt());<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    }<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    serializer.serialize(state.build());<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  }<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>  @Override<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      throws IOException {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    final AssignRegionStateData state = serializer.deserialize(AssignRegionStateData.class);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    setTransitionState(state.getTransitionState());<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    setRegionInfo(ProtobufUtil.toRegionInfo(state.getRegionInfo()));<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    forceNewPlan = state.getForceNewPlan();<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    if (state.hasTargetServer()) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      this.targetServer = ProtobufUtil.toServerName(state.getTargetServer());<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    if (state.hasAttempt()) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      setAttempt(state.getAttempt());<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><a name="line.157"></a>
-<span class="sourceLineNo">158</span>  @Override<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  protected boolean startTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      throws IOException {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    // If the region is already open we can't do much...<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    if (regionNode.isInState(State.OPEN) &amp;&amp; isServerOnline(env, regionNode)) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      LOG.info("Assigned, not reassigning; " + this + "; " + regionNode.toShortString());<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      return false;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // Don't assign if table is in disabling or disabled state.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    TableStateManager tsm = env.getMasterServices().getTableStateManager();<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    TableName tn = regionNode.getRegionInfo().getTable();<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    if (tsm.getTableState(tn).isDisabledOrDisabling()) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      LOG.info("Table " + tn + " state=" + tsm.getTableState(tn) + ", skipping " + this);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return false;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    // If the region is SPLIT, we can't assign it. But state might be CLOSED, rather than<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    // SPLIT which is what a region gets set to when unassigned as part of SPLIT. FIX.<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    if (regionNode.isInState(State.SPLIT) ||<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        (regionNode.getRegionInfo().isOffline() &amp;&amp; regionNode.getRegionInfo().isSplit())) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      LOG.info("SPLIT, cannot be assigned; " + this + "; " + regionNode +<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        "; hri=" + regionNode.getRegionInfo());<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      return false;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>    // If we haven't started the operation yet, we can abort<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    if (aborted.get() &amp;&amp; regionNode.isInState(State.CLOSED, State.OFFLINE)) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        regionNode.setState(State.FAILED_OPEN);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        setFailure(getClass().getSimpleName(),<a name="line.186"></a>
-<span class="sourceLineNo">187</span>          new RetriesExhaustedException("Max attempts exceeded"));<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      } else {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        setAbortFailure(getClass().getSimpleName(), "Abort requested");<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      return false;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    // Send assign (add into assign-pool). We call regionNode.offline below to set state to<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // OFFLINE and to clear the region location. Setting a new regionLocation here is how we retain<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // old assignment or specify target server if a move or merge. See<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    // AssignmentManager#processAssignQueue. Otherwise, balancer gives us location.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    // TODO: Region will be set into OFFLINE state below regardless of what its previous state was<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    // This is dangerous? Wrong? What if region was in an unexpected state?<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    ServerName lastRegionLocation = regionNode.offline();<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    boolean retain = false;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    if (!forceNewPlan) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      if (this.targetServer != null) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        retain = targetServer.equals(lastRegionLocation);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        regionNode.setRegionLocation(targetServer);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      } else {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        if (lastRegionLocation != null) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>          // Try and keep the location we had before we offlined.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>          retain = true;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>          regionNode.setRegionLocation(lastRegionLocation);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        } else if (regionNode.getLastHost() != null) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>          retain = true;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          LOG.info("Setting lastHost as the region location " + regionNode.getLastHost());<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          regionNode.setRegionLocation(regionNode.getLastHost());<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        }<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      }<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    LOG.info("Starting " + this + "; " + regionNode.toShortString() +<a name="line.218"></a>
-<span class="sourceLineNo">219</span>        "; forceNewPlan=" + this.forceNewPlan +<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        ", retain=" + retain);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    env.getAssignmentManager().queueAssign(regionNode);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    return true;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  @Override<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  protected boolean updateTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  throws IOException, ProcedureSuspendedException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    // TODO: crash if destinationServer is specified and not online<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    // which is also the case when the balancer provided us with a different location.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    if (LOG.isTraceEnabled()) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      LOG.trace("Update " + this + "; " + regionNode.toShortString());<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    if (regionNode.getRegionLocation() == null) {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      return true;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>    if (!isServerOnline(env, regionNode)) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      // TODO: is this correct? should we wait the chore/ssh?<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      LOG.info("Server not online, re-queuing " + this + "; " + regionNode.toShortString());<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      return true;<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>    if (env.getAssignmentManager().waitServerReportEvent(regionNode.getRegionLocation(), this)) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      LOG.info("Early suspend! " + this + "; " + regionNode.toShortString());<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      throw new ProcedureSuspendedException();<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span>    if (regionNode.isInState(State.OPEN)) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      LOG.info("Already assigned: " + this + "; " + regionNode.toShortString());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      return false;<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>    // Transition regionNode State. Set it to OPENING. Update hbase:meta, and add<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    // region to list of regions on the target regionserver. Need to UNDO if failure!<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    env.getAssignmentManager().markRegionAsOpening(regionNode);<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    // TODO: Requires a migration to be open by the RS?<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    // regionNode.getFormatVersion()<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>    if (!addToRemoteDispatcher(env, regionNode.getRegionLocation())) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      // Failed the dispatch BUT addToRemoteDispatcher internally does<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      // cleanup on failure -- even the undoing of markRegionAsOpening above --<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      // so nothing more to do here; in fact we need to get out of here<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      // fast since we've been put back on the scheduler.<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>    // We always return true, even if we fail dispatch because addToRemoteDispatcher<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    // failure processing sets state back to REGION_TRANSITION_QUEUE so we try again;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // i.e. return true to keep the Procedure running; it has been reset to startover.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    return true;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  protected void finishTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      throws IOException {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    env.getAssignmentManager().markRegionAsOpened(regionNode);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // This success may have been after we failed open a few times. Be sure to cleanup any<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // failed open references. See #incrementAndCheckMaxAttempts and where it is called.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    env.getAssignmentManager().getRegionStates().removeFromFailedOpen(regionNode.getRegionInfo());<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  }<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>  @Override<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  protected void reportTransition(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      final TransitionCode code, final long openSeqNum) throws UnexpectedStateException {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    switch (code) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      case OPENED:<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        if (openSeqNum &lt; 0) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.290"></a>
-<span class="sourceLineNo">291</span>              " transition openSeqNum=" + openSeqNum + ", " + regionNode);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        if (openSeqNum &lt; regionNode.getOpenSeqNum()) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>          // Don't bother logging if openSeqNum == 0<a name="line.294"></a>
-<span class="sourceLineNo">295</span>          if (openSeqNum != 0) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>            LOG.warn("Skipping update of open seqnum with " + openSeqNum +<a name="line.296"></a>
-<span class="sourceLineNo">297</span>                " because current seqnum=" + regionNode.getOpenSeqNum());<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        } else {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          regionNode.setOpenSeqNum(openSeqNum);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        // Leave the state here as OPENING for now. We set it to OPEN in<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        // REGION_TRANSITION_FINISH section where we do a bunch of checks.<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        // regionNode.setState(RegionState.State.OPEN, RegionState.State.OPENING);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        setTransitionState(RegionTransitionState.REGION_TRANSITION_FINISH);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        break;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      case FAILED_OPEN:<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        handleFailure(env, regionNode);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        break;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      default:<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.311"></a>
-<span class="sourceLineNo">312</span>            " transition openSeqNum=" + openSeqNum + ", " + regionNode.toShortString() +<a name="line.312"></a>
-<span class="sourceLineNo">313</span>            ", " + this + ", expected OPENED or FAILED_OPEN.");<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  }<a name="line.315"></a>
-<span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>  /**<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * Called when dispatch or subsequent OPEN request fail. Can be run by the<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * inline dispatch call or later by the ServerCrashProcedure. Our state is<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * generally OPENING. Cleanup and reset to OFFLINE and put our Procedure<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * State back to REGION_TRANSITION_QUEUE so the Assign starts over.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   */<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  private void handleFailure(final MasterProcedureEnv env, final RegionStateNode regionNode) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      aborted.set(true);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    this.forceNewPlan = true;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    this.targetServer = null;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    regionNode.offline();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    // We were moved to OPENING state before dispatch. Undo. It is safe to call<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    // this method because it checks for OPENING first.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    env.getAssignmentManager().undoRegionAsOpening(regionNode);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<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>  private boolean incrementAndCheckMaxAttempts(final MasterProcedureEnv env,<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      final RegionStateNode regionNode) {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    final int retries = env.getAssignmentManager().getRegionStates().<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        addToFailedOpen(regionNode).incrementAndGetRetries();<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    int max = env.getAssignmentManager().getAssignMaxAttempts();<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    LOG.info("Retry=" + retries + " of max=" + max + "; " +<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        this + "; " + regionNode.toShortString());<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    return retries &gt;= max;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  @Override<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public RemoteOperation remoteCallBuild(final MasterProcedureEnv env, final ServerName serverName) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    assert serverName.equals(getRegionState(env).getRegionLocation());<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    return new RegionOpenOperation(this, getRegionInfo(),<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        env.getAssignmentManager().getFavoredNodes(getRegionInfo()), false);<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>  protected boolean remoteCallFailed(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      final IOException exception) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    handleFailure(env, regionNode);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    return true;<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>  @Override<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    super.toStringClassDetails(sb);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    if (this.targetServer != null) sb.append(", target=").append(this.targetServer);<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 ServerName getServer(final MasterProcedureEnv env) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    RegionStateNode node =<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(this.getRegionInfo());<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    if (node == null) return null;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    return node.getRegionLocation();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  @Override<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getAssignProcMetrics();<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>  /**<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   * Sort AssignProcedures such that meta and system assigns come first before user-space assigns.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>   * Have to do it this way w/ distinct Comparator because Procedure is already Comparable on<a name="line.381"></a>
-<span class="sourceLineNo">382</span>   * 'Env'(?).<a name="line.382"></a>
-<span class="sourceLineNo">383</span>   */<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  public static class CompareAssignProcedure implements Comparator&lt;AssignProcedure&gt; {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    @Override<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    public int compare(AssignProcedure left, AssignProcedure right) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      if (left.getRegionInfo().isMetaRegion()) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        if (right.getRegionInfo().isMetaRegion()) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.389"></a>
-<span class="sourceLineNo">390</span>        }<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        return -1;<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      } else if (right.getRegionInfo().isMetaRegion()) {<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>      if (left.getRegionInfo().getTable().isSystemTable()) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        }<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        return -1;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      } else if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        return +1;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<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">071</span>// TODO: Add being able to assign a region to open read-only.<a name="line.71"></a>
+<span class="sourceLineNo">072</span>@InterfaceAudience.Private<a name="line.72"></a>
+<span class="sourceLineNo">073</span>public class AssignProcedure extends RegionTransitionProcedure {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private static final Logger LOG = LoggerFactory.getLogger(AssignProcedure.class);<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  /**<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   * Set to true when we need recalibrate -- choose a new target -- because original assign failed.<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   */<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private boolean forceNewPlan = false;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  /**<a name="line.81"></a>
+<span class="sourceLineNo">082</span>   * Gets set as desired target on move, merge, etc., when we want to go to a particular server.<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   * We may not be able to respect this request but will try. When it is NOT set, then we ask<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   * the balancer to assign. This value is used below in startTransition to set regionLocation if<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   * non-null. Setting regionLocation in regionServerNode is how we override balancer setting<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   * destination.<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   */<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  protected volatile ServerName targetServer;<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>   * Comparator that will sort AssignProcedures so meta assigns come first, then system table<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   * assigns and finally user space assigns.<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   */<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public static final CompareAssignProcedure COMPARATOR = new CompareAssignProcedure();<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>  public AssignProcedure() {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    // Required by the Procedure framework to create the procedure on replay<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    super();<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span>  public AssignProcedure(final RegionInfo regionInfo) {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    super(regionInfo);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    this.targetServer = null;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>  public AssignProcedure(final RegionInfo regionInfo, final ServerName destinationServer) {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    super(regionInfo);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    this.targetServer = destinationServer;<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>  @Override<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  public TableOperationType getTableOperationType() {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    return TableOperationType.REGION_ASSIGN;<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>  @Override<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  protected boolean isRollbackSupported(final RegionTransitionState state) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    switch (state) {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      case REGION_TRANSITION_QUEUE:<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        return true;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      default:<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        return false;<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>  @Override<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      throws IOException {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    final AssignRegionStateData.Builder state = AssignRegionStateData.newBuilder()<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        .setTransitionState(getTransitionState())<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        .setRegionInfo(ProtobufUtil.toRegionInfo(getRegionInfo()));<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    if (forceNewPlan) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      state.setForceNewPlan(true);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    }<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    if (this.targetServer != null) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      state.setTargetServer(ProtobufUtil.toServerName(this.targetServer));<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    if (getAttempt() &gt; 0) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      state.setAttempt(getAttempt());<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    }<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    serializer.serialize(state.build());<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>  @Override<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      throws IOException {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    final AssignRegionStateData state = serializer.deserialize(AssignRegionStateData.class);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    setTransitionState(state.getTransitionState());<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    setRegionInfo(ProtobufUtil.toRegionInfo(state.getRegionInfo()));<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    forceNewPlan = state.getForceNewPlan();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    if (state.hasTargetServer()) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      this.targetServer = ProtobufUtil.toServerName(state.getTargetServer());<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    if (state.hasAttempt()) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      setAttempt(state.getAttempt());<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  }<a name="line.157"></a>
+<span class="sourceLineNo">158</span><a name="line.158"></a>
+<span class="sourceLineNo">159</span>  @Override<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  protected boolean startTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      throws IOException {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // If the region is already open we can't do much...<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    if (regionNode.isInState(State.OPEN) &amp;&amp; isServerOnline(env, regionNode)) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      LOG.info("Assigned, not reassigning; " + this + "; " + regionNode.toShortString());<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      return false;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    // Don't assign if table is in disabling or disabled state.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    TableStateManager tsm = env.getMasterServices().getTableStateManager();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    TableName tn = regionNode.getRegionInfo().getTable();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    if (tsm.getTableState(tn).isDisabledOrDisabling()) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      LOG.info("Table " + tn + " state=" + tsm.getTableState(tn) + ", skipping " + this);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      return false;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    // If the region is SPLIT, we can't assign it. But state might be CLOSED, rather than<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    // SPLIT which is what a region gets set to when unassigned as part of SPLIT. FIX.<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    if (regionNode.isInState(State.SPLIT) ||<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        (regionNode.getRegionInfo().isOffline() &amp;&amp; regionNode.getRegionInfo().isSplit())) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      LOG.info("SPLIT, cannot be assigned; " + this + "; " + regionNode +<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        "; hri=" + regionNode.getRegionInfo());<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>    // If we haven't started the operation yet, we can abort<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    if (aborted.get() &amp;&amp; regionNode.isInState(State.CLOSED, State.OFFLINE)) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        regionNode.setState(State.FAILED_OPEN);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        setFailure(getClass().getSimpleName(),<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          new RetriesExhaustedException("Max attempts exceeded"));<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      } else {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        setAbortFailure(getClass().getSimpleName(), "Abort requested");<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      return false;<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>    // Send assign (add into assign-pool). We call regionNode.offline below to set state to<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // OFFLINE and to clear the region location. Setting a new regionLocation here is how we retain<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    // old assignment or specify target server if a move or merge. See<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    // AssignmentManager#processAssignQueue. Otherwise, balancer gives us location.<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    // TODO: Region will be set into OFFLINE state below regardless of what its previous state was<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    // This is dangerous? Wrong? What if region was in an unexpected state?<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    ServerName lastRegionLocation = regionNode.offline();<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    boolean retain = false;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    if (!forceNewPlan) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      if (this.targetServer != null) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        retain = targetServer.equals(lastRegionLocation);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        regionNode.setRegionLocation(targetServer);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      } else {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>        if (lastRegionLocation != null) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>          // Try and keep the location we had before we offlined.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          retain = true;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>          regionNode.setRegionLocation(lastRegionLocation);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        } else if (regionNode.getLastHost() != null) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>          retain = true;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>          LOG.info("Setting lastHost as the region location " + regionNode.getLastHost());<a name="line.214"></a>
+<span class="sourceLineNo">215</span>          regionNode.setRegionLocation(regionNode.getLastHost());<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>    LOG.info("Starting " + this + "; " + regionNode.toShortString() +<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        "; forceNewPlan=" + this.forceNewPlan +<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        ", retain=" + retain);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    env.getAssignmentManager().queueAssign(regionNode);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    return true;<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>  protected boolean updateTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  throws IOException, ProcedureSuspendedException {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    // TODO: crash if destinationServer is specified and not online<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    // which is also the case when the balancer provided us with a different location.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    if (LOG.isTraceEnabled()) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      LOG.trace("Update " + this + "; " + regionNode.toShortString());<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    if (regionNode.getRegionLocation() == null) {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      return true;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>    if (!isServerOnline(env, regionNode)) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      // TODO: is this correct? should we wait the chore/ssh?<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      LOG.info("Server not online, re-queuing " + this + "; " + regionNode.toShortString());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      return true;<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>    if (env.getAssignmentManager().waitServerReportEvent(regionNode.getRegionLocation(), this)) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      LOG.info("Early suspend! " + this + "; " + regionNode.toShortString());<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      throw new ProcedureSuspendedException();<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>    if (regionNode.isInState(State.OPEN)) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      LOG.info("Already assigned: " + this + "; " + regionNode.toShortString());<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      return false;<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>    // Transition regionNode State. Set it to OPENING. Update hbase:meta, and add<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    // region to list of regions on the target regionserver. Need to UNDO if failure!<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    env.getAssignmentManager().markRegionAsOpening(regionNode);<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>    // TODO: Requires a migration to be open by the RS?<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    // regionNode.getFormatVersion()<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>    if (!addToRemoteDispatcher(env, regionNode.getRegionLocation())) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      // Failed the dispatch BUT addToRemoteDispatcher internally does<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      // cleanup on failure -- even the undoing of markRegionAsOpening above --<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      // so nothing more to do here; in fact we need to get out of here<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      // fast since we've been put back on the scheduler.<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>    // We always return true, even if we fail dispatch because addToRemoteDispatcher<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    // failure processing sets state back to REGION_TRANSITION_QUEUE so we try again;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    // i.e. return true to keep the Procedure running; it has been reset to startover.<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    return true;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  @Override<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  protected void finishTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      throws IOException {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    env.getAssignmentManager().markRegionAsOpened(regionNode);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    // This success may have been after we failed open a few times. Be sure to cleanup any<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // failed open references. See #incrementAndCheckMaxAttempts and where it is called.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    env.getAssignmentManager().getRegionStates().removeFromFailedOpen(regionNode.getRegionInfo());<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  @Override<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  protected void reportTransition(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      final TransitionCode code, final long openSeqNum) throws UnexpectedStateException {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    switch (code) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      case OPENED:<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        if (openSeqNum &lt; 0) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.291"></a>
+<span class="sourceLineNo">292</span>              " transition openSeqNum=" + openSeqNum + ", " + regionNode);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        if (openSeqNum &lt; regionNode.getOpenSeqNum()) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>          // Don't bother logging if openSeqNum == 0<a name="line.295"></a>
+<span class="sourceLineNo">296</span>          if (openSeqNum != 0) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            LOG.warn("Skipping update of open seqnum with " + openSeqNum +<a name="line.297"></a>
+<span class="sourceLineNo">298</span>                " because current seqnum=" + regionNode.getOpenSeqNum());<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          }<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        } else {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          regionNode.setOpenSeqNum(openSeqNum);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        // Leave the state here as OPENING for now. We set it to OPEN in<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        // REGION_TRANSITION_FINISH section where we do a bunch of checks.<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        // regionNode.setState(RegionState.State.OPEN, RegionState.State.OPENING);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        setTransitionState(RegionTransitionState.REGION_TRANSITION_FINISH);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        break;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      case FAILED_OPEN:<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        handleFailure(env, regionNode);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        break;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      default:<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.312"></a>
+<span class="sourceLineNo">313</span>            " transition openSeqNum=" + openSeqNum + ", " + regionNode.toShortString() +<a name="line.313"></a>
+<span class="sourceLineNo">314</span>            ", " + this + ", expected OPENED or FAILED_OPEN.");<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    }<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>  /**<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * Called when dispatch or subsequent OPEN request fail. Can be run by the<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * inline dispatch call or later by the ServerCrashProcedure. Our state is<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   * generally OPENING. Cleanup and reset to OFFLINE and put our Procedure<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   * State back to REGION_TRANSITION_QUEUE so the Assign starts over.<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  private void handleFailure(final MasterProcedureEnv env, final RegionStateNode regionNode) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      aborted.set(true);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    this.forceNewPlan = true;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    this.targetServer = null;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    regionNode.offline();<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    // We were moved to OPENING state before dispatch. Undo. It is safe to call<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // this method because it checks for OPENING first.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    env.getAssignmentManager().undoRegionAsOpening(regionNode);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<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>  private boolean incrementAndCheckMaxAttempts(final MasterProcedureEnv env,<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      final RegionStateNode regionNode) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    final int retries = env.getAssignmentManager().getRegionStates().<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        addToFailedOpen(regionNode).incrementAndGetRetries();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    int max = env.getAssignmentManager().getAssignMaxAttempts();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    LOG.info("Retry=" + retries + " of max=" + max + "; " +<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        this + "; " + regionNode.toShortString());<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    return retries &gt;= max;<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>  @Override<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  public RemoteOperation remoteCallBuild(final MasterProcedureEnv env, final ServerName serverName) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    assert serverName.equals(getRegionState(env).getRegionLocation());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    return new RegionOpenOperation(this, getRegionInfo(),<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        env.getAssignmentManager().getFavoredNodes(getRegionInfo()), false);<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>  @Override<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  protected boolean remoteCallFailed(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      final IOException exception) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    handleFailure(env, regionNode);<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    return true;<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>  @Override<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    super.toStringClassDetails(sb);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    if (this.targetServer != null) sb.append(", target=").append(this.targetServer);<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>  @Override<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  public ServerName getServer(final MasterProcedureEnv env) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    RegionStateNode node =<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(this.getRegionInfo());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    if (node == null) return null;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    return node.getRegionLocation();<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  }<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>  @Override<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getAssignProcMetrics();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  }<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>   * Sort AssignProcedures such that meta and system assigns come first before user-space assigns.<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * Have to do it this way w/ distinct Comparator because Procedure is already Comparable on<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * 'Env'(?).<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   */<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  public static class CompareAssignProcedure implements Comparator&lt;AssignProcedure&gt; {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    @Override<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    public int compare(AssignProcedure left, AssignProcedure right) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      if (left.getRegionInfo().isMetaRegion()) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        if (right.getRegionInfo().isMetaRegion()) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        return -1;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      } else if (right.getRegionInfo().isMetaRegion()) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        return +1;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      }<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      if (left.getRegionInfo().getTable().isSystemTable()) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        return -1;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      } else if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        return +1;<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    }<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span>}<a name="line.407"></a>
 
 
 


[07/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html
index 11c182b..7a1d88a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html
@@ -147,747 +147,751 @@
 <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>  /**<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * Check whether there is recovered.edits in the closed region<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * If any, that means this region is not closed property, we need<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * to abort region split to prevent data loss<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * @param env master env<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   * @throws IOException IOException<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   */<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private void checkClosedRegion(final MasterProcedureEnv env) throws IOException {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    if (WALSplitter.hasRecoveredEdits(env.getMasterServices().getFileSystem(),<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        env.getMasterConfiguration(), getRegion())) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      throw new IOException("Recovered.edits are found in Region: " + getRegion()<a name="line.151"></a>
-<span class="sourceLineNo">152</span>          + ", abort split to prevent data loss");<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>  /**<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * Check whether the region is splittable<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   * @param env MasterProcedureEnv<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   * @param regionToSplit parent Region to be split<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   * @param splitRow if splitRow is not specified, will first try to get bestSplitRow from RS<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * @throws IOException<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   */<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  private void checkSplittable(final MasterProcedureEnv env,<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      final RegionInfo regionToSplit, final byte[] splitRow) throws IOException {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    // Ask the remote RS if this region is splittable.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // If we get an IOE, report it along w/ the failure so can see why we are not splittable at this time.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    if(regionToSplit.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      throw new IllegalArgumentException ("Can't invoke split on non-default regions directly");<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    }<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    RegionStateNode node =<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    IOException splittableCheckIOE = null;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    boolean splittable = false;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    if (node != null) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      try {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        if (bestSplitRow == null || bestSplitRow.length == 0) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          LOG.info("splitKey isn't explicitly specified, " + " will try to find a best split key from RS");<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        }<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        // Always set bestSplitRow request as true here,<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        // need to call Region#checkSplit to check it splittable or not<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        GetRegionInfoResponse response =<a name="line.181"></a>
-<span class="sourceLineNo">182</span>            Util.getRegionInfoResponse(env, node.getRegionLocation(), node.getRegionInfo(), true);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        if(bestSplitRow == null || bestSplitRow.length == 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>          bestSplitRow = response.hasBestSplitRow() ? response.getBestSplitRow().toByteArray() : null;<a name="line.184"></a>
+<span class="sourceLineNo">142</span>   * Check whether there are recovered.edits in the parent closed region.<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * @param env master env<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * @throws IOException IOException<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  static boolean hasRecoveredEdits(MasterProcedureEnv env, RegionInfo ri) throws IOException {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    return WALSplitter.hasRecoveredEdits(env.getMasterServices().getFileSystem(),<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        env.getMasterConfiguration(), ri);<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>   * Check whether the region is splittable<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * @param env MasterProcedureEnv<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @param regionToSplit parent Region to be split<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @param splitRow if splitRow is not specified, will first try to get bestSplitRow from RS<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * @throws IOException<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   */<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  private void checkSplittable(final MasterProcedureEnv env,<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      final RegionInfo regionToSplit, final byte[] splitRow) throws IOException {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    // Ask the remote RS if this region is splittable.<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    // If we get an IOE, report it along w/ the failure so can see why we are not splittable at this time.<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    if(regionToSplit.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      throw new IllegalArgumentException ("Can't invoke split on non-default regions directly");<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    RegionStateNode node =<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    IOException splittableCheckIOE = null;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    boolean splittable = false;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    if (node != null) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      try {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        if (bestSplitRow == null || bestSplitRow.length == 0) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>          LOG.info("splitKey isn't explicitly specified, " + " will try to find a best split key from RS");<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        }<a name="line.173"></a>
+<span class="sourceLineNo">174</span>        // Always set bestSplitRow request as true here,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        // need to call Region#checkSplit to check it splittable or not<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        GetRegionInfoResponse response =<a name="line.176"></a>
+<span class="sourceLineNo">177</span>            Util.getRegionInfoResponse(env, node.getRegionLocation(), node.getRegionInfo(), true);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        if(bestSplitRow == null || bestSplitRow.length == 0) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>          bestSplitRow = response.hasBestSplitRow() ? response.getBestSplitRow().toByteArray() : null;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>        splittable = response.hasSplittable() &amp;&amp; response.getSplittable();<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>        if (LOG.isDebugEnabled()) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          LOG.debug("Splittable=" + splittable + " " + node.toShortString());<a name="line.184"></a>
 <span class="sourceLineNo">185</span>        }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        splittable = response.hasSplittable() &amp;&amp; response.getSplittable();<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>        if (LOG.isDebugEnabled()) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>          LOG.debug("Splittable=" + splittable + " " + node.toShortString());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      } catch (IOException e) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        splittableCheckIOE = e;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      }<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    }<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    if (!splittable) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      IOException e = new DoNotRetryIOException(regionToSplit.getShortNameToLog() + " NOT splittable");<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      if (splittableCheckIOE != null) e.initCause(splittableCheckIOE);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      throw e;<a name="line.199"></a>
+<span class="sourceLineNo">186</span>      } catch (IOException e) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        splittableCheckIOE = e;<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>    if (!splittable) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      IOException e = new DoNotRetryIOException(regionToSplit.getShortNameToLog() + " NOT splittable");<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      if (splittableCheckIOE != null) e.initCause(splittableCheckIOE);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      throw e;<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>    if(bestSplitRow == null || bestSplitRow.length == 0) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      throw new DoNotRetryIOException("Region not splittable because bestSplitPoint = null, "<a name="line.198"></a>
+<span class="sourceLineNo">199</span>          + "maybe table is too small for auto split. For force split, try specifying split row");<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>    if(bestSplitRow == null || bestSplitRow.length == 0) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      throw new DoNotRetryIOException("Region not splittable because bestSplitPoint = null, "<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          + "maybe table is too small for auto split. For force split, try specifying split row");<a name="line.204"></a>
+<span class="sourceLineNo">202</span>    if (Bytes.equals(regionToSplit.getStartKey(), bestSplitRow)) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      throw new DoNotRetryIOException(<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        "Split row is equal to startkey: " + Bytes.toStringBinary(splitRow));<a name="line.204"></a>
 <span class="sourceLineNo">205</span>    }<a name="line.205"></a>
 <span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>    if (Bytes.equals(regionToSplit.getStartKey(), bestSplitRow)) {<a name="line.207"></a>
+<span class="sourceLineNo">207</span>    if (!regionToSplit.containsRow(bestSplitRow)) {<a name="line.207"></a>
 <span class="sourceLineNo">208</span>      throw new DoNotRetryIOException(<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        "Split row is equal to startkey: " + Bytes.toStringBinary(splitRow));<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    }<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>    if (!regionToSplit.containsRow(bestSplitRow)) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      throw new DoNotRetryIOException(<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        "Split row is not inside region key range splitKey:" + Bytes.toStringBinary(splitRow) +<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        " region: " + regionToSplit);<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>  /**<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * Calculate daughter regionid to use.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * @param hri Parent {@link RegionInfo}<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @return Daughter region id (timestamp) to use.<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   */<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  private static long getDaughterRegionIdTimestamp(final RegionInfo hri) {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    long rid = EnvironmentEdgeManager.currentTime();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    // Regionid is timestamp.  Can't be less than that of parent else will insert<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    // at wrong location in hbase:meta (See HBASE-710).<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    if (rid &lt; hri.getRegionId()) {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      LOG.warn("Clock skew; parent regions id is " + hri.getRegionId() +<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        " but current time here is " + rid);<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      rid = hri.getRegionId() + 1;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    return rid;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
+<span class="sourceLineNo">209</span>        "Split row is not inside region key range splitKey:" + Bytes.toStringBinary(splitRow) +<a name="line.209"></a>
+<span class="sourceLineNo">210</span>        " region: " + regionToSplit);<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>  /**<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   * Calculate daughter regionid to use.<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * @param hri Parent {@link RegionInfo}<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * @return Daughter region id (timestamp) to use.<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
+<span class="sourceLineNo">219</span>  private static long getDaughterRegionIdTimestamp(final RegionInfo hri) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    long rid = EnvironmentEdgeManager.currentTime();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    // Regionid is timestamp.  Can't be less than that of parent else will insert<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    // at wrong location in hbase:meta (See HBASE-710).<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    if (rid &lt; hri.getRegionId()) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      LOG.warn("Clock skew; parent regions id is " + hri.getRegionId() +<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        " but current time here is " + rid);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      rid = hri.getRegionId() + 1;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    return rid;<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>  @Override<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  protected Flow executeFromState(final MasterProcedureEnv env, final SplitTableRegionState state)<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      throws InterruptedException {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    LOG.trace("{} execute state={}", this, state);<a name="line.234"></a>
 <span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  protected Flow executeFromState(final MasterProcedureEnv env, final SplitTableRegionState state)<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      throws InterruptedException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    LOG.trace("{} execute state={}", this, state);<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>    try {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      switch (state) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        case SPLIT_TABLE_REGION_PREPARE:<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          if (prepareSplitRegion(env)) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>            setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>            break;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          } else {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>            return Flow.NO_MORE_STATE;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>          }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        case SPLIT_TABLE_REGION_PRE_OPERATION:<a name="line.250"></a>
-<span class="sourceLineNo">251</span>          preSplitRegion(env);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CLOSE_PARENT_REGION);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          break;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:<a name="line.254"></a>
-<span class="sourceLineNo">255</span>          addChildProcedure(createUnassignProcedures(env, getRegionReplication(env)));<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>          break;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          checkClosedRegion(env);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          break;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        case SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS:<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          createDaughterRegions(env);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          break;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        case SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.266"></a>
-<span class="sourceLineNo">267</span>          writeMaxSequenceIdFile(env);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>          break;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        case SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META:<a name="line.270"></a>
-<span class="sourceLineNo">271</span>          preSplitRegionBeforeMETA(env);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_UPDATE_META);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          break;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          updateMeta(env);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>          break;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          preSplitRegionAfterMETA(env);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          break;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          addChildProcedure(createAssignProcedures(env, getRegionReplication(env)));<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_POST_OPERATION);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>          break;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          postSplitRegion(env);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>          return Flow.NO_MORE_STATE;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        default:<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    } catch (IOException e) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      String msg = "Error trying to split region " + getParentRegion().getEncodedName() +<a name="line.293"></a>
-<span class="sourceLineNo">294</span>          " in the table " + getTableName() + " (in state=" + state + ")";<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      if (!isRollbackSupported(state)) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        // We reach a state that cannot be rolled back. We just need to keep retry.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        LOG.warn(msg, e);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      } else {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        LOG.error(msg, e);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        setFailure("master-split-regions", e);<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>    // if split fails,  need to call ((HRegion)parent).clearSplit() when it is a force split<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return Flow.HAS_MORE_STATE;<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>   * To rollback {@link SplitTableRegionProcedure}, an AssignProcedure is asynchronously<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * submitted for parent region to be split (rollback doesn't wait on the completion of the<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * AssignProcedure) . This can be improved by changing rollback() to support sub-procedures.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * See HBASE-19851 for details.<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>  protected void rollbackState(final MasterProcedureEnv env, final SplitTableRegionState state)<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      throws IOException, InterruptedException {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    if (isTraceEnabled()) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      LOG.trace(this + " rollback state=" + state);<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>    try {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      switch (state) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.323"></a>
-<span class="sourceLineNo">324</span>        case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.325"></a>
-<span class="sourceLineNo">326</span>          // PONR<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        case SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META:<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          break;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        case SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS:<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        case SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.331"></a>
-<span class="sourceLineNo">332</span>          // Doing nothing, as re-open parent region would clean up daughter region directories.<a name="line.332"></a>
+<span class="sourceLineNo">236</span>    try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      switch (state) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        case SPLIT_TABLE_REGION_PREPARE:<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          if (prepareSplitRegion(env)) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>            setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>            break;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          } else {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>            return Flow.NO_MORE_STATE;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          }<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        case SPLIT_TABLE_REGION_PRE_OPERATION:<a name="line.245"></a>
+<span class="sourceLineNo">246</span>          preSplitRegion(env);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CLOSE_PARENT_REGION);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>          break;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:<a name="line.249"></a>
+<span class="sourceLineNo">250</span>          addChildProcedure(createUnassignProcedures(env, getRegionReplication(env)));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>          break;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          if (hasRecoveredEdits(env, getRegion())) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>            // If recovered edits, reopen parent region and then re-run the close by going back to<a name="line.255"></a>
+<span class="sourceLineNo">256</span>            // SPLIT_TABLE_REGION_CLOSE_PARENT_REGION. We might have to cycle here a few times<a name="line.256"></a>
+<span class="sourceLineNo">257</span>            // (TODO: Add being able to open a region in read-only mode). Open the primary replica<a name="line.257"></a>
+<span class="sourceLineNo">258</span>            // in this case only where we just want to pickup the left-out replicated.edits.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>            LOG.info("Found recovered.edits under {}, reopen so we pickup these missed edits!",<a name="line.259"></a>
+<span class="sourceLineNo">260</span>                getRegion().getEncodedName());<a name="line.260"></a>
+<span class="sourceLineNo">261</span>            addChildProcedure(env.getAssignmentManager().createAssignProcedure(getParentRegion()));<a name="line.261"></a>
+<span class="sourceLineNo">262</span>            setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CLOSE_PARENT_REGION);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          } else {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>            setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          break;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        case SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS:<a name="line.267"></a>
+<span class="sourceLineNo">268</span>          createDaughterRegions(env);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          break;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        case SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          writeMaxSequenceIdFile(env);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          break;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        case SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META:<a name="line.275"></a>
+<span class="sourceLineNo">276</span>          preSplitRegionBeforeMETA(env);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_UPDATE_META);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>          break;<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.279"></a>
+<span class="sourceLineNo">280</span>          updateMeta(env);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          break;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          preSplitRegionAfterMETA(env);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          break;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>        case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          addChildProcedure(createAssignProcedures(env, getRegionReplication(env)));<a name="line.288"></a>
+<span class="sourceLineNo">289</span>          setNextState(SplitTableRegionState.SPLIT_TABLE_REGION_POST_OPERATION);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          break;<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          postSplitRegion(env);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          return Flow.NO_MORE_STATE;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        default:<a name="line.294"></a>
+<span class="sourceLineNo">295</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      }<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    } catch (IOException e) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      String msg = "Splitting " + getParentRegion().getEncodedName() + ", " + this;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      if (!isRollbackSupported(state)) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        // We reach a state that cannot be rolled back. We just need to keep retrying.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        LOG.warn(msg, e);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      } else {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        LOG.error(msg, e);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        setFailure("master-split-regions", e);<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>    // if split fails,  need to call ((HRegion)parent).clearSplit() when it is a force split<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    return Flow.HAS_MORE_STATE;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  /**<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * To rollback {@link SplitTableRegionProcedure}, an AssignProcedure is asynchronously<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * submitted for parent region to be split (rollback doesn't wait on the completion of the<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * AssignProcedure) . This can be improved by changing rollback() to support sub-procedures.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * See HBASE-19851 for details.<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   */<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  @Override<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  protected void rollbackState(final MasterProcedureEnv env, final SplitTableRegionState state)<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      throws IOException, InterruptedException {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    if (isTraceEnabled()) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      LOG.trace(this + " rollback state=" + state);<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>    try {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      switch (state) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.326"></a>
+<span class="sourceLineNo">327</span>        case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.329"></a>
+<span class="sourceLineNo">330</span>          // PONR<a name="line.330"></a>
+<span class="sourceLineNo">331</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        case SPLIT_TABLE_REGION_PRE_OPERATION_BEFORE_META:<a name="line.332"></a>
 <span class="sourceLineNo">333</span>          break;<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          // Doing nothing, in SPLIT_TABLE_REGION_CLOSE_PARENT_REGION,<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          // we will bring parent region online<a name="line.336"></a>
+<span class="sourceLineNo">334</span>        case SPLIT_TABLE_REGION_CREATE_DAUGHTER_REGIONS:<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        case SPLIT_TABLE_REGION_WRITE_MAX_SEQUENCE_ID_FILE:<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          // Doing nothing, as re-open parent region would clean up daughter region directories.<a name="line.336"></a>
 <span class="sourceLineNo">337</span>          break;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          openParentRegion(env);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>          break;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        case SPLIT_TABLE_REGION_PRE_OPERATION:<a name="line.341"></a>
-<span class="sourceLineNo">342</span>          postRollBackSplitRegion(env);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>          break;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        case SPLIT_TABLE_REGION_PREPARE:<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          break; // nothing to do<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        default:<a name="line.346"></a>
-<span class="sourceLineNo">347</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    } catch (IOException e) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      // This will be retried. Unless there is a bug in the code,<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      // this should be just a "temporary error" (e.g. network down)<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      LOG.warn("pid=" + getProcId() + " failed rollback attempt step " + state +<a name="line.352"></a>
-<span class="sourceLineNo">353</span>          " for splitting the region "<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        + getParentRegion().getEncodedName() + " in table " + getTableName(), e);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      throw e;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>  /*<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   * Check whether we are in the state that can be rollback<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   */<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  @Override<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  protected boolean isRollbackSupported(final SplitTableRegionState state) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    switch (state) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        // It is not safe to rollback if we reach to these states.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        return false;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      default:<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        break;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    return true;<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>  @Override<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  protected SplitTableRegionState getState(final int stateId) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    return SplitTableRegionState.forNumber(stateId);<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>  protected int getStateId(final SplitTableRegionState state) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    return state.getNumber();<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Override<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  protected SplitTableRegionState getInitialState() {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    return SplitTableRegionState.SPLIT_TABLE_REGION_PREPARE;<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>  @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      throws IOException {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    super.serializeStateData(serializer);<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    final MasterProcedureProtos.SplitTableRegionStateData.Builder splitTableRegionMsg =<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        MasterProcedureProtos.SplitTableRegionStateData.newBuilder()<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        .setUserInfo(MasterProcedureUtil.toProtoUserInfo(getUser()))<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        .setParentRegionInfo(ProtobufUtil.toRegionInfo(getRegion()))<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        .addChildRegionInfo(ProtobufUtil.toRegionInfo(daughter_1_RI))<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        .addChildRegionInfo(ProtobufUtil.toRegionInfo(daughter_2_RI));<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    serializer.serialize(splitTableRegionMsg.build());<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>  @Override<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      throws IOException {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    super.deserializeStateData(serializer);<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>    final MasterProcedureProtos.SplitTableRegionStateData splitTableRegionsMsg =<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        serializer.deserialize(MasterProcedureProtos.SplitTableRegionStateData.class);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    setUser(MasterProcedureUtil.toUserInfo(splitTableRegionsMsg.getUserInfo()));<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    setRegion(ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getParentRegionInfo()));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    assert(splitTableRegionsMsg.getChildRegionInfoCount() == 2);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    daughter_1_RI = ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getChildRegionInfo(0));<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    daughter_2_RI = ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getChildRegionInfo(1));<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  @Override<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    sb.append(getClass().getSimpleName());<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    sb.append(" table=");<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    sb.append(getTableName());<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    sb.append(", parent=");<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    sb.append(getParentRegion().getShortNameToLog());<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    sb.append(", daughterA=");<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    sb.append(daughter_1_RI.getShortNameToLog());<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    sb.append(", daughterB=");<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    sb.append(daughter_2_RI.getShortNameToLog());<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  }<a name="line.431"></a>
-<span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>  private RegionInfo getParentRegion() {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return getRegion();<a name="line.434"></a>
+<span class="sourceLineNo">338</span>        case SPLIT_TABLE_REGIONS_CHECK_CLOSED_REGIONS:<a name="line.338"></a>
+<span class="sourceLineNo">339</span>          // Doing nothing, in SPLIT_TABLE_REGION_CLOSE_PARENT_REGION,<a name="line.339"></a>
+<span class="sourceLineNo">340</span>          // we will bring parent region online<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          break;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        case SPLIT_TABLE_REGION_CLOSE_PARENT_REGION:<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          openParentRegion(env);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>          break;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        case SPLIT_TABLE_REGION_PRE_OPERATION:<a name="line.345"></a>
+<span class="sourceLineNo">346</span>          postRollBackSplitRegion(env);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>          break;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        case SPLIT_TABLE_REGION_PREPARE:<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          break; // nothing to do<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        default:<a name="line.350"></a>
+<span class="sourceLineNo">351</span>          throw new UnsupportedOperationException(this + " unhandled state=" + state);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    } catch (IOException e) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      // This will be retried. Unless there is a bug in the code,<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      // this should be just a "temporary error" (e.g. network down)<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      LOG.warn("pid=" + getProcId() + " failed rollback attempt step " + state +<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          " for splitting the region "<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        + getParentRegion().getEncodedName() + " in table " + getTableName(), e);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      throw e;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    }<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>   * Check whether we are in the state that can be rollback<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>  protected boolean isRollbackSupported(final SplitTableRegionState state) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    switch (state) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      case SPLIT_TABLE_REGION_POST_OPERATION:<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      case SPLIT_TABLE_REGION_OPEN_CHILD_REGIONS:<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      case SPLIT_TABLE_REGION_PRE_OPERATION_AFTER_META:<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      case SPLIT_TABLE_REGION_UPDATE_META:<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        // It is not safe to rollback if we reach to these states.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        return false;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      default:<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        break;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    }<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    return true;<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>  @Override<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  protected SplitTableRegionState getState(final int stateId) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    return SplitTableRegionState.forNumber(stateId);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  @Override<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  protected int getStateId(final SplitTableRegionState state) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    return state.getNumber();<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>  protected SplitTableRegionState getInitialState() {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    return SplitTableRegionState.SPLIT_TABLE_REGION_PREPARE;<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>  @Override<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      throws IOException {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    super.serializeStateData(serializer);<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    final MasterProcedureProtos.SplitTableRegionStateData.Builder splitTableRegionMsg =<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        MasterProcedureProtos.SplitTableRegionStateData.newBuilder()<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        .setUserInfo(MasterProcedureUtil.toProtoUserInfo(getUser()))<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        .setParentRegionInfo(ProtobufUtil.toRegionInfo(getRegion()))<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        .addChildRegionInfo(ProtobufUtil.toRegionInfo(daughter_1_RI))<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        .addChildRegionInfo(ProtobufUtil.toRegionInfo(daughter_2_RI));<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    serializer.serialize(splitTableRegionMsg.build());<a name="line.407"></a>
+<span class="sourceLineNo">408</span>  }<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>  @Override<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      throws IOException {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    super.deserializeStateData(serializer);<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>    final MasterProcedureProtos.SplitTableRegionStateData splitTableRegionsMsg =<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        serializer.deserialize(MasterProcedureProtos.SplitTableRegionStateData.class);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    setUser(MasterProcedureUtil.toUserInfo(splitTableRegionsMsg.getUserInfo()));<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    setRegion(ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getParentRegionInfo()));<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    assert(splitTableRegionsMsg.getChildRegionInfoCount() == 2);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    daughter_1_RI = ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getChildRegionInfo(0));<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    daughter_2_RI = ProtobufUtil.toRegionInfo(splitTableRegionsMsg.getChildRegionInfo(1));<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 void toStringClassDetails(StringBuilder sb) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    sb.append(getClass().getSimpleName());<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    sb.append(" table=");<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    sb.append(getTableName());<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    sb.append(", parent=");<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    sb.append(getParentRegion().getShortNameToLog());<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    sb.append(", daughterA=");<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    sb.append(daughter_1_RI.getShortNameToLog());<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    sb.append(", daughterB=");<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    sb.append(daughter_2_RI.getShortNameToLog());<a name="line.434"></a>
 <span class="sourceLineNo">435</span>  }<a name="line.435"></a>
 <span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  @Override<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  public TableOperationType getTableOperationType() {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    return TableOperationType.REGION_SPLIT;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  @Override<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getSplitProcMetrics();<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>  private byte[] getSplitRow() {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    return daughter_2_RI.getStartKey();<a name="line.448"></a>
+<span class="sourceLineNo">437</span>  private RegionInfo getParentRegion() {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    return getRegion();<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 TableOperationType getTableOperationType() {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    return TableOperationType.REGION_SPLIT;<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  }<a name="line.444"></a>
+<span class="sourceLineNo">445</span><a name="line.445"></a>
+<span class="sourceLineNo">446</span>  @Override<a name="line.446"></a>
+<span class="sourceLineNo">447</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getSplitProcMetrics();<a name="line.448"></a>
 <span class="sourceLineNo">449</span>  }<a name="line.449"></a>
 <span class="sourceLineNo">450</span><a name="line.450"></a>
-<span class="sourceLineNo">451</span>  private static final State[] EXPECTED_SPLIT_STATES = new State[] { State.OPEN, State.CLOSED };<a name="line.451"></a>
-<span class="sourceLineNo">452</span><a name="line.452"></a>
-<span class="sourceLineNo">453</span>  /**<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * Prepare to Split region.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   * @param env MasterProcedureEnv<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   */<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  @VisibleForTesting<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  public boolean prepareSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    // Check whether the region is splittable<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    RegionStateNode node =<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>    if (node == null) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      throw new UnknownRegionException(getParentRegion().getRegionNameAsString());<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">451</span>  private byte[] getSplitRow() {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    return daughter_2_RI.getStartKey();<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>  private static final State[] EXPECTED_SPLIT_STATES = new State[] { State.OPEN, State.CLOSED };<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>  /**<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * Prepare to Split region.<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   * @param env MasterProcedureEnv<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   */<a name="line.460"></a>
+<span class="sourceLineNo">461</span>  @VisibleForTesting<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  public boolean prepareSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    // Check whether the region is splittable<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    RegionStateNode node =<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());<a name="line.465"></a>
 <span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    RegionInfo parentHRI = node.getRegionInfo();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    if (parentHRI == null) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      LOG.info("Unsplittable; parent region is null; node={}", node);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      return false;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    // Lookup the parent HRI state from the AM, which has the latest updated info.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // Protect against the case where concurrent SPLIT requests came in and succeeded<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    // just before us.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    if (node.isInState(State.SPLIT)) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      LOG.info("Split of " + parentHRI + " skipped; state is already SPLIT");<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      return false;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    }<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    if (parentHRI.isSplit() || parentHRI.isOffline()) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      LOG.info("Split of " + parentHRI + " skipped because offline/split.");<a name="line.480"></a>
+<span class="sourceLineNo">467</span>    if (node == null) {<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      throw new UnknownRegionException(getParentRegion().getRegionNameAsString());<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>    RegionInfo parentHRI = node.getRegionInfo();<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    if (parentHRI == null) {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      LOG.info("Unsplittable; parent region is null; node={}", node);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      return false;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    }<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    // Lookup the parent HRI state from the AM, which has the latest updated info.<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    // Protect against the case where concurrent SPLIT requests came in and succeeded<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    // just before us.<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    if (node.isInState(State.SPLIT)) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      LOG.info("Split of " + parentHRI + " skipped; state is already SPLIT");<a name="line.480"></a>
 <span class="sourceLineNo">481</span>      return false;<a name="line.481"></a>
 <span class="sourceLineNo">482</span>    }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>    // expected parent to be online or closed<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    if (!node.isInState(EXPECTED_SPLIT_STATES)) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      // We may have SPLIT already?<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      setFailure(new IOException("Split " + parentHRI.getRegionNameAsString() +<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          " FAILED because state=" + node.getState() + "; expected " +<a name="line.488"></a>
-<span class="sourceLineNo">489</span>          Arrays.toString(EXPECTED_SPLIT_STATES)));<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      return false;<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>    // Since we have the lock and the master is coordinating the operation<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    // we are always able to split the region<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    if (!env.getMasterServices().isSplitOrMergeEnabled(MasterSwitchType.SPLIT)) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      LOG.warn("pid=" + getProcId() + " split switch is off! skip split of " + parentHRI);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      setFailure(new IOException("Split region " + parentHRI.getRegionNameAsString() +<a name="line.497"></a>
-<span class="sourceLineNo">498</span>          " failed due to split switch off"));<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      return false;<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>    // set node state as SPLITTING<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    node.setState(State.SPLITTING);<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>    return true;<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>   * Action before splitting region in a table.<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   * @param env MasterProcedureEnv<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
-<span class="sourceLineNo">512</span>  private void preSplitRegion(final MasterProcedureEnv env)<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      throws IOException, InterruptedException {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    if (cpHost != null) {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      cpHost.preSplitRegionAction(getTableName(), getSplitRow(), getUser());<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    }<a name="line.517"></a>
-<span class="sourceLineNo">518</span><a name="line.518"></a>
-<span class="sourceLineNo">519</span>    // TODO: Clean up split and merge. Currently all over the place.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    // Notify QuotaManager and RegionNormalizer<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    try {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      env.getMasterServices().getMasterQuotaManager().onRegionSplit(this.getParentRegion());<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    } catch (QuotaExceededException e) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      env.getMasterServices().getRegionNormalizer().planSkipped(this.getParentRegion(),<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          NormalizationPlan.PlanType.SPLIT);<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      throw e;<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    }<a name="line.527"></a>
-<span class="sourceLineNo">528</span>  }<a name="line.528"></a>
-<span class="sourceLineNo">529</span><a name="line.529"></a>
-<span class="sourceLineNo">530</span>  /**<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * Action after rollback a split table region action.<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * @param env MasterProcedureEnv<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  private void postRollBackSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    if (cpHost != null) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      cpHost.postRollBackSplitRegionAction(getUser());<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>  /**<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   * Rollback close parent region<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * @param env MasterProcedureEnv<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   */<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  private void openParentRegion(final MasterProcedureEnv env) throws IOException {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    // Check whether the region is closed; if so, open it in the same server<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    final int regionReplication = getRegionReplication(env);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    final ServerName serverName = getParentRegionServerName(env);<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>    final AssignProcedure[] procs = new AssignProcedure[regionReplication];<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    for (int i = 0; i &lt; regionReplication; ++i) {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      final RegionInfo hri = RegionReplicaUtil.getRegionInfoForReplica(getParentRegion(), i);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      procs[i] = env.getAssignmentManager().createAssignProcedure(hri, serverName);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    }<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    env.getMasterServices().getMasterProcedureExecutor().submitProcedures(procs);<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>   * Create daughter regions<a name="line.559"></a>
-<span class="sourceLineNo">560</span>   * @param env MasterProcedureEnv<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   */<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  @VisibleForTesting<a name="line.562"></a>
-<span class="sourceLineNo">563</span>  public void createDaughterRegions(final MasterProcedureEnv env) throws IOException {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    final Path tabledir = FSUtils.getTableDir(mfs.getRootDir(), getTableName());<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    final FileSystem fs = mfs.getFileSystem();<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    HRegionFileSystem regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      env.getMasterConfiguration(), fs, tabledir, getParentRegion(), false);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    regionFs.createSplitsDir();<a name="line.569"></a>
-<span class="sourceLineNo">570</span><a name="line.570"></a>
-<span class="sourceLineNo">571</span>    Pair&lt;Integer, Integer&gt; expectedReferences = splitStoreFiles(env, regionFs);<a name="line.571"></a>
-<span class="sourceLineNo">572</span><a name="line.572"></a>
-<span class="sourceLineNo">573</span>    assertReferenceFileCount(fs, expectedReferences.getFirst(),<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      regionFs.getSplitsDir(daughter_1_RI));<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    //Move the files from the temporary .splits to the final /table/region directory<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    regionFs.commitDaughterRegion(daughter_1_RI);<a name="line.576"></a>
+<span class="sourceLineNo">483</span>    if (parentHRI.isSplit() || parentHRI.isOffline()) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      LOG.info("Split of " + parentHRI + " skipped because offline/split.");<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      return false;<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>    // expected parent to be online or closed<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    if (!node.isInState(EXPECTED_SPLIT_STATES)) {<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      // We may have SPLIT already?<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      setFailure(new IOException("Split " + parentHRI.getRegionNameAsString() +<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          " FAILED because state=" + node.getState() + "; expected " +<a name="line.492"></a>
+<span class="sourceLineNo">493</span>          Arrays.toString(EXPECTED_SPLIT_STATES)));<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      return false;<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>    // Since we have the lock and the master is coordinating the operation<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    // we are always able to split the region<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    if (!env.getMasterServices().isSplitOrMergeEnabled(MasterSwitchType.SPLIT)) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      LOG.warn("pid=" + getProcId() + " split switch is off! skip split of " + parentHRI);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      setFailure(new IOException("Split region " + parentHRI.getRegionNameAsString() +<a name="line.501"></a>
+<span class="sourceLineNo">502</span>          " failed due to split switch off"));<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      return false;<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>    // set node state as SPLITTING<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    node.setState(State.SPLITTING);<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return true;<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>  /**<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * Action before splitting region in a table.<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * @param env MasterProcedureEnv<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   */<a name="line.515"></a>
+<span class="sourceLineNo">516</span>  private void preSplitRegion(final MasterProcedureEnv env)<a name="line.516"></a>
+<span class="sourceLineNo">517</span>      throws IOException, InterruptedException {<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    if (cpHost != null) {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>      cpHost.preSplitRegionAction(getTableName(), getSplitRow(), getUser());<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    }<a name="line.521"></a>
+<span class="sourceLineNo">522</span><a name="line.522"></a>
+<span class="sourceLineNo">523</span>    // TODO: Clean up split and merge. Currently all over the place.<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    // Notify QuotaManager and RegionNormalizer<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    try {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      env.getMasterServices().getMasterQuotaManager().onRegionSplit(this.getParentRegion());<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    } catch (QuotaExceededException e) {<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      env.getMasterServices().getRegionNormalizer().planSkipped(this.getParentRegion(),<a name="line.528"></a>
+<span class="sourceLineNo">529</span>          NormalizationPlan.PlanType.SPLIT);<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      throw e;<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><a name="line.533"></a>
+<span class="sourceLineNo">534</span>  /**<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * Action after rollback a split table region action.<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * @param env MasterProcedureEnv<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   */<a name="line.537"></a>
+<span class="sourceLineNo">538</span>  private void postRollBackSplitRegion(final MasterProcedureEnv env) throws IOException {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    final MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    if (cpHost != null) {<a name="line.540"></a>
+<span class="sourceLineNo">541</span>      cpHost.postRollBackSplitRegionAction(getUser());<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>  /**<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   * Rollback close parent region<a name="line.546"></a>
+<span class="sourceLineNo">547</span>   * @param env MasterProcedureEnv<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   */<a name="line.548"></a>
+<span class="sourceLineNo">549</span>  private void openParentRegion(final MasterProcedureEnv env) throws IOException {<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    // Check whether the region is closed; if so, open it in the same server<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    final int regionReplication = getRegionReplication(env);<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    final ServerName serverName = getParentRegionServerName(env);<a name="line.552"></a>
+<span class="sourceLineNo">553</span><a name="line.553"></a>
+<span class="sourceLineNo">554</span>    final AssignProcedure[] procs = new AssignProcedure[regionReplication];<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    for (int i = 0; i &lt; regionReplication; ++i) {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>      final RegionInfo hri = RegionReplicaUtil.getRegionInfoForReplica(getParentRegion(), i);<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      procs[i] = env.getAssignmentManager().createAssignProcedure(hri, serverName);<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    }<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    env.getMasterServices().getMasterProcedureExecutor().submitProcedures(procs);<a name="line.559"></a>
+<span class="sourceLineNo">560</span>  }<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>  /**<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   * Create daughter regions<a name="line.563"></a>
+<span class="sourceLineNo">564</span>   * @param env MasterProcedureEnv<a name="line.564"></a>
+<span class="sourceLineNo">565</span>   */<a name="line.565"></a>
+<span class="sourceLineNo">566</span>  @VisibleForTesting<a name="line.566"></a>
+<span class="sourceLineNo">567</span>  public void createDaughterRegions(final MasterProcedureEnv env) throws IOException {<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.568"></a>
+<span class="sourceLineNo">569</span>    final Path tabledir = FSUtils.getTableDir(mfs.getRootDir(), getTableName());<a name="line.569"></a>
+<span class="sourceLineNo">570</span>    final FileSystem fs = mfs.getFileSystem();<a name="line.570"></a>
+<span class="sourceLineNo">571</span>    HRegionFileSystem regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.571"></a>
+<span class="sourceLineNo">572</span>      env.getMasterConfiguration(), fs, tabledir, getParentRegion(), false);<a name="line.572"></a>
+<span class="sourceLineNo">573</span>    regionFs.createSplitsDir();<a name="line.573"></a>
+<span class="sourceLineNo">574</span><a name="line.574"></a>
+<span class="sourceLineNo">575</span>    Pair&lt;Integer, Integer&gt; expectedReferences = splitStoreFiles(env, regionFs);<a name="line.575"></a>
+<span class="sourceLineNo">576</span><a name="line.576"></a>
 <span class="sourceLineNo">577</span>    assertReferenceFileCount(fs, expectedReferences.getFirst(),<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      new Path(tabledir, daughter_1_RI.getEncodedName()));<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>    assertReferenceFileCount(fs, expectedReferences.getSecond(),<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      regionFs.getSplitsDir(daughter_2_RI));<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    regionFs.commitDaughterRegion(daughter_2_RI);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    assertReferenceFileCount(fs, expectedReferences.getSecond(),<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      new Path(tabledir, daughter_2_RI.getEncodedName()));<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  }<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>  /**<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * Create Split directory<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param env MasterProcedureEnv<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   */<a name="line.590"></a>
-<span class="sourceLineNo">591</span>  private Pair&lt;Integer, Integer&gt; splitSt

<TRUNCATED>

[02/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/testdevapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html
index 84a0b52..9c2a5bf 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html
@@ -25,244 +25,212 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.io.asyncfs;<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.hdfs.DFSConfigKeys.DFS_BLOCK_ACCESS_TOKEN_ENABLE_KEY;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_CLIENT_SOCKET_TIMEOUT_KEY;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_HTTPS_ADDRESS_KEY;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_KERBEROS_PRINCIPAL_KEY;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_KEYTAB_FILE_KEY;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATA_ENCRYPTION_ALGORITHM_KEY;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_KEY;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_HTTP_POLICY_KEY;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_HTTPS_ADDRESS_KEY;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_KEYTAB_FILE_KEY;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_WEB_AUTHENTICATION_KERBEROS_PRINCIPAL_KEY;<a name="line.32"></a>
-<span class="sourceLineNo">033</span><a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.io.File;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.io.IOException;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.lang.reflect.Method;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.net.URI;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.ArrayList;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.Arrays;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.List;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.concurrent.ExecutionException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.commons.lang3.StringUtils;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.conf.Configuration;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.crypto.key.KeyProvider;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.crypto.key.KeyProviderFactory;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.fs.Path;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.http.ssl.KeyStoreTestUtil;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.security.HBaseKerberosUtils;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.security.token.TestGenerateDelegationToken;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hdfs.DistributedFileSystem;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.http.HttpConfig;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.minikdc.MiniKdc;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.junit.After;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.junit.AfterClass;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.junit.Before;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.junit.BeforeClass;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.junit.ClassRule;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.junit.Rule;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.junit.Test;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.junit.experimental.categories.Category;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.junit.rules.TestName;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.junit.runner.RunWith;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.junit.runners.Parameterized;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.junit.runners.Parameterized.Parameter;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.junit.runners.Parameterized.Parameters;<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hbase.thirdparty.io.netty.channel.EventLoop;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hbase.thirdparty.io.netty.channel.EventLoopGroup;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hbase.thirdparty.io.netty.channel.nio.NioEventLoopGroup;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hbase.thirdparty.io.netty.channel.socket.nio.NioSocketChannel;<a name="line.77"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_CLIENT_SOCKET_TIMEOUT_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATA_ENCRYPTION_ALGORITHM_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_KEY;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.File;<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.lang.reflect.Method;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.net.URI;<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.List;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.concurrent.ExecutionException;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.commons.lang3.StringUtils;<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.crypto.CipherSuite;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.crypto.key.KeyProvider;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.crypto.key.KeyProviderFactory;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.fs.Path;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.security.HBaseKerberosUtils;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hdfs.DistributedFileSystem;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.minikdc.MiniKdc;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.junit.After;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.junit.AfterClass;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.junit.Before;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.junit.BeforeClass;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.junit.ClassRule;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.junit.Rule;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.junit.Test;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.junit.experimental.categories.Category;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.junit.rules.TestName;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.junit.runner.RunWith;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.junit.runners.Parameterized;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.junit.runners.Parameterized.Parameter;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.junit.runners.Parameterized.Parameters;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hbase.thirdparty.io.netty.channel.EventLoop;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hbase.thirdparty.io.netty.channel.EventLoopGroup;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hbase.thirdparty.io.netty.channel.nio.NioEventLoopGroup;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hbase.thirdparty.io.netty.channel.socket.nio.NioSocketChannel;<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>@RunWith(Parameterized.class)<a name="line.67"></a>
+<span class="sourceLineNo">068</span>@Category({ MiscTests.class, LargeTests.class })<a name="line.68"></a>
+<span class="sourceLineNo">069</span>public class TestSaslFanOutOneBlockAsyncDFSOutput {<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>  @ClassRule<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      HBaseClassTestRule.forClass(TestSaslFanOutOneBlockAsyncDFSOutput.class);<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private static DistributedFileSystem FS;<a name="line.77"></a>
 <span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>@RunWith(Parameterized.class)<a name="line.79"></a>
-<span class="sourceLineNo">080</span>@Category({ MiscTests.class, LargeTests.class })<a name="line.80"></a>
-<span class="sourceLineNo">081</span>public class TestSaslFanOutOneBlockAsyncDFSOutput {<a name="line.81"></a>
+<span class="sourceLineNo">079</span>  private static EventLoopGroup EVENT_LOOP_GROUP;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private static Class&lt;? extends Channel&gt; CHANNEL_CLASS;<a name="line.81"></a>
 <span class="sourceLineNo">082</span><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(TestSaslFanOutOneBlockAsyncDFSOutput.class);<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  private static DistributedFileSystem FS;<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private static EventLoopGroup EVENT_LOOP_GROUP;<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private static Class&lt;? extends Channel&gt; CHANNEL_CLASS;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private static int READ_TIMEOUT_MS = 200000;<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private static final File KEYTAB_FILE =<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    new File(TEST_UTIL.getDataTestDir("keytab").toUri().getPath());<a name="line.98"></a>
+<span class="sourceLineNo">083</span>  private static int READ_TIMEOUT_MS = 200000;<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private static final File KEYTAB_FILE =<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    new File(TEST_UTIL.getDataTestDir("keytab").toUri().getPath());<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private static MiniKdc KDC;<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private static String HOST = "localhost";<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private static String USERNAME;<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private static String PRINCIPAL;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private static String HTTP_PRINCIPAL;<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>  private static String TEST_KEY_NAME = "test_key";<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>  private static MiniKdc KDC;<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>  private static String HOST = "localhost";<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private static String USERNAME;<a name="line.104"></a>
+<span class="sourceLineNo">100</span>  @Rule<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  public TestName name = new TestName();<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  @Parameter(0)<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public String protection;<a name="line.104"></a>
 <span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>  private static String PRINCIPAL;<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  private static String HTTP_PRINCIPAL;<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  private static String TEST_KEY_NAME = "test_key";<a name="line.110"></a>
+<span class="sourceLineNo">106</span>  @Parameter(1)<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public String encryptionAlgorithm;<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>  @Parameter(2)<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public String cipherSuite;<a name="line.110"></a>
 <span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  @Rule<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  public TestName name = new TestName();<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>  @Parameter(0)<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public String protection;<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  @Parameter(1)<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  public String encryptionAlgorithm;<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  @Parameter(2)<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public String cipherSuite;<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  @Parameters(name = "{index}: protection={0}, encryption={1}, cipherSuite={2}")<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  public static Iterable&lt;Object[]&gt; data() {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    List&lt;Object[]&gt; params = new ArrayList&lt;&gt;();<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    for (String protection : Arrays.asList("authentication", "integrity", "privacy")) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      for (String encryptionAlgorithm : Arrays.asList("", "3des", "rc4")) {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        for (String cipherSuite : Arrays.asList("", CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>          params.add(new Object[] { protection, encryptionAlgorithm, cipherSuite });<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        }<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    return params;<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>  private static void setHdfsSecuredConfiguration(Configuration conf) throws Exception {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    conf.set(DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY, PRINCIPAL + "@" + KDC.getRealm());<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    conf.set(DFS_NAMENODE_KEYTAB_FILE_KEY, KEYTAB_FILE.getAbsolutePath());<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    conf.set(DFS_DATANODE_KERBEROS_PRINCIPAL_KEY, PRINCIPAL + "@" + KDC.getRealm());<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    conf.set(DFS_DATANODE_KEYTAB_FILE_KEY, KEYTAB_FILE.getAbsolutePath());<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    conf.set(DFS_WEB_AUTHENTICATION_KERBEROS_PRINCIPAL_KEY, HTTP_PRINCIPAL + "@" + KDC.getRealm());<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    conf.setBoolean(DFS_BLOCK_ACCESS_TOKEN_ENABLE_KEY, true);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    conf.set(DFS_HTTP_POLICY_KEY, HttpConfig.Policy.HTTPS_ONLY.name());<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    conf.set(DFS_NAMENODE_HTTPS_ADDRESS_KEY, "localhost:0");<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    conf.set(DFS_DATANODE_HTTPS_ADDRESS_KEY, "localhost:0");<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>    File keystoresDir = new File(TEST_UTIL.getDataTestDir("keystore").toUri().getPath());<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    keystoresDir.mkdirs();<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    String sslConfDir = KeyStoreTestUtil.getClasspathDir(TestGenerateDelegationToken.class);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    KeyStoreTestUtil.setupSSLConfig(keystoresDir.getAbsolutePath(), sslConfDir, conf, false);<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>    conf.setBoolean("ignore.secure.ports.for.testing", true);<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 void setUpKeyProvider(Configuration conf) throws Exception {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    URI keyProviderUri =<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      new URI("jceks://file" + TEST_UTIL.getDataTestDir("test.jks").toUri().toString());<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    conf.set("dfs.encryption.key.provider.uri", keyProviderUri.toString());<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    KeyProvider keyProvider = KeyProviderFactory.get(keyProviderUri, conf);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    keyProvider.createKey(TEST_KEY_NAME, KeyProvider.options(conf));<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    keyProvider.flush();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    keyProvider.close();<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
+<span class="sourceLineNo">112</span>  @Parameters(name = "{index}: protection={0}, encryption={1}, cipherSuite={2}")<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  public static Iterable&lt;Object[]&gt; data() {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    List&lt;Object[]&gt; params = new ArrayList&lt;&gt;();<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    for (String protection : Arrays.asList("authentication", "integrity", "privacy")) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      for (String encryptionAlgorithm : Arrays.asList("", "3des", "rc4")) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        for (String cipherSuite : Arrays.asList("", CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>          params.add(new Object[] { protection, encryptionAlgorithm, cipherSuite });<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>    return params;<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>  private static void setUpKeyProvider(Configuration conf) throws Exception {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    URI keyProviderUri =<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      new URI("jceks://file" + TEST_UTIL.getDataTestDir("test.jks").toUri().toString());<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    conf.set("dfs.encryption.key.provider.uri", keyProviderUri.toString());<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    KeyProvider keyProvider = KeyProviderFactory.get(keyProviderUri, conf);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    keyProvider.createKey(TEST_KEY_NAME, KeyProvider.options(conf));<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    keyProvider.flush();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    keyProvider.close();<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  }<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  @BeforeClass<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public static void setUpBeforeClass() throws Exception {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    EVENT_LOOP_GROUP = new NioEventLoopGroup();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    CHANNEL_CLASS = NioSocketChannel.class;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    TEST_UTIL.getConfiguration().setInt(DFS_CLIENT_SOCKET_TIMEOUT_KEY, READ_TIMEOUT_MS);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    KDC = TEST_UTIL.setupMiniKdc(KEYTAB_FILE);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    USERNAME = UserGroupInformation.getLoginUser().getShortUserName();<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    PRINCIPAL = USERNAME + "/" + HOST;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    HTTP_PRINCIPAL = "HTTP/" + HOST;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    KDC.createPrincipal(KEYTAB_FILE, PRINCIPAL, HTTP_PRINCIPAL);<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    setUpKeyProvider(TEST_UTIL.getConfiguration());<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    HBaseKerberosUtils.setSecuredConfiguration(TEST_UTIL.getConfiguration(),<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        PRINCIPAL + "@" + KDC.getRealm(), HTTP_PRINCIPAL + "@" + KDC.getRealm());<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    HBaseKerberosUtils.setSSLConfiguration(TEST_UTIL, TestSaslFanOutOneBlockAsyncDFSOutput.class);<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>  @AfterClass<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  public static void tearDownAfterClass() throws IOException, InterruptedException {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    if (EVENT_LOOP_GROUP != null) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      EVENT_LOOP_GROUP.shutdownGracefully().sync();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    if (KDC != null) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      KDC.stop();<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  private Path testDirOnTestFs;<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  private Path entryptionTestDirOnTestFs;<a name="line.164"></a>
 <span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  @BeforeClass<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public static void setUpBeforeClass() throws Exception {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    EVENT_LOOP_GROUP = new NioEventLoopGroup();<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    CHANNEL_CLASS = NioSocketChannel.class;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    TEST_UTIL.getConfiguration().setInt(DFS_CLIENT_SOCKET_TIMEOUT_KEY, READ_TIMEOUT_MS);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    KDC = TEST_UTIL.setupMiniKdc(KEYTAB_FILE);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    USERNAME = UserGroupInformation.getLoginUser().getShortUserName();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    PRINCIPAL = USERNAME + "/" + HOST;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    HTTP_PRINCIPAL = "HTTP/" + HOST;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    KDC.createPrincipal(KEYTAB_FILE, PRINCIPAL, HTTP_PRINCIPAL);<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>    setUpKeyProvider(TEST_UTIL.getConfiguration());<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    setHdfsSecuredConfiguration(TEST_UTIL.getConfiguration());<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    HBaseKerberosUtils.setPrincipalForTesting(PRINCIPAL + "@" + KDC.getRealm());<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    HBaseKerberosUtils.setSecuredConfiguration(TEST_UTIL.getConfiguration());<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    UserGroupInformation.setConfiguration(TEST_UTIL.getConfiguration());<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>  @AfterClass<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  public static void tearDownAfterClass() throws IOException, InterruptedException {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    if (EVENT_LOOP_GROUP != null) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      EVENT_LOOP_GROUP.shutdownGracefully().sync();<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    }<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    if (KDC != null) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      KDC.stop();<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  private Path testDirOnTestFs;<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>  private Path entryptionTestDirOnTestFs;<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  private void createEncryptionZone() throws Exception {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    Method method =<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      DistributedFileSystem.class.getMethod("createEncryptionZone", Path.class, String.class);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    method.invoke(FS, entryptionTestDirOnTestFs, TEST_KEY_NAME);<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>  @Before<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  public void setUp() throws Exception {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    TEST_UTIL.getConfiguration().set("dfs.data.transfer.protection", protection);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    if (StringUtils.isBlank(encryptionAlgorithm) &amp;&amp; StringUtils.isBlank(cipherSuite)) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      TEST_UTIL.getConfiguration().setBoolean(DFS_ENCRYPT_DATA_TRANSFER_KEY, false);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    } else {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      TEST_UTIL.getConfiguration().setBoolean(DFS_ENCRYPT_DATA_TRANSFER_KEY, true);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    if (StringUtils.isBlank(encryptionAlgorithm)) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      TEST_UTIL.getConfiguration().unset(DFS_DATA_ENCRYPTION_ALGORITHM_KEY);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    } else {<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      TEST_UTIL.getConfiguration().set(DFS_DATA_ENCRYPTION_ALGORITHM_KEY, encryptionAlgorithm);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    if (StringUtils.isBlank(cipherSuite)) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      TEST_UTIL.getConfiguration().unset(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    } else {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      TEST_UTIL.getConfiguration().set(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuite);<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>    TEST_UTIL.startMiniDFSCluster(3);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    FS = TEST_UTIL.getDFSCluster().getFileSystem();<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    testDirOnTestFs = new Path("/" + name.getMethodName().replaceAll("[^0-9a-zA-Z]", "_"));<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    FS.mkdirs(testDirOnTestFs);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    entryptionTestDirOnTestFs = new Path("/" + testDirOnTestFs.getName() + "_enc");<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    FS.mkdirs(entryptionTestDirOnTestFs);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    createEncryptionZone();<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>  @After<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  public void tearDown() throws IOException {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    TEST_UTIL.shutdownMiniDFSCluster();<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  }<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>  private Path getTestFile() {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    return new Path(testDirOnTestFs, "test");<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>  private Path getEncryptionTestFile() {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    return new Path(entryptionTestDirOnTestFs, "test");<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>  private void test(Path file) throws IOException, InterruptedException, ExecutionException {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    EventLoop eventLoop = EVENT_LOOP_GROUP.next();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    FanOutOneBlockAsyncDFSOutput out = FanOutOneBlockAsyncDFSOutputHelper.createOutput(FS, file,<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      true, false, (short) 3, FS.getDefaultBlockSize(), eventLoop, CHANNEL_CLASS);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    TestFanOutOneBlockAsyncDFSOutput.writeAndVerify(FS, file, out);<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>  @Test<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  public void test() throws IOException, InterruptedException, ExecutionException {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    test(getTestFile());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    test(getEncryptionTestFile());<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">166</span>  private void createEncryptionZone() throws Exception {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    Method method =<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      DistributedFileSystem.class.getMethod("createEncryptionZone", Path.class, String.class);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    method.invoke(FS, entryptionTestDirOnTestFs, TEST_KEY_NAME);<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>  @Before<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public void setUp() throws Exception {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    TEST_UTIL.getConfiguration().set("dfs.data.transfer.protection", protection);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    if (StringUtils.isBlank(encryptionAlgorithm) &amp;&amp; StringUtils.isBlank(cipherSuite)) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      TEST_UTIL.getConfiguration().setBoolean(DFS_ENCRYPT_DATA_TRANSFER_KEY, false);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    } else {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      TEST_UTIL.getConfiguration().setBoolean(DFS_ENCRYPT_DATA_TRANSFER_KEY, true);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    if (StringUtils.isBlank(encryptionAlgorithm)) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      TEST_UTIL.getConfiguration().unset(DFS_DATA_ENCRYPTION_ALGORITHM_KEY);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    } else {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      TEST_UTIL.getConfiguration().set(DFS_DATA_ENCRYPTION_ALGORITHM_KEY, encryptionAlgorithm);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    if (StringUtils.isBlank(cipherSuite)) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      TEST_UTIL.getConfiguration().unset(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    } else {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      TEST_UTIL.getConfiguration().set(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuite);<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>    TEST_UTIL.startMiniDFSCluster(3);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    FS = TEST_UTIL.getDFSCluster().getFileSystem();<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    testDirOnTestFs = new Path("/" + name.getMethodName().replaceAll("[^0-9a-zA-Z]", "_"));<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    FS.mkdirs(testDirOnTestFs);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    entryptionTestDirOnTestFs = new Path("/" + testDirOnTestFs.getName() + "_enc");<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    FS.mkdirs(entryptionTestDirOnTestFs);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    createEncryptionZone();<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>  @After<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  public void tearDown() throws IOException {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    TEST_UTIL.shutdownMiniDFSCluster();<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>  private Path getTestFile() {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    return new Path(testDirOnTestFs, "test");<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>  private Path getEncryptionTestFile() {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    return new Path(entryptionTestDirOnTestFs, "test");<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 void test(Path file) throws IOException, InterruptedException, ExecutionException {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    EventLoop eventLoop = EVENT_LOOP_GROUP.next();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    FanOutOneBlockAsyncDFSOutput out = FanOutOneBlockAsyncDFSOutputHelper.createOutput(FS, file,<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      true, false, (short) 3, FS.getDefaultBlockSize(), eventLoop, CHANNEL_CLASS);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    TestFanOutOneBlockAsyncDFSOutput.writeAndVerify(FS, file, out);<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>  @Test<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  public void test() throws IOException, InterruptedException, ExecutionException {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    test(getTestFile());<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    test(getEncryptionTestFile());<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMergeTableRegionsWhileRSCrash.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMergeTableRegionsWhileRSCrash.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMergeTableRegionsWhileRSCrash.html
index 3530266..d1141a5 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMergeTableRegionsWhileRSCrash.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMergeTableRegionsWhileRSCrash.html
@@ -127,15 +127,8 @@
 <span class="sourceLineNo">119</span>      count++;<a name="line.119"></a>
 <span class="sourceLineNo">120</span>    }<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    Assert.assertEquals("There should be 10 rows!", 10, count);<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><a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span><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">122</span>  }<a name="line.122"></a>
+<span class="sourceLineNo">123</span>}<a name="line.123"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/testdevapidocs/src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html
index 3e37614..6d27597 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/HBaseKerberosUtils.html
@@ -25,114 +25,180 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.security;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import org.apache.hadoop.conf.Configuration;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.fs.CommonConfigurationKeys;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.AuthUtil;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.slf4j.Logger;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.slf4j.LoggerFactory;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hbase.thirdparty.com.google.common.base.Strings;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.io.IOException;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.net.InetAddress;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>@InterfaceAudience.Private<a name="line.33"></a>
-<span class="sourceLineNo">034</span>public class HBaseKerberosUtils {<a name="line.34"></a>
-<span class="sourceLineNo">035</span>  private static final Logger LOG = LoggerFactory.getLogger(HBaseKerberosUtils.class);<a name="line.35"></a>
-<span class="sourceLineNo">036</span><a name="line.36"></a>
-<span class="sourceLineNo">037</span>  public static final String KRB_PRINCIPAL = "hbase.regionserver.kerberos.principal";<a name="line.37"></a>
-<span class="sourceLineNo">038</span>  public static final String MASTER_KRB_PRINCIPAL = "hbase.master.kerberos.principal";<a name="line.38"></a>
-<span class="sourceLineNo">039</span>  public static final String KRB_KEYTAB_FILE = "hbase.regionserver.keytab.file";<a name="line.39"></a>
-<span class="sourceLineNo">040</span>  public static final String CLIENT_PRINCIPAL = AuthUtil.HBASE_CLIENT_KERBEROS_PRINCIPAL;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>  public static final String CLIENT_KEYTAB = AuthUtil.HBASE_CLIENT_KEYTAB_FILE;<a name="line.41"></a>
+<span class="sourceLineNo">020</span>import java.io.File;<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><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.fs.CommonConfigurationKeys;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.AuthUtil;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.HBaseConfiguration;<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.http.ssl.KeyStoreTestUtil;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hdfs.DFSConfigKeys;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.http.HttpConfig;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.yarn.conf.YarnConfiguration;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.slf4j.Logger;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.slf4j.LoggerFactory;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hbase.thirdparty.com.google.common.base.Strings;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>@InterfaceAudience.Private<a name="line.39"></a>
+<span class="sourceLineNo">040</span>public class HBaseKerberosUtils {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  private static final Logger LOG = LoggerFactory.getLogger(HBaseKerberosUtils.class);<a name="line.41"></a>
 <span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>  public static boolean isKerberosPropertySetted() {<a name="line.43"></a>
-<span class="sourceLineNo">044</span>    String krbPrincipal = System.getProperty(KRB_PRINCIPAL);<a name="line.44"></a>
-<span class="sourceLineNo">045</span>    String krbKeytab = System.getProperty(KRB_KEYTAB_FILE);<a name="line.45"></a>
-<span class="sourceLineNo">046</span>    if (Strings.isNullOrEmpty(krbPrincipal) || Strings.isNullOrEmpty(krbKeytab)) {<a name="line.46"></a>
-<span class="sourceLineNo">047</span>      return false;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    }<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    return true;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  }<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  public static void setPrincipalForTesting(String principal) {<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    setSystemProperty(KRB_PRINCIPAL, principal);<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  }<a name="line.54"></a>
-<span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  public static void setKeytabFileForTesting(String keytabFile) {<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    setSystemProperty(KRB_KEYTAB_FILE, keytabFile);<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>  public static void setClientPrincipalForTesting(String clientPrincipal) {<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    setSystemProperty(CLIENT_PRINCIPAL, clientPrincipal);<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>  public static void setClientKeytabForTesting(String clientKeytab) {<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    setSystemProperty(CLIENT_KEYTAB, clientKeytab);<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>  public static void setSystemProperty(String propertyName, String propertyValue) {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    System.setProperty(propertyName, propertyValue);<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 static String getKeytabFileForTesting() {<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    return System.getProperty(KRB_KEYTAB_FILE);<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 static String getPrincipalForTesting() {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    return System.getProperty(KRB_PRINCIPAL);<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 static String getClientPrincipalForTesting() {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    return System.getProperty(CLIENT_PRINCIPAL);<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 static String getClientKeytabForTesting() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    return System.getProperty(CLIENT_KEYTAB);<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 static Configuration getConfigurationWoPrincipal() {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    Configuration conf = HBaseConfiguration.create();<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    conf.set(CommonConfigurationKeys.HADOOP_SECURITY_AUTHENTICATION, "kerberos");<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    conf.set(User.HBASE_SECURITY_CONF_KEY, "kerberos");<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    conf.setBoolean(User.HBASE_SECURITY_AUTHORIZATION_CONF_KEY, true);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    return conf;<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 static Configuration getSecuredConfiguration() {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    Configuration conf = HBaseConfiguration.create();<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    setSecuredConfiguration(conf);<a name="line.98"></a>
+<span class="sourceLineNo">043</span>  public static final String KRB_PRINCIPAL = "hbase.regionserver.kerberos.principal";<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  public static final String MASTER_KRB_PRINCIPAL = "hbase.master.kerberos.principal";<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  public static final String KRB_KEYTAB_FILE = "hbase.regionserver.keytab.file";<a name="line.45"></a>
+<span class="sourceLineNo">046</span>  public static final String CLIENT_PRINCIPAL = AuthUtil.HBASE_CLIENT_KERBEROS_PRINCIPAL;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  public static final String CLIENT_KEYTAB = AuthUtil.HBASE_CLIENT_KEYTAB_FILE;<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  public static boolean isKerberosPropertySetted() {<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    String krbPrincipal = System.getProperty(KRB_PRINCIPAL);<a name="line.50"></a>
+<span class="sourceLineNo">051</span>    String krbKeytab = System.getProperty(KRB_KEYTAB_FILE);<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    if (Strings.isNullOrEmpty(krbPrincipal) || Strings.isNullOrEmpty(krbKeytab)) {<a name="line.52"></a>
+<span class="sourceLineNo">053</span>      return false;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    }<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    return true;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  }<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public static void setPrincipalForTesting(String principal) {<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    setSystemProperty(KRB_PRINCIPAL, principal);<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>  public static void setKeytabFileForTesting(String keytabFile) {<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    setSystemProperty(KRB_KEYTAB_FILE, keytabFile);<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>  public static void setClientPrincipalForTesting(String clientPrincipal) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    setSystemProperty(CLIENT_PRINCIPAL, clientPrincipal);<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 void setClientKeytabForTesting(String clientKeytab) {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    setSystemProperty(CLIENT_KEYTAB, clientKeytab);<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>  public static void setSystemProperty(String propertyName, String propertyValue) {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    System.setProperty(propertyName, propertyValue);<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>  public static String getKeytabFileForTesting() {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    return System.getProperty(KRB_KEYTAB_FILE);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  public static String getPrincipalForTesting() {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    return System.getProperty(KRB_PRINCIPAL);<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>  public static String getClientPrincipalForTesting() {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    return System.getProperty(CLIENT_PRINCIPAL);<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>  public static String getClientKeytabForTesting() {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    return System.getProperty(CLIENT_KEYTAB);<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>  public static Configuration getConfigurationWoPrincipal() {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    Configuration conf = HBaseConfiguration.create();<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    conf.set(CommonConfigurationKeys.HADOOP_SECURITY_AUTHENTICATION, "kerberos");<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    conf.set(User.HBASE_SECURITY_CONF_KEY, "kerberos");<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    conf.setBoolean(User.HBASE_SECURITY_AUTHORIZATION_CONF_KEY, true);<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    return conf;<a name="line.99"></a>
 <span class="sourceLineNo">100</span>  }<a name="line.100"></a>
 <span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>  public static void setSecuredConfiguration(Configuration conf) {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    conf.set(CommonConfigurationKeys.HADOOP_SECURITY_AUTHENTICATION, "kerberos");<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    conf.set(User.HBASE_SECURITY_CONF_KEY, "kerberos");<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    conf.setBoolean(User.HBASE_SECURITY_AUTHORIZATION_CONF_KEY, true);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    conf.set(KRB_KEYTAB_FILE, System.getProperty(KRB_KEYTAB_FILE));<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    conf.set(KRB_PRINCIPAL, System.getProperty(KRB_PRINCIPAL));<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    conf.set(MASTER_KRB_PRINCIPAL, System.getProperty(KRB_PRINCIPAL));<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 static UserGroupInformation loginAndReturnUGI(Configuration conf, String username)<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      throws IOException {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    String hostname = InetAddress.getLocalHost().getHostName();<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    String keyTabFileConfKey = "hbase." + username + ".keytab.file";<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    String keyTabFileLocation = conf.get(keyTabFileConfKey);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    String principalConfKey = "hbase." + username + ".kerberos.principal";<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    String principal = org.apache.hadoop.security.SecurityUtil<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        .getServerPrincipal(conf.get(principalConfKey), hostname);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    if (keyTabFileLocation == null || principal == null) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      LOG.warn("Principal or key tab file null for : " + principalConfKey + ", "<a name="line.120"></a>
-<span class="sourceLineNo">121</span>          + keyTabFileConfKey);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    UserGroupInformation ugi =<a name="line.123"></a>
-<span class="sourceLineNo">124</span>        UserGroupInformation.loginUserFromKeytabAndReturnUGI(principal, keyTabFileLocation);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return ugi;<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">102</span>  public static Configuration getSecuredConfiguration() {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    Configuration conf = HBaseConfiguration.create();<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    setSecuredConfiguration(conf);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    return conf;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * Set up configuration for a secure HDFS+HBase cluster.<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * @param conf configuration object.<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * @param servicePrincipal service principal used by NN, HM and RS.<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   * @param spnegoPrincipal SPNEGO principal used by NN web UI.<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   */<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  public static void setSecuredConfiguration(Configuration conf,<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      String servicePrincipal, String spnegoPrincipal) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    setPrincipalForTesting(servicePrincipal);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    setSecuredConfiguration(conf);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    setSecuredHadoopConfiguration(conf, spnegoPrincipal);<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 void setSecuredConfiguration(Configuration conf) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    conf.set(CommonConfigurationKeys.HADOOP_SECURITY_AUTHENTICATION, "kerberos");<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    conf.set(User.HBASE_SECURITY_CONF_KEY, "kerberos");<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    conf.setBoolean(User.HBASE_SECURITY_AUTHORIZATION_CONF_KEY, true);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    conf.set(KRB_KEYTAB_FILE, System.getProperty(KRB_KEYTAB_FILE));<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    conf.set(KRB_PRINCIPAL, System.getProperty(KRB_PRINCIPAL));<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    conf.set(MASTER_KRB_PRINCIPAL, System.getProperty(KRB_PRINCIPAL));<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>  private static void setSecuredHadoopConfiguration(Configuration conf,<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      String spnegoServerPrincipal) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    // if we drop support for hadoop-2.4.0 and hadoop-2.4.1,<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    // the following key should be changed.<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    // 1) DFS_NAMENODE_USER_NAME_KEY -&gt; DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    // 2) DFS_DATANODE_USER_NAME_KEY -&gt; DFS_DATANODE_KERBEROS_PRINCIPAL_KEY<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    String serverPrincipal = System.getProperty(KRB_PRINCIPAL);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    String keytabFilePath = System.getProperty(KRB_KEYTAB_FILE);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    // HDFS<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    conf.set(DFSConfigKeys.DFS_NAMENODE_USER_NAME_KEY, serverPrincipal);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    conf.set(DFSConfigKeys.DFS_NAMENODE_KEYTAB_FILE_KEY, keytabFilePath);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    conf.set(DFSConfigKeys.DFS_DATANODE_USER_NAME_KEY, serverPrincipal);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    conf.set(DFSConfigKeys.DFS_DATANODE_KEYTAB_FILE_KEY, keytabFilePath);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    conf.setBoolean(DFSConfigKeys.DFS_BLOCK_ACCESS_TOKEN_ENABLE_KEY, true);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    // YARN<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    conf.set(YarnConfiguration.RM_PRINCIPAL, KRB_PRINCIPAL);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    conf.set(YarnConfiguration.NM_PRINCIPAL, KRB_PRINCIPAL);<a name="line.146"></a>
+<span class="sourceLineNo">147</span><a name="line.147"></a>
+<span class="sourceLineNo">148</span>    if (spnegoServerPrincipal != null) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      conf.set(DFSConfigKeys.DFS_WEB_AUTHENTICATION_KERBEROS_PRINCIPAL_KEY,<a name="line.149"></a>
+<span class="sourceLineNo">150</span>          spnegoServerPrincipal);<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>    conf.setBoolean("ignore.secure.ports.for.testing", true);<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>    UserGroupInformation.setConfiguration(conf);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  }<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>  /**<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * Set up SSL configuration for HDFS NameNode and DataNode.<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   * @param utility a HBaseTestingUtility object.<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   * @param clazz the caller test class.<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   * @throws Exception if unable to set up SSL configuration<a name="line.162"></a>
+<span class="sourceLineNo">163</span>   */<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  public static void setSSLConfiguration(HBaseTestingUtility utility, Class clazz)<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      throws Exception {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    Configuration conf = utility.getConfiguration();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    conf.set(DFSConfigKeys.DFS_HTTP_POLICY_KEY, HttpConfig.Policy.HTTPS_ONLY.name());<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    conf.set(DFSConfigKeys.DFS_NAMENODE_HTTPS_ADDRESS_KEY, "localhost:0");<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    conf.set(DFSConfigKeys.DFS_DATANODE_HTTPS_ADDRESS_KEY, "localhost:0");<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>    File keystoresDir = new File(utility.getDataTestDir("keystore").toUri().getPath());<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    keystoresDir.mkdirs();<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    String sslConfDir = KeyStoreTestUtil.getClasspathDir(clazz);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    KeyStoreTestUtil.setupSSLConfig(keystoresDir.getAbsolutePath(), sslConfDir, conf, false);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  }<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>  public static UserGroupInformation loginAndReturnUGI(Configuration conf, String username)<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      throws IOException {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    String hostname = InetAddress.getLocalHost().getHostName();<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    String keyTabFileConfKey = "hbase." + username + ".keytab.file";<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    String keyTabFileLocation = conf.get(keyTabFileConfKey);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    String principalConfKey = "hbase." + username + ".kerberos.principal";<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    String principal = org.apache.hadoop.security.SecurityUtil<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        .getServerPrincipal(conf.get(principalConfKey), hostname);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    if (keyTabFileLocation == null || principal == null) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      LOG.warn("Principal or key tab file null for : " + principalConfKey + ", "<a name="line.186"></a>
+<span class="sourceLineNo">187</span>          + keyTabFileConfKey);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    UserGroupInformation ugi =<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        UserGroupInformation.loginUserFromKeytabAndReturnUGI(principal, keyTabFileLocation);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    return ugi;<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>
 
 
 


[05/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html
index 2d4b456..49923ac 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.90">TestSecureExport</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.85">TestSecureExport</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>
@@ -359,7 +359,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.92">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.87">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -368,7 +368,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.95">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.90">LOG</a></pre>
 </li>
 </ul>
 <a name="UTIL">
@@ -377,7 +377,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>UTIL</h4>
-<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.96">UTIL</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.91">UTIL</a></pre>
 </li>
 </ul>
 <a name="KDC">
@@ -386,7 +386,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>KDC</h4>
-<pre>private static&nbsp;org.apache.hadoop.minikdc.MiniKdc <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.97">KDC</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.minikdc.MiniKdc <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.92">KDC</a></pre>
 </li>
 </ul>
 <a name="KEYTAB_FILE">
@@ -395,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>KEYTAB_FILE</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.98">KEYTAB_FILE</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.93">KEYTAB_FILE</a></pre>
 </li>
 </ul>
 <a name="USERNAME">
@@ -404,7 +404,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>USERNAME</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.99">USERNAME</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.94">USERNAME</a></pre>
 </li>
 </ul>
 <a name="SERVER_PRINCIPAL">
@@ -413,7 +413,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SERVER_PRINCIPAL</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.100">SERVER_PRINCIPAL</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.95">SERVER_PRINCIPAL</a></pre>
 </li>
 </ul>
 <a name="HTTP_PRINCIPAL">
@@ -422,7 +422,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HTTP_PRINCIPAL</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.101">HTTP_PRINCIPAL</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.96">HTTP_PRINCIPAL</a></pre>
 </li>
 </ul>
 <a name="FAMILYA_STRING">
@@ -431,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>FAMILYA_STRING</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.102">FAMILYA_STRING</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.97">FAMILYA_STRING</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.coprocessor.TestSecureExport.FAMILYA_STRING">Constant Field Values</a></dd>
@@ -444,7 +444,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>FAMILYB_STRING</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.103">FAMILYB_STRING</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.98">FAMILYB_STRING</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.coprocessor.TestSecureExport.FAMILYB_STRING">Constant Field Values</a></dd>
@@ -457,7 +457,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>FAMILYA</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.104">FAMILYA</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.99">FAMILYA</a></pre>
 </li>
 </ul>
 <a name="FAMILYB">
@@ -466,7 +466,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>FAMILYB</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.105">FAMILYB</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.100">FAMILYB</a></pre>
 </li>
 </ul>
 <a name="ROW1">
@@ -475,7 +475,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ROW1</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.106">ROW1</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.101">ROW1</a></pre>
 </li>
 </ul>
 <a name="ROW2">
@@ -484,7 +484,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ROW2</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.107">ROW2</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.102">ROW2</a></pre>
 </li>
 </ul>
 <a name="ROW3">
@@ -493,7 +493,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ROW3</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.108">ROW3</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.103">ROW3</a></pre>
 </li>
 </ul>
 <a name="QUAL">
@@ -502,7 +502,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>QUAL</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.109">QUAL</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.104">QUAL</a></pre>
 </li>
 </ul>
 <a name="LOCALHOST">
@@ -511,7 +511,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOCALHOST</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.110">LOCALHOST</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.105">LOCALHOST</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.coprocessor.TestSecureExport.LOCALHOST">Constant Field Values</a></dd>
@@ -524,7 +524,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NOW</h4>
-<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.111">NOW</a></pre>
+<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.106">NOW</a></pre>
 </li>
 </ul>
 <a name="USER_ADMIN">
@@ -533,7 +533,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>USER_ADMIN</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.113">USER_ADMIN</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.108">USER_ADMIN</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.coprocessor.TestSecureExport.USER_ADMIN">Constant Field Values</a></dd>
@@ -546,7 +546,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>USER_OWNER</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.115">USER_OWNER</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.110">USER_OWNER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.coprocessor.TestSecureExport.USER_OWNER">Constant Field Values</a></dd>
@@ -559,7 +559,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>USER_RX</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.117">USER_RX</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.112">USER_RX</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.coprocessor.TestSecureExport.USER_RX">Constant Field Values</a></dd>
@@ -572,7 +572,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>USER_XO</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.119">USER_XO</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.114">USER_XO</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.coprocessor.TestSecureExport.USER_XO">Constant Field Values</a></dd>
@@ -585,7 +585,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>USER_RO</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.121">USER_RO</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.116">USER_RO</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.coprocessor.TestSecureExport.USER_RO">Constant Field Values</a></dd>
@@ -598,7 +598,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>USER_NONE</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.123">USER_NONE</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.118">USER_NONE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.coprocessor.TestSecureExport.USER_NONE">Constant Field Values</a></dd>
@@ -611,7 +611,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>PRIVATE</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.124">PRIVATE</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.119">PRIVATE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.coprocessor.TestSecureExport.PRIVATE">Constant Field Values</a></dd>
@@ -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>CONFIDENTIAL</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.125">CONFIDENTIAL</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.120">CONFIDENTIAL</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.coprocessor.TestSecureExport.CONFIDENTIAL">Constant Field Values</a></dd>
@@ -637,7 +637,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SECRET</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.126">SECRET</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.121">SECRET</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.coprocessor.TestSecureExport.SECRET">Constant Field Values</a></dd>
@@ -650,7 +650,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TOPSECRET</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.127">TOPSECRET</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.122">TOPSECRET</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.coprocessor.TestSecureExport.TOPSECRET">Constant Field Values</a></dd>
@@ -663,7 +663,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 final&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.129">name</a></pre>
+<pre>public final&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.124">name</a></pre>
 </li>
 </ul>
 </li>
@@ -680,7 +680,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestSecureExport</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.90">TestSecureExport</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.85">TestSecureExport</a>()</pre>
 </li>
 </ul>
 </li>
@@ -697,7 +697,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setUpKdcServer</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.130">setUpKdcServer</a>()
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.125">setUpKdcServer</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>
@@ -711,7 +711,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getUserByLogin</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.security.User&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.150">getUserByLogin</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;user)
+<pre>private static&nbsp;org.apache.hadoop.hbase.security.User&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.141">getUserByLogin</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;user)
                                                              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>
@@ -725,7 +725,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getPrinciple</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.155">getPrinciple</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;user)</pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.146">getPrinciple</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;user)</pre>
 </li>
 </ul>
 <a name="setUpClusterKdc--">
@@ -734,7 +734,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setUpClusterKdc</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.159">setUpClusterKdc</a>()
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.150">setUpClusterKdc</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>
@@ -748,7 +748,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addLabels</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.201">addLabels</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.160">addLabels</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;users,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;labels)
                        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>
@@ -764,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>announce</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.219">announce</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.178">announce</a>()</pre>
 </li>
 </ul>
 <a name="cleanup--">
@@ -773,7 +773,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanup</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.224">cleanup</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.183">cleanup</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>
@@ -787,7 +787,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>clearOutput</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.227">clearOutput</a>(org.apache.hadoop.fs.Path&nbsp;path)
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.186">clearOutput</a>(org.apache.hadoop.fs.Path&nbsp;path)
                          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>
@@ -801,7 +801,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>beforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.238">beforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.197">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>
 <div class="block">Sets the security firstly for getting the correct default realm.</div>
 <dl>
@@ -816,7 +816,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>afterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.263">afterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.222">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>
@@ -830,7 +830,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testAccessCase</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.275">testAccessCase</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.234">testAccessCase</a>()
                     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>
 <div class="block">Test the ExportEndpoint's access levels. The <code>Export</code> test is ignored
  since the access exceptions cannot be collected from the mappers.</div>
@@ -846,7 +846,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testVisibilityLabels</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.375">testVisibilityLabels</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#line.334">testVisibilityLabels</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>,
                                  <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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/testdevapidocs/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html b/testdevapidocs/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html
index e059912..9566451 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":9,"i2":10,"i3":10,"i4":9,"i5":10,"i6":9,"i7":9,"i8":10,"i9":9,"i10":10,"i11":10};
+var methods = {"i0":10,"i1":9,"i2":10,"i3":10,"i4":10,"i5":9,"i6":9,"i7":10,"i8":9,"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,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.81">TestSaslFanOutOneBlockAsyncDFSOutput</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.69">TestSaslFanOutOneBlockAsyncDFSOutput</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>
@@ -254,34 +254,30 @@ 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/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#getTestFile--">getTestFile</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i4" class="altColor">
-<td class="colFirst"><code>private static void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#setHdfsSecuredConfiguration-org.apache.hadoop.conf.Configuration-">setHdfsSecuredConfiguration</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
-</tr>
-<tr id="i5" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#setUp--">setUp</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#setUpBeforeClass--">setUpBeforeClass</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#setUpKeyProvider-org.apache.hadoop.conf.Configuration-">setUpKeyProvider</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<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/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#tearDown--">tearDown</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#tearDownAfterClass--">tearDownAfterClass</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i10" 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/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#test--">test</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#test-org.apache.hadoop.fs.Path-">test</a></span>(org.apache.hadoop.fs.Path&nbsp;file)</code>&nbsp;</td>
 </tr>
@@ -313,7 +309,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.84">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.72">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -322,7 +318,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_UTIL</h4>
-<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.87">TEST_UTIL</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.75">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="FS">
@@ -331,7 +327,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>FS</h4>
-<pre>private static&nbsp;org.apache.hadoop.hdfs.DistributedFileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.89">FS</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.hdfs.DistributedFileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.77">FS</a></pre>
 </li>
 </ul>
 <a name="EVENT_LOOP_GROUP">
@@ -340,7 +336,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>EVENT_LOOP_GROUP</h4>
-<pre>private static&nbsp;org.apache.hbase.thirdparty.io.netty.channel.EventLoopGroup <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.91">EVENT_LOOP_GROUP</a></pre>
+<pre>private static&nbsp;org.apache.hbase.thirdparty.io.netty.channel.EventLoopGroup <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.79">EVENT_LOOP_GROUP</a></pre>
 </li>
 </ul>
 <a name="CHANNEL_CLASS">
@@ -349,7 +345,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CHANNEL_CLASS</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends org.apache.hbase.thirdparty.io.netty.channel.Channel&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.93">CHANNEL_CLASS</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends org.apache.hbase.thirdparty.io.netty.channel.Channel&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.81">CHANNEL_CLASS</a></pre>
 </li>
 </ul>
 <a name="READ_TIMEOUT_MS">
@@ -358,7 +354,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>READ_TIMEOUT_MS</h4>
-<pre>private static&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.95">READ_TIMEOUT_MS</a></pre>
+<pre>private static&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.83">READ_TIMEOUT_MS</a></pre>
 </li>
 </ul>
 <a name="KEYTAB_FILE">
@@ -367,7 +363,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>KEYTAB_FILE</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.97">KEYTAB_FILE</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.85">KEYTAB_FILE</a></pre>
 </li>
 </ul>
 <a name="KDC">
@@ -376,7 +372,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>KDC</h4>
-<pre>private static&nbsp;org.apache.hadoop.minikdc.MiniKdc <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.100">KDC</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.minikdc.MiniKdc <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.88">KDC</a></pre>
 </li>
 </ul>
 <a name="HOST">
@@ -385,7 +381,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HOST</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.102">HOST</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.90">HOST</a></pre>
 </li>
 </ul>
 <a name="USERNAME">
@@ -394,7 +390,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>USERNAME</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.104">USERNAME</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.92">USERNAME</a></pre>
 </li>
 </ul>
 <a name="PRINCIPAL">
@@ -403,7 +399,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>PRINCIPAL</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.106">PRINCIPAL</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.94">PRINCIPAL</a></pre>
 </li>
 </ul>
 <a name="HTTP_PRINCIPAL">
@@ -412,7 +408,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HTTP_PRINCIPAL</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.108">HTTP_PRINCIPAL</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.96">HTTP_PRINCIPAL</a></pre>
 </li>
 </ul>
 <a name="TEST_KEY_NAME">
@@ -421,7 +417,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_KEY_NAME</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.110">TEST_KEY_NAME</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.98">TEST_KEY_NAME</a></pre>
 </li>
 </ul>
 <a name="name">
@@ -430,7 +426,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>name</h4>
-<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.113">name</a></pre>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.101">name</a></pre>
 </li>
 </ul>
 <a name="protection">
@@ -439,7 +435,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>protection</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.116">protection</a></pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.104">protection</a></pre>
 </li>
 </ul>
 <a name="encryptionAlgorithm">
@@ -448,7 +444,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>encryptionAlgorithm</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.119">encryptionAlgorithm</a></pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.107">encryptionAlgorithm</a></pre>
 </li>
 </ul>
 <a name="cipherSuite">
@@ -457,7 +453,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>cipherSuite</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.122">cipherSuite</a></pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.110">cipherSuite</a></pre>
 </li>
 </ul>
 <a name="testDirOnTestFs">
@@ -466,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>testDirOnTestFs</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.194">testDirOnTestFs</a></pre>
+<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.162">testDirOnTestFs</a></pre>
 </li>
 </ul>
 <a name="entryptionTestDirOnTestFs">
@@ -475,7 +471,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>entryptionTestDirOnTestFs</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.196">entryptionTestDirOnTestFs</a></pre>
+<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.164">entryptionTestDirOnTestFs</a></pre>
 </li>
 </ul>
 </li>
@@ -492,7 +488,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestSaslFanOutOneBlockAsyncDFSOutput</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.81">TestSaslFanOutOneBlockAsyncDFSOutput</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.69">TestSaslFanOutOneBlockAsyncDFSOutput</a>()</pre>
 </li>
 </ul>
 </li>
@@ -509,21 +505,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>data</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.125">data</a>()</pre>
-</li>
-</ul>
-<a name="setHdfsSecuredConfiguration-org.apache.hadoop.conf.Configuration-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>setHdfsSecuredConfiguration</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.137">setHdfsSecuredConfiguration</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
-                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<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>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.113">data</a>()</pre>
 </li>
 </ul>
 <a name="setUpKeyProvider-org.apache.hadoop.conf.Configuration-">
@@ -532,7 +514,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setUpKeyProvider</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.156">setUpKeyProvider</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.125">setUpKeyProvider</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -546,7 +528,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setUpBeforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.167">setUpBeforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.136">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>
@@ -560,7 +542,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDownAfterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.185">tearDownAfterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.153">tearDownAfterClass</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>,
                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -576,7 +558,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createEncryptionZone</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.198">createEncryptionZone</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.166">createEncryptionZone</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>
@@ -590,7 +572,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setUp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.205">setUp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.173">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>
@@ -604,7 +586,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.233">tearDown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.201">tearDown</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>
@@ -618,7 +600,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTestFile</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.237">getTestFile</a>()</pre>
+<pre>private&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.205">getTestFile</a>()</pre>
 </li>
 </ul>
 <a name="getEncryptionTestFile--">
@@ -627,7 +609,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getEncryptionTestFile</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.241">getEncryptionTestFile</a>()</pre>
+<pre>private&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.209">getEncryptionTestFile</a>()</pre>
 </li>
 </ul>
 <a name="test-org.apache.hadoop.fs.Path-">
@@ -636,7 +618,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>test</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.245">test</a>(org.apache.hadoop.fs.Path&nbsp;file)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.213">test</a>(org.apache.hadoop.fs.Path&nbsp;file)
            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>,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutionException.html?is-external=true" title="class or interface in java.util.concurrent">ExecutionException</a></pre>
@@ -654,7 +636,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>test</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.253">test</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#line.221">test</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>,
                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
                  <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutionException.html?is-external=true" title="class or interface in java.util.concurrent">ExecutionException</a></pre>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 ec56445..4837d80 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -158,8 +158,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestCacheOnWrite.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TagUsage.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TagUsage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestCacheOnWrite.CacheOnWriteType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 c8490f4..19bb1d5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -576,14 +576,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<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/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/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/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/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/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/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/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/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/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/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/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 e9c1d93..ca2f47e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -206,8 +206,8 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.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/TestYieldProcedures.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestYieldProcedures.TestStateMachineProcedure.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 b0c25df..cfaadcd 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -667,10 +667,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/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/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/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/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>
 </ul>
 </li>


[06/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
index fcd2c2c..98653f0 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
@@ -2613,127 +2613,132 @@
 <span class="sourceLineNo">2605</span>            filesToRemove.add(file);<a name="line.2605"></a>
 <span class="sourceLineNo">2606</span>            // Only add the length if we successfully added the file to `filesToRemove`<a name="line.2606"></a>
 <span class="sourceLineNo">2607</span>            storeFileSizes.add(length);<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>          }<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>        } catch (Exception e) {<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>          LOG.error("Exception while trying to close the compacted store file {}",<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>            file.getPath(), e);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        }<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>      }<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>    }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>    if (this.isPrimaryReplicaStore()) {<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>      // Only the primary region is allowed to move the file to archive.<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>      // The secondary region does not move the files to archive. Any active reads from<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>      // the secondary region will still work because the file as such has active readers on it.<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>      if (!filesToRemove.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>        LOG.debug("Moving the files {} to archive", filesToRemove);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>        // Only if this is successful it has to be removed<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        try {<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>          this.fs.removeStoreFiles(this.getColumnFamilyDescriptor().getNameAsString(), filesToRemove);<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>        } catch (FailedArchiveException fae) {<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>          // Even if archiving some files failed, we still need to clear out any of the<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span>          // files which were successfully archived.  Otherwise we will receive a<a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>          // FileNotFoundException when we attempt to re-archive them in the next go around.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>          Collection&lt;Path&gt; failedFiles = fae.getFailedFiles();<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span>          Iterator&lt;HStoreFile&gt; iter = filesToRemove.iterator();<a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>          Iterator&lt;Long&gt; sizeIter = storeFileSizes.iterator();<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>          while (iter.hasNext()) {<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>            sizeIter.next();<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>            if (failedFiles.contains(iter.next().getPath())) {<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>              iter.remove();<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>              sizeIter.remove();<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>            }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>          }<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>          if (!filesToRemove.isEmpty()) {<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>            clearCompactedfiles(filesToRemove);<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>          }<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>          throw fae;<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>        }<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      }<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>    }<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>    if (!filesToRemove.isEmpty()) {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>      // Clear the compactedfiles from the store file manager<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>      clearCompactedfiles(filesToRemove);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>      // Try to send report of this archival to the Master for updating quota usage faster<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>      reportArchivedFilesForQuota(filesToRemove, storeFileSizes);<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>    }<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>  }<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span><a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>  /**<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>   * Computes the length of a store file without succumbing to any errors along the way. If an<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>   * error is encountered, the implementation returns {@code 0} instead of the actual size.<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>   *<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>   * @param file The file to compute the size of.<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>   * @return The size in bytes of the provided {@code file}.<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>   */<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span>  long getStoreFileSize(HStoreFile file) {<a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>    long length = 0;<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>    try {<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      file.initReader();<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      length = file.getReader().length();<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>    } catch (IOException e) {<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span>      LOG.trace("Failed to open reader when trying to compute store file size, ignoring", e);<a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>    } finally {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>      try {<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        file.closeStoreFile(<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>            file.getCacheConf() != null ? file.getCacheConf().shouldEvictOnClose() : true);<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span>      } catch (IOException e) {<a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>        LOG.trace("Failed to close reader after computing store file size, ignoring", e);<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>      }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span>    }<a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    return length;<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>  }<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span><a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>  public Long preFlushSeqIDEstimation() {<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span>    return memstore.preFlushSeqIDEstimation();<a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>  }<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span><a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>  @Override<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>  public boolean isSloppyMemStore() {<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span>    return this.memstore.isSloppy();<a name="line.2684"></a>
+<span class="sourceLineNo">2608</span>          } else {<a name="line.2608"></a>
+<span class="sourceLineNo">2609</span>            LOG.info("Can't archive compacted file " + file.getPath()<a name="line.2609"></a>
+<span class="sourceLineNo">2610</span>                + " because of either isCompactedAway = " + file.isCompactedAway()<a name="line.2610"></a>
+<span class="sourceLineNo">2611</span>                + " or file has reference, isReferencedInReads = " + file.isReferencedInReads()<a name="line.2611"></a>
+<span class="sourceLineNo">2612</span>                + ", skipping for now.");<a name="line.2612"></a>
+<span class="sourceLineNo">2613</span>          }<a name="line.2613"></a>
+<span class="sourceLineNo">2614</span>        } catch (Exception e) {<a name="line.2614"></a>
+<span class="sourceLineNo">2615</span>          LOG.error("Exception while trying to close the compacted store file {}",<a name="line.2615"></a>
+<span class="sourceLineNo">2616</span>            file.getPath(), e);<a name="line.2616"></a>
+<span class="sourceLineNo">2617</span>        }<a name="line.2617"></a>
+<span class="sourceLineNo">2618</span>      }<a name="line.2618"></a>
+<span class="sourceLineNo">2619</span>    }<a name="line.2619"></a>
+<span class="sourceLineNo">2620</span>    if (this.isPrimaryReplicaStore()) {<a name="line.2620"></a>
+<span class="sourceLineNo">2621</span>      // Only the primary region is allowed to move the file to archive.<a name="line.2621"></a>
+<span class="sourceLineNo">2622</span>      // The secondary region does not move the files to archive. Any active reads from<a name="line.2622"></a>
+<span class="sourceLineNo">2623</span>      // the secondary region will still work because the file as such has active readers on it.<a name="line.2623"></a>
+<span class="sourceLineNo">2624</span>      if (!filesToRemove.isEmpty()) {<a name="line.2624"></a>
+<span class="sourceLineNo">2625</span>        LOG.debug("Moving the files {} to archive", filesToRemove);<a name="line.2625"></a>
+<span class="sourceLineNo">2626</span>        // Only if this is successful it has to be removed<a name="line.2626"></a>
+<span class="sourceLineNo">2627</span>        try {<a name="line.2627"></a>
+<span class="sourceLineNo">2628</span>          this.fs.removeStoreFiles(this.getColumnFamilyDescriptor().getNameAsString(), filesToRemove);<a name="line.2628"></a>
+<span class="sourceLineNo">2629</span>        } catch (FailedArchiveException fae) {<a name="line.2629"></a>
+<span class="sourceLineNo">2630</span>          // Even if archiving some files failed, we still need to clear out any of the<a name="line.2630"></a>
+<span class="sourceLineNo">2631</span>          // files which were successfully archived.  Otherwise we will receive a<a name="line.2631"></a>
+<span class="sourceLineNo">2632</span>          // FileNotFoundException when we attempt to re-archive them in the next go around.<a name="line.2632"></a>
+<span class="sourceLineNo">2633</span>          Collection&lt;Path&gt; failedFiles = fae.getFailedFiles();<a name="line.2633"></a>
+<span class="sourceLineNo">2634</span>          Iterator&lt;HStoreFile&gt; iter = filesToRemove.iterator();<a name="line.2634"></a>
+<span class="sourceLineNo">2635</span>          Iterator&lt;Long&gt; sizeIter = storeFileSizes.iterator();<a name="line.2635"></a>
+<span class="sourceLineNo">2636</span>          while (iter.hasNext()) {<a name="line.2636"></a>
+<span class="sourceLineNo">2637</span>            sizeIter.next();<a name="line.2637"></a>
+<span class="sourceLineNo">2638</span>            if (failedFiles.contains(iter.next().getPath())) {<a name="line.2638"></a>
+<span class="sourceLineNo">2639</span>              iter.remove();<a name="line.2639"></a>
+<span class="sourceLineNo">2640</span>              sizeIter.remove();<a name="line.2640"></a>
+<span class="sourceLineNo">2641</span>            }<a name="line.2641"></a>
+<span class="sourceLineNo">2642</span>          }<a name="line.2642"></a>
+<span class="sourceLineNo">2643</span>          if (!filesToRemove.isEmpty()) {<a name="line.2643"></a>
+<span class="sourceLineNo">2644</span>            clearCompactedfiles(filesToRemove);<a name="line.2644"></a>
+<span class="sourceLineNo">2645</span>          }<a name="line.2645"></a>
+<span class="sourceLineNo">2646</span>          throw fae;<a name="line.2646"></a>
+<span class="sourceLineNo">2647</span>        }<a name="line.2647"></a>
+<span class="sourceLineNo">2648</span>      }<a name="line.2648"></a>
+<span class="sourceLineNo">2649</span>    }<a name="line.2649"></a>
+<span class="sourceLineNo">2650</span>    if (!filesToRemove.isEmpty()) {<a name="line.2650"></a>
+<span class="sourceLineNo">2651</span>      // Clear the compactedfiles from the store file manager<a name="line.2651"></a>
+<span class="sourceLineNo">2652</span>      clearCompactedfiles(filesToRemove);<a name="line.2652"></a>
+<span class="sourceLineNo">2653</span>      // Try to send report of this archival to the Master for updating quota usage faster<a name="line.2653"></a>
+<span class="sourceLineNo">2654</span>      reportArchivedFilesForQuota(filesToRemove, storeFileSizes);<a name="line.2654"></a>
+<span class="sourceLineNo">2655</span>    }<a name="line.2655"></a>
+<span class="sourceLineNo">2656</span>  }<a name="line.2656"></a>
+<span class="sourceLineNo">2657</span><a name="line.2657"></a>
+<span class="sourceLineNo">2658</span>  /**<a name="line.2658"></a>
+<span class="sourceLineNo">2659</span>   * Computes the length of a store file without succumbing to any errors along the way. If an<a name="line.2659"></a>
+<span class="sourceLineNo">2660</span>   * error is encountered, the implementation returns {@code 0} instead of the actual size.<a name="line.2660"></a>
+<span class="sourceLineNo">2661</span>   *<a name="line.2661"></a>
+<span class="sourceLineNo">2662</span>   * @param file The file to compute the size of.<a name="line.2662"></a>
+<span class="sourceLineNo">2663</span>   * @return The size in bytes of the provided {@code file}.<a name="line.2663"></a>
+<span class="sourceLineNo">2664</span>   */<a name="line.2664"></a>
+<span class="sourceLineNo">2665</span>  long getStoreFileSize(HStoreFile file) {<a name="line.2665"></a>
+<span class="sourceLineNo">2666</span>    long length = 0;<a name="line.2666"></a>
+<span class="sourceLineNo">2667</span>    try {<a name="line.2667"></a>
+<span class="sourceLineNo">2668</span>      file.initReader();<a name="line.2668"></a>
+<span class="sourceLineNo">2669</span>      length = file.getReader().length();<a name="line.2669"></a>
+<span class="sourceLineNo">2670</span>    } catch (IOException e) {<a name="line.2670"></a>
+<span class="sourceLineNo">2671</span>      LOG.trace("Failed to open reader when trying to compute store file size, ignoring", e);<a name="line.2671"></a>
+<span class="sourceLineNo">2672</span>    } finally {<a name="line.2672"></a>
+<span class="sourceLineNo">2673</span>      try {<a name="line.2673"></a>
+<span class="sourceLineNo">2674</span>        file.closeStoreFile(<a name="line.2674"></a>
+<span class="sourceLineNo">2675</span>            file.getCacheConf() != null ? file.getCacheConf().shouldEvictOnClose() : true);<a name="line.2675"></a>
+<span class="sourceLineNo">2676</span>      } catch (IOException e) {<a name="line.2676"></a>
+<span class="sourceLineNo">2677</span>        LOG.trace("Failed to close reader after computing store file size, ignoring", e);<a name="line.2677"></a>
+<span class="sourceLineNo">2678</span>      }<a name="line.2678"></a>
+<span class="sourceLineNo">2679</span>    }<a name="line.2679"></a>
+<span class="sourceLineNo">2680</span>    return length;<a name="line.2680"></a>
+<span class="sourceLineNo">2681</span>  }<a name="line.2681"></a>
+<span class="sourceLineNo">2682</span><a name="line.2682"></a>
+<span class="sourceLineNo">2683</span>  public Long preFlushSeqIDEstimation() {<a name="line.2683"></a>
+<span class="sourceLineNo">2684</span>    return memstore.preFlushSeqIDEstimation();<a name="line.2684"></a>
 <span class="sourceLineNo">2685</span>  }<a name="line.2685"></a>
 <span class="sourceLineNo">2686</span><a name="line.2686"></a>
-<span class="sourceLineNo">2687</span>  private void clearCompactedfiles(List&lt;HStoreFile&gt; filesToRemove) throws IOException {<a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    LOG.trace("Clearing the compacted file {} from this store", filesToRemove);<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    try {<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>      lock.writeLock().lock();<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      this.getStoreEngine().getStoreFileManager().removeCompactedFiles(filesToRemove);<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    } finally {<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span>      lock.writeLock().unlock();<a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    }<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>  }<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span><a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>  void reportArchivedFilesForQuota(List&lt;? extends StoreFile&gt; archivedFiles, List&lt;Long&gt; fileSizes) {<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>    // Sanity check from the caller<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>    if (archivedFiles.size() != fileSizes.size()) {<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>      throw new RuntimeException("Coding error: should never see lists of varying size");<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>    }<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>    RegionServerServices rss = this.region.getRegionServerServices();<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    if (rss == null) {<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>      return;<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span>    }<a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    List&lt;Entry&lt;String,Long&gt;&gt; filesWithSizes = new ArrayList&lt;&gt;(archivedFiles.size());<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>    Iterator&lt;Long&gt; fileSizeIter = fileSizes.iterator();<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>    for (StoreFile storeFile : archivedFiles) {<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>      final long fileSize = fileSizeIter.next();<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span>      if (storeFile.isHFile() &amp;&amp; fileSize != 0) {<a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>        filesWithSizes.add(Maps.immutableEntry(storeFile.getPath().getName(), fileSize));<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>      }<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>    }<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>    if (LOG.isTraceEnabled()) {<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span>      LOG.trace("Files archived: " + archivedFiles + ", reporting the following to the Master: "<a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>          + filesWithSizes);<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>    }<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>    boolean success = rss.reportFileArchivalForQuotas(getTableName(), filesWithSizes);<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>    if (!success) {<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>      LOG.warn("Failed to report archival of files: " + filesWithSizes);<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>    }<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  }<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span><a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>  public int getCurrentParallelPutCount() {<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return currentParallelPutCount.get();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>}<a name="line.2728"></a>
+<span class="sourceLineNo">2687</span>  @Override<a name="line.2687"></a>
+<span class="sourceLineNo">2688</span>  public boolean isSloppyMemStore() {<a name="line.2688"></a>
+<span class="sourceLineNo">2689</span>    return this.memstore.isSloppy();<a name="line.2689"></a>
+<span class="sourceLineNo">2690</span>  }<a name="line.2690"></a>
+<span class="sourceLineNo">2691</span><a name="line.2691"></a>
+<span class="sourceLineNo">2692</span>  private void clearCompactedfiles(List&lt;HStoreFile&gt; filesToRemove) throws IOException {<a name="line.2692"></a>
+<span class="sourceLineNo">2693</span>    LOG.trace("Clearing the compacted file {} from this store", filesToRemove);<a name="line.2693"></a>
+<span class="sourceLineNo">2694</span>    try {<a name="line.2694"></a>
+<span class="sourceLineNo">2695</span>      lock.writeLock().lock();<a name="line.2695"></a>
+<span class="sourceLineNo">2696</span>      this.getStoreEngine().getStoreFileManager().removeCompactedFiles(filesToRemove);<a name="line.2696"></a>
+<span class="sourceLineNo">2697</span>    } finally {<a name="line.2697"></a>
+<span class="sourceLineNo">2698</span>      lock.writeLock().unlock();<a name="line.2698"></a>
+<span class="sourceLineNo">2699</span>    }<a name="line.2699"></a>
+<span class="sourceLineNo">2700</span>  }<a name="line.2700"></a>
+<span class="sourceLineNo">2701</span><a name="line.2701"></a>
+<span class="sourceLineNo">2702</span>  void reportArchivedFilesForQuota(List&lt;? extends StoreFile&gt; archivedFiles, List&lt;Long&gt; fileSizes) {<a name="line.2702"></a>
+<span class="sourceLineNo">2703</span>    // Sanity check from the caller<a name="line.2703"></a>
+<span class="sourceLineNo">2704</span>    if (archivedFiles.size() != fileSizes.size()) {<a name="line.2704"></a>
+<span class="sourceLineNo">2705</span>      throw new RuntimeException("Coding error: should never see lists of varying size");<a name="line.2705"></a>
+<span class="sourceLineNo">2706</span>    }<a name="line.2706"></a>
+<span class="sourceLineNo">2707</span>    RegionServerServices rss = this.region.getRegionServerServices();<a name="line.2707"></a>
+<span class="sourceLineNo">2708</span>    if (rss == null) {<a name="line.2708"></a>
+<span class="sourceLineNo">2709</span>      return;<a name="line.2709"></a>
+<span class="sourceLineNo">2710</span>    }<a name="line.2710"></a>
+<span class="sourceLineNo">2711</span>    List&lt;Entry&lt;String,Long&gt;&gt; filesWithSizes = new ArrayList&lt;&gt;(archivedFiles.size());<a name="line.2711"></a>
+<span class="sourceLineNo">2712</span>    Iterator&lt;Long&gt; fileSizeIter = fileSizes.iterator();<a name="line.2712"></a>
+<span class="sourceLineNo">2713</span>    for (StoreFile storeFile : archivedFiles) {<a name="line.2713"></a>
+<span class="sourceLineNo">2714</span>      final long fileSize = fileSizeIter.next();<a name="line.2714"></a>
+<span class="sourceLineNo">2715</span>      if (storeFile.isHFile() &amp;&amp; fileSize != 0) {<a name="line.2715"></a>
+<span class="sourceLineNo">2716</span>        filesWithSizes.add(Maps.immutableEntry(storeFile.getPath().getName(), fileSize));<a name="line.2716"></a>
+<span class="sourceLineNo">2717</span>      }<a name="line.2717"></a>
+<span class="sourceLineNo">2718</span>    }<a name="line.2718"></a>
+<span class="sourceLineNo">2719</span>    if (LOG.isTraceEnabled()) {<a name="line.2719"></a>
+<span class="sourceLineNo">2720</span>      LOG.trace("Files archived: " + archivedFiles + ", reporting the following to the Master: "<a name="line.2720"></a>
+<span class="sourceLineNo">2721</span>          + filesWithSizes);<a name="line.2721"></a>
+<span class="sourceLineNo">2722</span>    }<a name="line.2722"></a>
+<span class="sourceLineNo">2723</span>    boolean success = rss.reportFileArchivalForQuotas(getTableName(), filesWithSizes);<a name="line.2723"></a>
+<span class="sourceLineNo">2724</span>    if (!success) {<a name="line.2724"></a>
+<span class="sourceLineNo">2725</span>      LOG.warn("Failed to report archival of files: " + filesWithSizes);<a name="line.2725"></a>
+<span class="sourceLineNo">2726</span>    }<a name="line.2726"></a>
+<span class="sourceLineNo">2727</span>  }<a name="line.2727"></a>
+<span class="sourceLineNo">2728</span><a name="line.2728"></a>
+<span class="sourceLineNo">2729</span>  public int getCurrentParallelPutCount() {<a name="line.2729"></a>
+<span class="sourceLineNo">2730</span>    return currentParallelPutCount.get();<a name="line.2730"></a>
+<span class="sourceLineNo">2731</span>  }<a name="line.2731"></a>
+<span class="sourceLineNo">2732</span><a name="line.2732"></a>
+<span class="sourceLineNo">2733</span>}<a name="line.2733"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
index fcd2c2c..98653f0 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
@@ -2613,127 +2613,132 @@
 <span class="sourceLineNo">2605</span>            filesToRemove.add(file);<a name="line.2605"></a>
 <span class="sourceLineNo">2606</span>            // Only add the length if we successfully added the file to `filesToRemove`<a name="line.2606"></a>
 <span class="sourceLineNo">2607</span>            storeFileSizes.add(length);<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>          }<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>        } catch (Exception e) {<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>          LOG.error("Exception while trying to close the compacted store file {}",<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>            file.getPath(), e);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        }<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>      }<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>    }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>    if (this.isPrimaryReplicaStore()) {<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>      // Only the primary region is allowed to move the file to archive.<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>      // The secondary region does not move the files to archive. Any active reads from<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>      // the secondary region will still work because the file as such has active readers on it.<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>      if (!filesToRemove.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>        LOG.debug("Moving the files {} to archive", filesToRemove);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>        // Only if this is successful it has to be removed<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        try {<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>          this.fs.removeStoreFiles(this.getColumnFamilyDescriptor().getNameAsString(), filesToRemove);<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>        } catch (FailedArchiveException fae) {<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>          // Even if archiving some files failed, we still need to clear out any of the<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span>          // files which were successfully archived.  Otherwise we will receive a<a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>          // FileNotFoundException when we attempt to re-archive them in the next go around.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>          Collection&lt;Path&gt; failedFiles = fae.getFailedFiles();<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span>          Iterator&lt;HStoreFile&gt; iter = filesToRemove.iterator();<a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>          Iterator&lt;Long&gt; sizeIter = storeFileSizes.iterator();<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>          while (iter.hasNext()) {<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>            sizeIter.next();<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>            if (failedFiles.contains(iter.next().getPath())) {<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>              iter.remove();<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>              sizeIter.remove();<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>            }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>          }<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>          if (!filesToRemove.isEmpty()) {<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>            clearCompactedfiles(filesToRemove);<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>          }<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>          throw fae;<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>        }<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      }<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>    }<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>    if (!filesToRemove.isEmpty()) {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>      // Clear the compactedfiles from the store file manager<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>      clearCompactedfiles(filesToRemove);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>      // Try to send report of this archival to the Master for updating quota usage faster<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>      reportArchivedFilesForQuota(filesToRemove, storeFileSizes);<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>    }<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>  }<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span><a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>  /**<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>   * Computes the length of a store file without succumbing to any errors along the way. If an<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>   * error is encountered, the implementation returns {@code 0} instead of the actual size.<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>   *<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>   * @param file The file to compute the size of.<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>   * @return The size in bytes of the provided {@code file}.<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>   */<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span>  long getStoreFileSize(HStoreFile file) {<a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>    long length = 0;<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>    try {<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      file.initReader();<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      length = file.getReader().length();<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>    } catch (IOException e) {<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span>      LOG.trace("Failed to open reader when trying to compute store file size, ignoring", e);<a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>    } finally {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>      try {<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        file.closeStoreFile(<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>            file.getCacheConf() != null ? file.getCacheConf().shouldEvictOnClose() : true);<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span>      } catch (IOException e) {<a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>        LOG.trace("Failed to close reader after computing store file size, ignoring", e);<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>      }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span>    }<a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    return length;<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>  }<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span><a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>  public Long preFlushSeqIDEstimation() {<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span>    return memstore.preFlushSeqIDEstimation();<a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>  }<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span><a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>  @Override<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>  public boolean isSloppyMemStore() {<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span>    return this.memstore.isSloppy();<a name="line.2684"></a>
+<span class="sourceLineNo">2608</span>          } else {<a name="line.2608"></a>
+<span class="sourceLineNo">2609</span>            LOG.info("Can't archive compacted file " + file.getPath()<a name="line.2609"></a>
+<span class="sourceLineNo">2610</span>                + " because of either isCompactedAway = " + file.isCompactedAway()<a name="line.2610"></a>
+<span class="sourceLineNo">2611</span>                + " or file has reference, isReferencedInReads = " + file.isReferencedInReads()<a name="line.2611"></a>
+<span class="sourceLineNo">2612</span>                + ", skipping for now.");<a name="line.2612"></a>
+<span class="sourceLineNo">2613</span>          }<a name="line.2613"></a>
+<span class="sourceLineNo">2614</span>        } catch (Exception e) {<a name="line.2614"></a>
+<span class="sourceLineNo">2615</span>          LOG.error("Exception while trying to close the compacted store file {}",<a name="line.2615"></a>
+<span class="sourceLineNo">2616</span>            file.getPath(), e);<a name="line.2616"></a>
+<span class="sourceLineNo">2617</span>        }<a name="line.2617"></a>
+<span class="sourceLineNo">2618</span>      }<a name="line.2618"></a>
+<span class="sourceLineNo">2619</span>    }<a name="line.2619"></a>
+<span class="sourceLineNo">2620</span>    if (this.isPrimaryReplicaStore()) {<a name="line.2620"></a>
+<span class="sourceLineNo">2621</span>      // Only the primary region is allowed to move the file to archive.<a name="line.2621"></a>
+<span class="sourceLineNo">2622</span>      // The secondary region does not move the files to archive. Any active reads from<a name="line.2622"></a>
+<span class="sourceLineNo">2623</span>      // the secondary region will still work because the file as such has active readers on it.<a name="line.2623"></a>
+<span class="sourceLineNo">2624</span>      if (!filesToRemove.isEmpty()) {<a name="line.2624"></a>
+<span class="sourceLineNo">2625</span>        LOG.debug("Moving the files {} to archive", filesToRemove);<a name="line.2625"></a>
+<span class="sourceLineNo">2626</span>        // Only if this is successful it has to be removed<a name="line.2626"></a>
+<span class="sourceLineNo">2627</span>        try {<a name="line.2627"></a>
+<span class="sourceLineNo">2628</span>          this.fs.removeStoreFiles(this.getColumnFamilyDescriptor().getNameAsString(), filesToRemove);<a name="line.2628"></a>
+<span class="sourceLineNo">2629</span>        } catch (FailedArchiveException fae) {<a name="line.2629"></a>
+<span class="sourceLineNo">2630</span>          // Even if archiving some files failed, we still need to clear out any of the<a name="line.2630"></a>
+<span class="sourceLineNo">2631</span>          // files which were successfully archived.  Otherwise we will receive a<a name="line.2631"></a>
+<span class="sourceLineNo">2632</span>          // FileNotFoundException when we attempt to re-archive them in the next go around.<a name="line.2632"></a>
+<span class="sourceLineNo">2633</span>          Collection&lt;Path&gt; failedFiles = fae.getFailedFiles();<a name="line.2633"></a>
+<span class="sourceLineNo">2634</span>          Iterator&lt;HStoreFile&gt; iter = filesToRemove.iterator();<a name="line.2634"></a>
+<span class="sourceLineNo">2635</span>          Iterator&lt;Long&gt; sizeIter = storeFileSizes.iterator();<a name="line.2635"></a>
+<span class="sourceLineNo">2636</span>          while (iter.hasNext()) {<a name="line.2636"></a>
+<span class="sourceLineNo">2637</span>            sizeIter.next();<a name="line.2637"></a>
+<span class="sourceLineNo">2638</span>            if (failedFiles.contains(iter.next().getPath())) {<a name="line.2638"></a>
+<span class="sourceLineNo">2639</span>              iter.remove();<a name="line.2639"></a>
+<span class="sourceLineNo">2640</span>              sizeIter.remove();<a name="line.2640"></a>
+<span class="sourceLineNo">2641</span>            }<a name="line.2641"></a>
+<span class="sourceLineNo">2642</span>          }<a name="line.2642"></a>
+<span class="sourceLineNo">2643</span>          if (!filesToRemove.isEmpty()) {<a name="line.2643"></a>
+<span class="sourceLineNo">2644</span>            clearCompactedfiles(filesToRemove);<a name="line.2644"></a>
+<span class="sourceLineNo">2645</span>          }<a name="line.2645"></a>
+<span class="sourceLineNo">2646</span>          throw fae;<a name="line.2646"></a>
+<span class="sourceLineNo">2647</span>        }<a name="line.2647"></a>
+<span class="sourceLineNo">2648</span>      }<a name="line.2648"></a>
+<span class="sourceLineNo">2649</span>    }<a name="line.2649"></a>
+<span class="sourceLineNo">2650</span>    if (!filesToRemove.isEmpty()) {<a name="line.2650"></a>
+<span class="sourceLineNo">2651</span>      // Clear the compactedfiles from the store file manager<a name="line.2651"></a>
+<span class="sourceLineNo">2652</span>      clearCompactedfiles(filesToRemove);<a name="line.2652"></a>
+<span class="sourceLineNo">2653</span>      // Try to send report of this archival to the Master for updating quota usage faster<a name="line.2653"></a>
+<span class="sourceLineNo">2654</span>      reportArchivedFilesForQuota(filesToRemove, storeFileSizes);<a name="line.2654"></a>
+<span class="sourceLineNo">2655</span>    }<a name="line.2655"></a>
+<span class="sourceLineNo">2656</span>  }<a name="line.2656"></a>
+<span class="sourceLineNo">2657</span><a name="line.2657"></a>
+<span class="sourceLineNo">2658</span>  /**<a name="line.2658"></a>
+<span class="sourceLineNo">2659</span>   * Computes the length of a store file without succumbing to any errors along the way. If an<a name="line.2659"></a>
+<span class="sourceLineNo">2660</span>   * error is encountered, the implementation returns {@code 0} instead of the actual size.<a name="line.2660"></a>
+<span class="sourceLineNo">2661</span>   *<a name="line.2661"></a>
+<span class="sourceLineNo">2662</span>   * @param file The file to compute the size of.<a name="line.2662"></a>
+<span class="sourceLineNo">2663</span>   * @return The size in bytes of the provided {@code file}.<a name="line.2663"></a>
+<span class="sourceLineNo">2664</span>   */<a name="line.2664"></a>
+<span class="sourceLineNo">2665</span>  long getStoreFileSize(HStoreFile file) {<a name="line.2665"></a>
+<span class="sourceLineNo">2666</span>    long length = 0;<a name="line.2666"></a>
+<span class="sourceLineNo">2667</span>    try {<a name="line.2667"></a>
+<span class="sourceLineNo">2668</span>      file.initReader();<a name="line.2668"></a>
+<span class="sourceLineNo">2669</span>      length = file.getReader().length();<a name="line.2669"></a>
+<span class="sourceLineNo">2670</span>    } catch (IOException e) {<a name="line.2670"></a>
+<span class="sourceLineNo">2671</span>      LOG.trace("Failed to open reader when trying to compute store file size, ignoring", e);<a name="line.2671"></a>
+<span class="sourceLineNo">2672</span>    } finally {<a name="line.2672"></a>
+<span class="sourceLineNo">2673</span>      try {<a name="line.2673"></a>
+<span class="sourceLineNo">2674</span>        file.closeStoreFile(<a name="line.2674"></a>
+<span class="sourceLineNo">2675</span>            file.getCacheConf() != null ? file.getCacheConf().shouldEvictOnClose() : true);<a name="line.2675"></a>
+<span class="sourceLineNo">2676</span>      } catch (IOException e) {<a name="line.2676"></a>
+<span class="sourceLineNo">2677</span>        LOG.trace("Failed to close reader after computing store file size, ignoring", e);<a name="line.2677"></a>
+<span class="sourceLineNo">2678</span>      }<a name="line.2678"></a>
+<span class="sourceLineNo">2679</span>    }<a name="line.2679"></a>
+<span class="sourceLineNo">2680</span>    return length;<a name="line.2680"></a>
+<span class="sourceLineNo">2681</span>  }<a name="line.2681"></a>
+<span class="sourceLineNo">2682</span><a name="line.2682"></a>
+<span class="sourceLineNo">2683</span>  public Long preFlushSeqIDEstimation() {<a name="line.2683"></a>
+<span class="sourceLineNo">2684</span>    return memstore.preFlushSeqIDEstimation();<a name="line.2684"></a>
 <span class="sourceLineNo">2685</span>  }<a name="line.2685"></a>
 <span class="sourceLineNo">2686</span><a name="line.2686"></a>
-<span class="sourceLineNo">2687</span>  private void clearCompactedfiles(List&lt;HStoreFile&gt; filesToRemove) throws IOException {<a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    LOG.trace("Clearing the compacted file {} from this store", filesToRemove);<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    try {<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>      lock.writeLock().lock();<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      this.getStoreEngine().getStoreFileManager().removeCompactedFiles(filesToRemove);<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    } finally {<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span>      lock.writeLock().unlock();<a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    }<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>  }<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span><a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>  void reportArchivedFilesForQuota(List&lt;? extends StoreFile&gt; archivedFiles, List&lt;Long&gt; fileSizes) {<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>    // Sanity check from the caller<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>    if (archivedFiles.size() != fileSizes.size()) {<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>      throw new RuntimeException("Coding error: should never see lists of varying size");<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>    }<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>    RegionServerServices rss = this.region.getRegionServerServices();<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    if (rss == null) {<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>      return;<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span>    }<a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    List&lt;Entry&lt;String,Long&gt;&gt; filesWithSizes = new ArrayList&lt;&gt;(archivedFiles.size());<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>    Iterator&lt;Long&gt; fileSizeIter = fileSizes.iterator();<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>    for (StoreFile storeFile : archivedFiles) {<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>      final long fileSize = fileSizeIter.next();<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span>      if (storeFile.isHFile() &amp;&amp; fileSize != 0) {<a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>        filesWithSizes.add(Maps.immutableEntry(storeFile.getPath().getName(), fileSize));<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>      }<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>    }<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>    if (LOG.isTraceEnabled()) {<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span>      LOG.trace("Files archived: " + archivedFiles + ", reporting the following to the Master: "<a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>          + filesWithSizes);<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>    }<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>    boolean success = rss.reportFileArchivalForQuotas(getTableName(), filesWithSizes);<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>    if (!success) {<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>      LOG.warn("Failed to report archival of files: " + filesWithSizes);<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>    }<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  }<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span><a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>  public int getCurrentParallelPutCount() {<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return currentParallelPutCount.get();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>}<a name="line.2728"></a>
+<span class="sourceLineNo">2687</span>  @Override<a name="line.2687"></a>
+<span class="sourceLineNo">2688</span>  public boolean isSloppyMemStore() {<a name="line.2688"></a>
+<span class="sourceLineNo">2689</span>    return this.memstore.isSloppy();<a name="line.2689"></a>
+<span class="sourceLineNo">2690</span>  }<a name="line.2690"></a>
+<span class="sourceLineNo">2691</span><a name="line.2691"></a>
+<span class="sourceLineNo">2692</span>  private void clearCompactedfiles(List&lt;HStoreFile&gt; filesToRemove) throws IOException {<a name="line.2692"></a>
+<span class="sourceLineNo">2693</span>    LOG.trace("Clearing the compacted file {} from this store", filesToRemove);<a name="line.2693"></a>
+<span class="sourceLineNo">2694</span>    try {<a name="line.2694"></a>
+<span class="sourceLineNo">2695</span>      lock.writeLock().lock();<a name="line.2695"></a>
+<span class="sourceLineNo">2696</span>      this.getStoreEngine().getStoreFileManager().removeCompactedFiles(filesToRemove);<a name="line.2696"></a>
+<span class="sourceLineNo">2697</span>    } finally {<a name="line.2697"></a>
+<span class="sourceLineNo">2698</span>      lock.writeLock().unlock();<a name="line.2698"></a>
+<span class="sourceLineNo">2699</span>    }<a name="line.2699"></a>
+<span class="sourceLineNo">2700</span>  }<a name="line.2700"></a>
+<span class="sourceLineNo">2701</span><a name="line.2701"></a>
+<span class="sourceLineNo">2702</span>  void reportArchivedFilesForQuota(List&lt;? extends StoreFile&gt; archivedFiles, List&lt;Long&gt; fileSizes) {<a name="line.2702"></a>
+<span class="sourceLineNo">2703</span>    // Sanity check from the caller<a name="line.2703"></a>
+<span class="sourceLineNo">2704</span>    if (archivedFiles.size() != fileSizes.size()) {<a name="line.2704"></a>
+<span class="sourceLineNo">2705</span>      throw new RuntimeException("Coding error: should never see lists of varying size");<a name="line.2705"></a>
+<span class="sourceLineNo">2706</span>    }<a name="line.2706"></a>
+<span class="sourceLineNo">2707</span>    RegionServerServices rss = this.region.getRegionServerServices();<a name="line.2707"></a>
+<span class="sourceLineNo">2708</span>    if (rss == null) {<a name="line.2708"></a>
+<span class="sourceLineNo">2709</span>      return;<a name="line.2709"></a>
+<span class="sourceLineNo">2710</span>    }<a name="line.2710"></a>
+<span class="sourceLineNo">2711</span>    List&lt;Entry&lt;String,Long&gt;&gt; filesWithSizes = new ArrayList&lt;&gt;(archivedFiles.size());<a name="line.2711"></a>
+<span class="sourceLineNo">2712</span>    Iterator&lt;Long&gt; fileSizeIter = fileSizes.iterator();<a name="line.2712"></a>
+<span class="sourceLineNo">2713</span>    for (StoreFile storeFile : archivedFiles) {<a name="line.2713"></a>
+<span class="sourceLineNo">2714</span>      final long fileSize = fileSizeIter.next();<a name="line.2714"></a>
+<span class="sourceLineNo">2715</span>      if (storeFile.isHFile() &amp;&amp; fileSize != 0) {<a name="line.2715"></a>
+<span class="sourceLineNo">2716</span>        filesWithSizes.add(Maps.immutableEntry(storeFile.getPath().getName(), fileSize));<a name="line.2716"></a>
+<span class="sourceLineNo">2717</span>      }<a name="line.2717"></a>
+<span class="sourceLineNo">2718</span>    }<a name="line.2718"></a>
+<span class="sourceLineNo">2719</span>    if (LOG.isTraceEnabled()) {<a name="line.2719"></a>
+<span class="sourceLineNo">2720</span>      LOG.trace("Files archived: " + archivedFiles + ", reporting the following to the Master: "<a name="line.2720"></a>
+<span class="sourceLineNo">2721</span>          + filesWithSizes);<a name="line.2721"></a>
+<span class="sourceLineNo">2722</span>    }<a name="line.2722"></a>
+<span class="sourceLineNo">2723</span>    boolean success = rss.reportFileArchivalForQuotas(getTableName(), filesWithSizes);<a name="line.2723"></a>
+<span class="sourceLineNo">2724</span>    if (!success) {<a name="line.2724"></a>
+<span class="sourceLineNo">2725</span>      LOG.warn("Failed to report archival of files: " + filesWithSizes);<a name="line.2725"></a>
+<span class="sourceLineNo">2726</span>    }<a name="line.2726"></a>
+<span class="sourceLineNo">2727</span>  }<a name="line.2727"></a>
+<span class="sourceLineNo">2728</span><a name="line.2728"></a>
+<span class="sourceLineNo">2729</span>  public int getCurrentParallelPutCount() {<a name="line.2729"></a>
+<span class="sourceLineNo">2730</span>    return currentParallelPutCount.get();<a name="line.2730"></a>
+<span class="sourceLineNo">2731</span>  }<a name="line.2731"></a>
+<span class="sourceLineNo">2732</span><a name="line.2732"></a>
+<span class="sourceLineNo">2733</span>}<a name="line.2733"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/downloads.html
----------------------------------------------------------------------
diff --git a/downloads.html b/downloads.html
index d84ee59..4b721d2 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase Downloads</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -423,7 +423,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 7461e7d..b77cbb9 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -331,7 +331,7 @@ for more details.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 00eaa36..e942efd 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -411,7 +411,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index 148dd15..f4412be 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -291,7 +291,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 06e9f10..0138919 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -288,7 +288,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index a82cc1c..fb4e2fd 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -491,7 +491,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index e48ed5d..6bdba55 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -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: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 776d355..8015deb 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -459,7 +459,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 4a3a73e..c1b892e 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -440,7 +440,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index 4240ac9..4662d17 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -440,7 +440,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index da43535..133655d 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -375,7 +375,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 7346e8e..a8bae52 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Powered By Apache HBase™</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -769,7 +769,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 918ff1c..95c4bbe 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -335,7 +335,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 99e561b..ed5b94c 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -305,7 +305,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index 71d41fd..d2d95c0 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -331,7 +331,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 01b6429..8263a90 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -308,7 +308,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 0f36b75..cca75ea 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -303,7 +303,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index 3ef8923..2efa30f 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Other Apache HBase (TM) Resources</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -331,7 +331,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index 63eef81..52eb611 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -299,7 +299,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 21d7b07..9e2a89b 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -333,7 +333,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 78898db..996b1fe 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -520,7 +520,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index 77581b1..77a3b89 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -742,7 +742,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 6a4ce09..8c8b1c3 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -35948,12 +35948,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#setHBaseFsTmpDir--">setHBaseFsTmpDir()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html#setHdfsSecuredConfiguration-org.apache.hadoop.conf.Configuration-">setHdfsSecuredConfiguration(Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.io.asyncfs.<a href="org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.html" title="class in org.apache.hadoop.hbase.io.asyncfs">TestSaslFanOutOneBlockAsyncDFSOutput</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/SecureTestCluster.html#setHdfsSecuredConfiguration-org.apache.hadoop.conf.Configuration-">setHdfsSecuredConfiguration(Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/SecureTestCluster.html" title="class in org.apache.hadoop.hbase.security.token">SecureTestCluster</a></dt>
-<dd>
-<div class="block">Setup the security configuration for hdfs.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/MultiThreadedUpdater.html#setIgnoreNonceConflicts-boolean-">setIgnoreNonceConflicts(boolean)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/MultiThreadedUpdater.html" title="class in org.apache.hadoop.hbase.util">MultiThreadedUpdater</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/PerformanceEvaluation.TestOptions.html#setInMemoryCF-boolean-">setInMemoryCF(boolean)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/PerformanceEvaluation.TestOptions.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.TestOptions</a></dt>
@@ -36156,12 +36150,22 @@
 <dd>
 <div class="block">Set the scan attribute</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#setSecuredConfiguration-org.apache.hadoop.conf.Configuration-java.lang.String-java.lang.String-">setSecuredConfiguration(Configuration, String, String)</a></span> - Static method in class org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/HBaseKerberosUtils.html" title="class in org.apache.hadoop.hbase.security">HBaseKerberosUtils</a></dt>
+<dd>
+<div class="block">Set up configuration for a secure HDFS+HBase cluster.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#setSecuredConfiguration-org.apache.hadoop.conf.Configuration-">setSecuredConfiguration(Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/HBaseKerberosUtils.html" title="class in org.apache.hadoop.hbase.security">HBaseKerberosUtils</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#setSecuredHadoopConfiguration-org.apache.hadoop.conf.Configuration-java.lang.String-">setSecuredHadoopConfiguration(Configuration, String)</a></span> - Static method in class org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/HBaseKerberosUtils.html" title="class in org.apache.hadoop.hbase.security">HBaseKerberosUtils</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/PerformanceEvaluation.TestOptions.html#setSize-float-">setSize(float)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/PerformanceEvaluation.TestOptions.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.TestOptions</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/PerformanceEvaluation.TestOptions.html#setSplitPolicy-java.lang.String-">setSplitPolicy(String)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/PerformanceEvaluation.TestOptions.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.TestOptions</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#setSSLConfiguration-org.apache.hadoop.hbase.HBaseTestingUtility-java.lang.Class-">setSSLConfiguration(HBaseTestingUtility, Class)</a></span> - Static method in class org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/HBaseKerberosUtils.html" title="class in org.apache.hadoop.hbase.security">HBaseKerberosUtils</a></dt>
+<dd>
+<div class="block">Set up SSL configuration for HDFS NameNode and DataNode.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/PerformanceEvaluation.TestOptions.html#setStartRow-int-">setStartRow(int)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/PerformanceEvaluation.TestOptions.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.TestOptions</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/MultiThreadedUpdaterWithACL.HBaseUpdaterThreadWithACL.MutateAccessAction.html#setStartTime-long-">setStartTime(long)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/MultiThreadedUpdaterWithACL.HBaseUpdaterThreadWithACL.MutateAccessAction.html" title="class in org.apache.hadoop.hbase.util">MultiThreadedUpdaterWithACL.HBaseUpdaterThreadWithACL.MutateAccessAction</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 2d9b60f..6af42fe 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -146,8 +146,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.Failure.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestBackupDeleteWithFailures.Failure</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.FailurePhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestIncrementalBackupMergeWithFailures.FailurePhase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.Failure.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestBackupDeleteWithFailures.Failure</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 1165b4f..7c00323 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
@@ -3694,6 +3694,22 @@
 </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/security/package-summary.html">org.apache.hadoop.hbase.security</a> with parameters of type <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><span class="typeNameLabel">HBaseKerberosUtils.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/security/HBaseKerberosUtils.html#setSSLConfiguration-org.apache.hadoop.hbase.HBaseTestingUtility-java.lang.Class-">setSSLConfiguration</a></span>(<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;utility,
+                   <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>&nbsp;clazz)</code>
+<div class="block">Set up SSL configuration for HDFS NameNode and DataNode.</div>
+</td>
+</tr>
+</tbody>
+</table>
 </li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.security.access">
 <!--   -->


[16/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
index 3be8992..b73b142 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
@@ -124,7 +124,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.72">AssignProcedure</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.73">AssignProcedure</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a></pre>
 <div class="block">Procedure that describe the assignment of a single region.
  There can only be one RegionTransitionProcedure per region running at a time
@@ -412,7 +412,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.73">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.74">LOG</a></pre>
 </li>
 </ul>
 <a name="forceNewPlan">
@@ -421,7 +421,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>forceNewPlan</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.78">forceNewPlan</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.79">forceNewPlan</a></pre>
 <div class="block">Set to true when we need recalibrate -- choose a new target -- because original assign failed.</div>
 </li>
 </ul>
@@ -431,7 +431,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>targetServer</h4>
-<pre>protected volatile&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.87">targetServer</a></pre>
+<pre>protected volatile&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.88">targetServer</a></pre>
 <div class="block">Gets set as desired target on move, merge, etc., when we want to go to a particular server.
  We may not be able to respect this request but will try. When it is NOT set, then we ask
  the balancer to assign. This value is used below in startTransition to set regionLocation if
@@ -445,7 +445,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockListLast">
 <li class="blockList">
 <h4>COMPARATOR</h4>
-<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure.CompareAssignProcedure</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.93">COMPARATOR</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure.CompareAssignProcedure</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.94">COMPARATOR</a></pre>
 <div class="block">Comparator that will sort AssignProcedures so meta assigns come first, then system table
  assigns and finally user space assigns.</div>
 </li>
@@ -464,7 +464,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>AssignProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.95">AssignProcedure</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.96">AssignProcedure</a>()</pre>
 </li>
 </ul>
 <a name="AssignProcedure-org.apache.hadoop.hbase.client.RegionInfo-">
@@ -473,7 +473,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>AssignProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.100">AssignProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.101">AssignProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</pre>
 </li>
 </ul>
 <a name="AssignProcedure-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">
@@ -482,7 +482,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockListLast">
 <li class="blockList">
 <h4>AssignProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.105">AssignProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.106">AssignProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
                        <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;destinationServer)</pre>
 </li>
 </ul>
@@ -500,7 +500,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableOperationType</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.111">getTableOperationType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.112">getTableOperationType</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html#getTableOperationType--">TableProcedureInterface</a></code></span></div>
 <div class="block">Given an operation type we can take decisions about what to do with pending operations.
  e.g. if we get a delete and we have some table operation pending (e.g. add column)
@@ -517,7 +517,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>isRollbackSupported</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.116">isRollbackSupported</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState&nbsp;state)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.117">isRollbackSupported</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState&nbsp;state)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#isRollbackSupported-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState-">isRollbackSupported</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a></code></dd>
@@ -530,7 +530,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>serializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.126">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.127">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                            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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
 <div class="block">The user-level code of the procedure may have some state to
@@ -552,7 +552,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>deserializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.144">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.145">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                              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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
 <div class="block">Called on store load to allow the user to decode the previously serialized
@@ -573,7 +573,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>startTransition</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.159">startTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.160">startTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                   <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)
                            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>
@@ -590,7 +590,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>updateTransition</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.226">updateTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.227">updateTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                    <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)
                             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>,
                                    <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a></pre>
@@ -614,7 +614,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>finishTransition</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.276">finishTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.277">finishTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                 <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)
                          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>
@@ -631,7 +631,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>reportTransition</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.285">reportTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.286">reportTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                 <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                                 org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode&nbsp;code,
                                 long&nbsp;openSeqNum)
@@ -650,7 +650,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>handleFailure</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.323">handleFailure</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.324">handleFailure</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                            <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</pre>
 <div class="block">Called when dispatch or subsequent OPEN request fail. Can be run by the
  inline dispatch call or later by the ServerCrashProcedure. Our state is
@@ -664,7 +664,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementAndCheckMaxAttempts</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.336">incrementAndCheckMaxAttempts</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.337">incrementAndCheckMaxAttempts</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                              <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</pre>
 </li>
 </ul>
@@ -674,7 +674,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>remoteCallBuild</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.347">remoteCallBuild</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.348">remoteCallBuild</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                                                  <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteProcedure.html#remoteCallBuild-TEnv-TRemote-">RemoteProcedureDispatcher.RemoteProcedure</a></code></span></div>
 <div class="block">For building the remote operation.</div>
@@ -692,7 +692,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>remoteCallFailed</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.354">remoteCallFailed</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.355">remoteCallFailed</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                    <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                                    <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;exception)</pre>
 <dl>
@@ -711,7 +711,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringClassDetails</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.361">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.362">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClassDetails-java.lang.StringBuilder-">Procedure</a></code></span></div>
 <div class="block">Extend the toString() information with the procedure details
  e.g. className and parameters</div>
@@ -729,7 +729,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>getServer</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.367">getServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.368">getServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getServer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">RegionTransitionProcedure</a></code></span></div>
 <div class="block">Used by ServerCrashProcedure to see if this Assign/Unassign needs processing.</div>
 <dl>
@@ -746,7 +746,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getProcedureMetrics</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.375">getProcedureMetrics</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.376">getProcedureMetrics</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcedureMetrics-TEnvironment-">Procedure</a></code></span></div>
 <div class="block">Override this method to provide procedure specific counters for submitted count, failed
  count and time histogram.</div>


[13/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html
index 1cd2bd5..cfe74f4 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html
@@ -224,35 +224,12 @@
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#checkClosedRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">checkClosedRegion</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
-<div class="block">Check whether there is recovered.edits in the closed region
- If any, that means this region is not closed property, we need
- to abort region split to prevent data loss</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#checkClosedRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-">checkClosedRegion</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
-                 <a href="../../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>
-<div class="block">Check whether there is recovered.edits in the closed region
- If any, that means this region is not closed property, we need
- to abort region merge to prevent data loss</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#checkClosedRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">checkClosedRegions</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
-<div class="block">check the closed regions</div>
-</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#checkRegionsToMerge-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo:A-boolean-">checkRegionsToMerge</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                    <a href="../../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge,
                    boolean&nbsp;forcible)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#checkRegionsToMerge-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-boolean-">checkRegionsToMerge</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                    <a href="../../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToMergeA,
@@ -261,7 +238,7 @@
 <div class="block">One time checks.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#checkSplittable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-byte:A-">checkSplittable</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToSplit,
@@ -269,113 +246,113 @@
 <div class="block">Check whether the region is splittable</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#cleanupMergedRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">cleanupMergedRegion</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Clean up a merged region</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>[]</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#createAssignProcedures-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-int-">createAssignProcedures</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                       int&nbsp;regionReplication)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>[]</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#createAssignProcedures-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-int-">createAssignProcedures</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                       int&nbsp;regionReplication)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#createDaughterRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">createDaughterRegions</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Create daughter regions</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/GCRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">GCRegionProcedure</a>[]</code></td>
 <td class="colLast"><span class="typeNameLabel">GCMergedRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.html#createGCRegionProcedures-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">createGCRegionProcedures</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#createMergedRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">createMergedRegion</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Create a merged region</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">UnassignProcedure</a>[]</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#createUnassignProcedures-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-int-">createUnassignProcedures</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                         int&nbsp;regionReplication)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">UnassignProcedure</a>[]</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#createUnassignProcedures-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-int-">createUnassignProcedures</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                         int&nbsp;regionReplication)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[]</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#execute-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">execute</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
 <td class="colLast"><span class="typeNameLabel">GCMergedRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.GCMergedRegionsState-">executeFromState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.GCMergedRegionsState&nbsp;state)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
 <td class="colLast"><span class="typeNameLabel">GCRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/GCRegionProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.GCRegionState-">executeFromState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.GCRegionState&nbsp;state)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState-">executeFromState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState&nbsp;state)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
 <td class="colLast"><span class="typeNameLabel">MoveRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MoveRegionState-">executeFromState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MoveRegionState&nbsp;state)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState-">executeFromState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState&nbsp;state)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">UnassignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#finishTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">finishTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#finishTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">finishTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected abstract void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#finishTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">finishTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#getParentRegionServerName-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getParentRegionServerName</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a></code></td>
 <td class="colLast"><span class="typeNameLabel">UnassignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#getProcedureMetrics-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getProcedureMetrics</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AssignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#getProcedureMetrics-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getProcedureMetrics</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a></code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#getProcedureMetrics-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getProcedureMetrics</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a></code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#getProcedureMetrics-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getProcedureMetrics</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) static org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse</code></td>
 <td class="colLast"><span class="typeNameLabel">Util.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/Util.html#getRegionInfoResponse-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.client.RegionInfo-">getRegionInfoResponse</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                      <a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;regionLocation,
@@ -383,71 +360,84 @@
 <div class="block">Raw call to remote regionserver to get info on a particular region.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) static org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse</code></td>
 <td class="colLast"><span class="typeNameLabel">Util.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/Util.html#getRegionInfoResponse-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.client.RegionInfo-boolean-">getRegionInfoResponse</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                      <a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;regionLocation,
                      <a href="../../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri,
                      boolean&nbsp;includeBestSplitRow)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#getRegionReplication-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getRegionReplication</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#getRegionReplication-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getRegionReplication</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getRegionState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getRegionState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></code></td>
 <td class="colLast"><span class="typeNameLabel">UnassignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#getServer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getServer</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AssignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#getServer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getServer</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>abstract <a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getServer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getServer</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Used by ServerCrashProcedure to see if this Assign/Unassign needs processing.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#getServerName-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getServerName</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">The procedure could be restarted from a different machine.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#handleFailure-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">handleFailure</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
              <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>
 <div class="block">Called when dispatch or subsequent OPEN request fail.</div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#hasRecoveredEdits-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">hasRecoveredEdits</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
+<div class="block">Return list of regions that have recovered.edits...</div>
+</td>
+</tr>
 <tr class="rowColor">
+<td class="colFirst"><code>(package private) static boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#hasRecoveredEdits-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-">hasRecoveredEdits</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+                 <a href="../../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;ri)</code>
+<div class="block">Check whether there are recovered.edits in the parent closed region.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#holdLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">holdLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#holdLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">holdLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#incrementAndCheckMaxAttempts-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">incrementAndCheckMaxAttempts</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                             <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#isMergeable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.RegionState-">isMergeable</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
            <a href="../../../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a>&nbsp;rs)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">UnassignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#isSafeToProceed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-java.io.IOException-">isSafeToProceed</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
@@ -456,17 +446,17 @@
  unassign; e.g.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#isServerOnline-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">isServerOnline</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
               <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#isServerOnline-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">isServerOnline</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
               <a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#mergeStoreFiles-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.regionserver.HRegionFileSystem-org.apache.hadoop.fs.Path-">mergeStoreFiles</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a>&nbsp;regionFs,
@@ -474,200 +464,200 @@
 <div class="block">Create reference file(s) of merging regions under the merged directory</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#openParentRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">openParentRegion</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Rollback close parent region</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignmentManager.RegionInTransitionChore.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html#periodicExecute-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">periodicExecute</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#postCompletedMergeRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postCompletedMergeRegions</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Post merge region action</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#postMergeRegionsCommit-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postMergeRegionsCommit</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Post merge region action</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#postRollBackMergeRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postRollBackMergeRegions</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Action after rollback a merge table regions action.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#postRollBackSplitRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postRollBackSplitRegion</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Action after rollback a split table region action.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#postSplitRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postSplitRegion</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Post split region actions</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#preMergeRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">preMergeRegions</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Pre merge region action</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#preMergeRegionsCommit-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">preMergeRegionsCommit</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Post merge region action</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#prepareMergeRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepareMergeRegion</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Prepare merge and do some check</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#prepareSplitRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepareSplitRegion</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Prepare to Split region.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#preSplitRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">preSplitRegion</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Action before splitting region in a table.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#preSplitRegionAfterMETA-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">preSplitRegionAfterMETA</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Pre split region actions after the Point-of-No-Return step</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#preSplitRegionBeforeMETA-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">preSplitRegionBeforeMETA</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Post split region actions before the Point-of-No-Return step</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">UnassignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#proceed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">proceed</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
        <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>
 <div class="block">Set it up so when procedure is unsuspended, we'll move to the procedure finish.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a></code></td>
 <td class="colLast"><span class="typeNameLabel">UnassignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#remoteCallBuild-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">remoteCallBuild</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AssignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#remoteCallBuild-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">remoteCallBuild</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>abstract <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteCallBuild-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">remoteCallBuild</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">UnassignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-java.io.IOException-">remoteCallFailed</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                 <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;exception)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-java.io.IOException-">remoteCallFailed</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                 <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;exception)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected abstract boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-java.io.IOException-">remoteCallFailed</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                 <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;exception)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-java.io.IOException-">remoteCallFailed</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                 <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;exception)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteOperationCompleted-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">remoteOperationCompleted</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteOperationFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">remoteOperationFailed</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                      <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureException.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureException</a>&nbsp;error)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">UnassignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#reportTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-long-">reportTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                 org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode&nbsp;code,
                 long&nbsp;seqId)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#reportTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-long-">reportTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                 org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode&nbsp;code,
                 long&nbsp;openSeqNum)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected abstract void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#reportTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-long-">reportTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                 org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode&nbsp;code,
                 long&nbsp;seqId)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#reportTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-long-">reportTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                 org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode&nbsp;code,
                 long&nbsp;seqId)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#rollback-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">rollback</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#rollbackCloseRegionsForMerge-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">rollbackCloseRegionsForMerge</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Rollback close regions</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">GCMergedRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.GCMergedRegionsState-">rollbackState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
              org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.GCMergedRegionsState&nbsp;state)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">GCRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/GCRegionProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.GCRegionState-">rollbackState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
              org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.GCRegionState&nbsp;state)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState-">rollbackState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
              org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MergeTableRegionsState&nbsp;state)</code>
@@ -676,12 +666,12 @@
  AssignProcedures) .</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">MoveRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MoveRegionState-">rollbackState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
              org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MoveRegionState&nbsp;state)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState-">rollbackState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
              org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SplitTableRegionState&nbsp;state)</code>
@@ -690,82 +680,82 @@
  AssignProcedure) .</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#setRegionStateToMerging-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">setRegionStateToMerging</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Set the region states to MERGING state</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setTimeoutFailure-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">setTimeoutFailure</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">At end of timeout, wake ourselves up so we run again.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#shouldWaitClientAck-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">shouldWaitClientAck</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#splitStoreFiles-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.regionserver.HRegionFileSystem-">splitStoreFiles</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a>&nbsp;regionFs)</code>
 <div class="block">Create Split directory</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">UnassignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#startTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">startTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#startTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">startTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected abstract boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#startTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">startTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#updateMeta-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateMeta</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Add daughter regions to META</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#updateMetaForMergedRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateMetaForMergedRegions</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Add merged region to META and delete original regions.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">UnassignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#updateTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">updateTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#updateTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">updateTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected abstract boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#updateTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">updateTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>
 <div class="block">Called when the Procedure is in the REGION_TRANSITION_DISPATCH state.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#waitInitialized-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">waitInitialized</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#writeMaxSequenceIdFile-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">writeMaxSequenceIdFile</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#writeMaxSequenceIdFile-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">writeMaxSequenceIdFile</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 c14674a..71e02ff 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -216,10 +216,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/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/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/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</span></a></li>
 </ul>
 </li>
 </ul>


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

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


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

Branch: refs/heads/asf-site
Commit: e71c0987914622e209391143750e167f2600cf1f
Parents: 1d01a06
Author: jenkins <bu...@apache.org>
Authored: Wed Aug 1 14:49:08 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Wed Aug 1 14:49:08 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |    4 +-
 apache_hbase_reference_guide.pdf                |    4 +-
 book.html                                       |    2 +-
 bulk-loads.html                                 |    4 +-
 checkstyle-aggregate.html                       | 6894 +++++++++---------
 checkstyle.rss                                  |    4 +-
 coc.html                                        |    4 +-
 dependencies.html                               |    4 +-
 dependency-convergence.html                     |    4 +-
 dependency-info.html                            |    4 +-
 dependency-management.html                      |    4 +-
 devapidocs/constant-values.html                 |    6 +-
 devapidocs/index-all.html                       |   24 +-
 .../hadoop/hbase/backup/package-tree.html       |    4 +-
 .../hbase/client/class-use/RegionInfo.html      |   82 +-
 .../hadoop/hbase/client/package-tree.html       |   22 +-
 .../hadoop/hbase/coprocessor/package-tree.html  |    2 +-
 .../hadoop/hbase/executor/package-tree.html     |    2 +-
 .../hadoop/hbase/filter/package-tree.html       |    6 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    6 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |    2 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |    2 +-
 .../AssignProcedure.CompareAssignProcedure.html |    6 +-
 .../master/assignment/AssignProcedure.html      |   46 +-
 .../assignment/MergeTableRegionsProcedure.html  |  200 +-
 .../assignment/RegionStates.ServerState.html    |    4 +-
 ...tTableRegionProcedure.StoreFileSplitter.html |   12 +-
 .../assignment/SplitTableRegionProcedure.html   |  130 +-
 .../hbase/master/balancer/package-tree.html     |    2 +-
 .../hadoop/hbase/master/package-tree.html       |    6 +-
 .../procedure/class-use/MasterProcedureEnv.html |  222 +-
 .../hbase/master/procedure/package-tree.html    |    4 +-
 .../hadoop/hbase/monitoring/package-tree.html   |    2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |   20 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    4 +-
 .../hadoop/hbase/quotas/package-tree.html       |    8 +-
 .../hadoop/hbase/regionserver/HStore.html       |   12 +-
 .../hadoop/hbase/regionserver/package-tree.html |   18 +-
 .../regionserver/querymatcher/package-tree.html |    2 +-
 .../hbase/security/access/package-tree.html     |    4 +-
 .../hadoop/hbase/security/package-tree.html     |    2 +-
 .../hadoop/hbase/thrift/package-tree.html       |    2 +-
 .../apache/hadoop/hbase/util/package-tree.html  |    8 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |    2 +-
 .../org/apache/hadoop/hbase/Version.html        |    6 +-
 .../AssignProcedure.CompareAssignProcedure.html |  673 +-
 .../master/assignment/AssignProcedure.html      |  673 +-
 .../assignment/MergeTableRegionsProcedure.html  | 1184 +--
 ...tTableRegionProcedure.StoreFileSplitter.html | 1442 ++--
 .../assignment/SplitTableRegionProcedure.html   | 1442 ++--
 .../regionserver/HStore.StoreFlusherImpl.html   |  243 +-
 .../hadoop/hbase/regionserver/HStore.html       |  243 +-
 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/index-all.html                   |   16 +-
 .../hadoop/hbase/backup/package-tree.html       |    2 +-
 .../hbase/class-use/HBaseTestingUtility.html    |   16 +
 .../hbase/coprocessor/TestSecureExport.html     |   86 +-
 .../TestSaslFanOutOneBlockAsyncDFSOutput.html   |   96 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |   10 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    2 +-
 .../hadoop/hbase/regionserver/package-tree.html |    4 +-
 .../hbase/security/HBaseKerberosUtils.html      |  113 +-
 .../hbase/security/token/SecureTestCluster.html |   49 +-
 .../apache/hadoop/hbase/test/package-tree.html  |    4 +-
 .../thrift/TestThriftSpnegoHttpServer.html      |   36 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |    4 +-
 .../hbase/coprocessor/TestSecureExport.html     |  857 ++-
 .../TestSaslFanOutOneBlockAsyncDFSOutput.html   |  432 +-
 .../TestMergeTableRegionsWhileRSCrash.html      |   11 +-
 .../hbase/security/HBaseKerberosUtils.html      |  274 +-
 .../hbase/security/token/SecureTestCluster.html |  159 +-
 .../thrift/TestThriftSpnegoHttpServer.html      |  437 +-
 94 files changed, 8183 insertions(+), 8227 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 569cab9..973237a 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -601,7 +601,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 3ac56ca..6dd953e 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:20180731142956+00'00')
-/CreationDate (D:20180731144604+00'00')
+/ModDate (D:20180801142955+00'00')
+/CreationDate (D:20180801144546+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index b6ca9f7..fc5ffdb 100644
--- a/book.html
+++ b/book.html
@@ -40976,7 +40976,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 2018-07-31 14:29:56 UTC
+Last updated 2018-08-01 14:29:55 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 8f94ef0..9b3e7dd 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -306,7 +306,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 


[17/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index 8fa3078..217f86d 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -26,7 +26,7 @@ under the License.
     <copyright>&#169;2007 - 2018 The Apache Software Foundation</copyright>
     <item>
       <title>File: 3697,
-             Errors: 15627,
+             Errors: 15626,
              Warnings: 0,
              Infos: 0
       </title>
@@ -21531,7 +21531,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  2
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 17ec608..9e26700 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -375,7 +375,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index e1706d9..13892e4 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -440,7 +440,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 397fefc..3bd85cd 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -905,7 +905,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 101ba34..ba88ea2 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -313,7 +313,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index a22cd86..17aefcc 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="20180731" />
+    <meta name="Date-Revision-yyyymmdd" content="20180801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -1005,7 +1005,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 27db464..6c0f466 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3803,21 +3803,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Tue Jul 31 14:39:51 UTC 2018"</code></td>
+<td class="colLast"><code>"Wed Aug  1 14:39:39 UTC 2018"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"a8e184dc77470bdf9d62e19c5d36bc1de7cf4c6d"</code></td>
+<td class="colLast"><code>"323907f84fcb5ca2cb33131e212ccda4ace76c68"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.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>"c2a84e90859b2952d20d4ce32262b078"</code></td>
+<td class="colLast"><code>"5b583e7044e19505b52ef0c80df82305"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index a9b1fe2..8f51afb 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -10359,22 +10359,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ConnectionImplementation.html#checkClosed--">checkClosed()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ConnectionImplementation.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#checkClosedRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-">checkClosedRegion(MasterProcedureEnv, RegionInfo)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">MergeTableRegionsProcedure</a></dt>
-<dd>
-<div class="block">Check whether there is recovered.edits in the closed region
- If any, that means this region is not closed property, we need
- to abort region merge to prevent data loss</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#checkClosedRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">checkClosedRegion(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">SplitTableRegionProcedure</a></dt>
-<dd>
-<div class="block">Check whether there is recovered.edits in the closed region
- If any, that means this region is not closed property, we need
- to abort region split to prevent data loss</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#checkClosedRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">checkClosedRegions(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">MergeTableRegionsProcedure</a></dt>
-<dd>
-<div class="block">check the closed regions</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FSUtils.html#checkClusterIdExists-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-int-">checkClusterIdExists(FileSystem, Path, int)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSUtils.html" title="class in org.apache.hadoop.hbase.util">FSUtils</a></dt>
 <dd>
 <div class="block">Checks that a cluster ID file exists in the HBase root directory</div>
@@ -55774,6 +55758,14 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.TableCache.html#hasQuota-int-">hasQuota(int)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.TableCache.html" title="class in org.apache.hadoop.hbase.client">AsyncNonMetaRegionLocator.TableCache</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#hasRecoveredEdits-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">hasRecoveredEdits(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">MergeTableRegionsProcedure</a></dt>
+<dd>
+<div class="block">Return list of regions that have recovered.edits...</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#hasRecoveredEdits-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-">hasRecoveredEdits(MasterProcedureEnv, RegionInfo)</a></span> - Static method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">SplitTableRegionProcedure</a></dt>
+<dd>
+<div class="block">Check whether there are recovered.edits in the parent closed region.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/WALSplitter.html#hasRecoveredEdits-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.RegionInfo-">hasRecoveredEdits(FileSystem, Configuration, RegionInfo)</a></span> - Static method in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/WALSplitter.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter</a></dt>
 <dd>
 <div class="block">Check whether there is recovered.edits in the region dir</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 44aeebe..2cd8945 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -167,9 +167,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/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/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
index e5e23ed..f92d8a9 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
@@ -2909,6 +2909,12 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#getTableRegionsInfo-org.apache.hadoop.hbase.TableName-">getTableRegionsInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#hasRecoveredEdits-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">hasRecoveredEdits</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
+<div class="block">Return list of regions that have recovered.edits...</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitOnAssignQueue--">waitOnAssignQueue</a></span>()</code>&nbsp;</td>
 </tr>
@@ -2932,26 +2938,17 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#checkClosedRegion-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-">checkClosedRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
-                 <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>
-<div class="block">Check whether there is recovered.edits in the closed region
- If any, that means this region is not closed property, we need
- to abort region merge to prevent data loss</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#checkMetaLoaded-org.apache.hadoop.hbase.client.RegionInfo-">checkMetaLoaded</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri)</code>
 <div class="block">Used to check if the meta loading is done.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#checkRegionsToMerge-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo:A-boolean-">checkRegionsToMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                    <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge,
                    boolean&nbsp;forcible)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#checkRegionsToMerge-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-boolean-">checkRegionsToMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                    <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToMergeA,
@@ -2960,7 +2957,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">One time checks.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#checkSplittable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-byte:A-">checkSplittable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToSplit,
@@ -2968,97 +2965,97 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Check whether the region is splittable</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#createAssignProcedure-org.apache.hadoop.hbase.client.RegionInfo-">createAssignProcedure</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#createAssignProcedure-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">createAssignProcedure</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
                      <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;targetServer)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#createMergedRegionInfo-org.apache.hadoop.hbase.client.RegionInfo:A-">createMergedRegionInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#createMergedRegionInfo-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">createMergedRegionInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToMergeA,
                       <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToMergeB)</code>
 <div class="block">Create merged region info through the specified two regions</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">MergeTableRegionsProcedure</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#createMergeProcedure-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">createMergeProcedure</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToMergeA,
                     <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToMergeB)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#createRegionStateNode-org.apache.hadoop.hbase.client.RegionInfo-">createRegionStateNode</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">SplitTableRegionProcedure</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#createSplitProcedure-org.apache.hadoop.hbase.client.RegionInfo-byte:A-">createSplitProcedure</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToSplit,
                     byte[]&nbsp;splitKey)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">UnassignProcedure</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#createUnassignProcedure-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-boolean-">createUnassignProcedure</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
                        <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;destinationServer,
                        boolean&nbsp;force)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">UnassignProcedure</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#createUnassignProcedure-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-boolean-boolean-">createUnassignProcedure</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
                        <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;destinationServer,
                        boolean&nbsp;force,
                        boolean&nbsp;removeAfterUnassigning)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionStateStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#deleteRegion-org.apache.hadoop.hbase.client.RegionInfo-">deleteRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#deleteRegion-org.apache.hadoop.hbase.client.RegionInfo-">deleteRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static long</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#getDaughterRegionIdTimestamp-org.apache.hadoop.hbase.client.RegionInfo-">getDaughterRegionIdTimestamp</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri)</code>
 <div class="block">Calculate daughter regionid to use.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionFailedOpen.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionFailedOpen</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#getFailedOpen-org.apache.hadoop.hbase.client.RegionInfo-">getFailedOpen</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getFavoredNodes-org.apache.hadoop.hbase.client.RegionInfo-">getFavoredNodes</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static long</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#getMergedRegionIdTimestamp-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">getMergedRegionIdTimestamp</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToMergeA,
                           <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionToMergeB)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a>&lt;?&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaAssignEvent-org.apache.hadoop.hbase.client.RegionInfo-">getMetaAssignEvent</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;metaRegionInfo)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaForRegion-org.apache.hadoop.hbase.client.RegionInfo-">getMetaForRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionStateStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#getOpenSeqNumForParentRegion-org.apache.hadoop.hbase.client.RegionInfo-">getOpenSeqNumForParentRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;region)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#getOrCreateRegionStateNode-org.apache.hadoop.hbase.client.RegionInfo-">getOrCreateRegionStateNode</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) static org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse</code></td>
 <td class="colLast"><span class="typeNameLabel">Util.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Util.html#getRegionInfoResponse-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.client.RegionInfo-">getRegionInfoResponse</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                      <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;regionLocation,
@@ -3066,37 +3063,44 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Raw call to remote regionserver to get info on a particular region.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) static org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse</code></td>
 <td class="colLast"><span class="typeNameLabel">Util.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Util.html#getRegionInfoResponse-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.client.RegionInfo-boolean-">getRegionInfoResponse</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                      <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;regionLocation,
                      <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri,
                      boolean&nbsp;includeBestSplitRow)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#getRegionServerOfRegion-org.apache.hadoop.hbase.client.RegionInfo-">getRegionServerOfRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#getRegionState-org.apache.hadoop.hbase.client.RegionInfo-">getRegionState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#getRegionStateNode-org.apache.hadoop.hbase.client.RegionInfo-">getRegionStateNode</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#getRegionTransitionProcedure-org.apache.hadoop.hbase.client.RegionInfo-">getRegionTransitionProcedure</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#getRegionTransitionState-org.apache.hadoop.hbase.client.RegionInfo-">getRegionTransitionState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#handleRegionOverStuckWarningThreshold-org.apache.hadoop.hbase.client.RegionInfo-">handleRegionOverStuckWarningThreshold</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) static boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#hasRecoveredEdits-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-">hasRecoveredEdits</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+                 <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;ri)</code>
+<div class="block">Check whether there are recovered.edits in the parent closed region.</div>
+</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isCarryingRegion-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.client.RegionInfo-">isCarryingRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 d0c7850..3f66c59 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -552,24 +552,24 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 e67b778..329f62f 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
@@ -201,8 +201,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.MutationType.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">RegionObserver.MutationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 ae0124e..ce950b0 100644
--- a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
@@ -104,8 +104,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">ExecutorType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">EventType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">ExecutorType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 1d258d9..308d987 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -183,14 +183,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/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/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/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterList.Operator.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterList.Operator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/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.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 16582c7..ed1fd87 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -273,12 +273,12 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/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/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/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/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">CacheConfig.ExternalBlockCaches</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/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>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 b8bf0a6..4335db6 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -294,9 +294,9 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/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/TableSplit.Version.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TableSplit.Version</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/RowCounter.RowCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">RowCounter.RowCounterMapper.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable.SyncMapper.Counter</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
index 70b5948..8719a4d 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.384">AssignProcedure.CompareAssignProcedure</a>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.385">AssignProcedure.CompareAssignProcedure</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>&gt;</pre>
 <div class="block">Sort AssignProcedures such that meta and system assigns come first before user-space assigns.
@@ -198,7 +198,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CompareAssignProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html#line.384">CompareAssignProcedure</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html#line.385">CompareAssignProcedure</a>()</pre>
 </li>
 </ul>
 </li>
@@ -215,7 +215,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html#line.386">compare</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html#line.387">compare</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>&nbsp;left,
                    <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>&nbsp;right)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>


[12/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 4b549da..7b435d2 100644
--- a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
@@ -127,8 +127,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/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>
+<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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 dda8e9b..af7f658 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -437,19 +437,19 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/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/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/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/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/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/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/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/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/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/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Cell.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Cell.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/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/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/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/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/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 8a9d9a1..6f95fa3 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -229,13 +229,13 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/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/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/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/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/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/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/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/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/ThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottlingException.Type</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
index 905969d..959aee4 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
@@ -4071,7 +4071,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreFileSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2660">getStoreFileSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;file)</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2665">getStoreFileSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;file)</pre>
 <div class="block">Computes the length of a store file without succumbing to any errors along the way. If an
  error is encountered, the implementation returns <code>0</code> instead of the actual size.</div>
 <dl>
@@ -4088,7 +4088,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>preFlushSeqIDEstimation</h4>
-<pre>public&nbsp;<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>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2678">preFlushSeqIDEstimation</a>()</pre>
+<pre>public&nbsp;<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>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2683">preFlushSeqIDEstimation</a>()</pre>
 </li>
 </ul>
 <a name="isSloppyMemStore--">
@@ -4097,7 +4097,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>isSloppyMemStore</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2683">isSloppyMemStore</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2688">isSloppyMemStore</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#isSloppyMemStore--">isSloppyMemStore</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -4112,7 +4112,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>clearCompactedfiles</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2687">clearCompactedfiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;filesToRemove)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2692">clearCompactedfiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;filesToRemove)
                           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>
@@ -4126,7 +4126,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>reportArchivedFilesForQuota</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2697">reportArchivedFilesForQuota</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;archivedFiles,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2702">reportArchivedFilesForQuota</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;archivedFiles,
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;fileSizes)</pre>
 </li>
 </ul>
@@ -4136,7 +4136,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getCurrentParallelPutCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2724">getCurrentParallelPutCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2729">getCurrentParallelPutCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getCurrentParallelPutCount--">getCurrentParallelPutCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 7aa8df7..308a8c8 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -704,20 +704,20 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/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/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/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/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/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/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/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/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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.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/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/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/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/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 858ccf6..23060c2 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -130,8 +130,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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>
+<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>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 69f2dc6..8a2815f 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -142,9 +142,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.security.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/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/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessController.OpType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Action</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 29d7634..dfa02b5 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -192,8 +192,8 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.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/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/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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 2923faf..4ade4c1 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -199,9 +199,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/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/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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 9375fd1..f5c7b55 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -515,14 +515,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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/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/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/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/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 cdaa8c0..1b46255 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -16,11 +16,11 @@
 <span class="sourceLineNo">008</span>@InterfaceAudience.Private<a name="line.8"></a>
 <span class="sourceLineNo">009</span>public class Version {<a name="line.9"></a>
 <span class="sourceLineNo">010</span>  public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a>
-<span class="sourceLineNo">011</span>  public static final String revision = "a8e184dc77470bdf9d62e19c5d36bc1de7cf4c6d";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "323907f84fcb5ca2cb33131e212ccda4ace76c68";<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 Jul 31 14:39:51 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Wed Aug  1 14:39:39 UTC 2018";<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 = "c2a84e90859b2952d20d4ce32262b078";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "5b583e7044e19505b52ef0c80df82305";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 


[03/19] hbase-site git commit: Published site at 323907f84fcb5ca2cb33131e212ccda4ace76c68.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e71c0987/testdevapidocs/src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html
index b78db45..a7b8c0c 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/coprocessor/TestSecureExport.html
@@ -35,458 +35,417 @@
 <span class="sourceLineNo">027</span>import java.util.LinkedList;<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 java.util.Map;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.Properties;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.conf.Configuration;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.fs.FileStatus;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.fs.FileSystem;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.fs.Path;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.fs.permission.FsAction;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.fs.permission.FsPermission;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<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.Result;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Table;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.http.ssl.KeyStoreTestUtil;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.mapreduce.ExportUtils;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.mapreduce.Import;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.security.HBaseKerberosUtils;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.security.HadoopSecurityEnabledUserProviderForTesting;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.security.User;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.security.access.AccessControlConstants;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.security.access.AccessControlLists;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.security.access.SecureTestUtil;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.security.access.SecureTestUtil.AccessTestAction;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.security.visibility.Authorizations;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.security.visibility.CellVisibility;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.security.visibility.VisibilityClient;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.security.visibility.VisibilityConstants;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.security.visibility.VisibilityTestUtil;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hdfs.DFSConfigKeys;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.http.HttpConfig;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.minikdc.MiniKdc;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.util.ToolRunner;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.yarn.conf.YarnConfiguration;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.junit.After;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.junit.AfterClass;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.junit.Before;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.junit.BeforeClass;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.junit.ClassRule;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.junit.Rule;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.junit.Test;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.junit.experimental.categories.Category;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.junit.rules.TestName;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.slf4j.Logger;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.slf4j.LoggerFactory;<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>@Category({MediumTests.class})<a name="line.89"></a>
-<span class="sourceLineNo">090</span>public class TestSecureExport {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  @ClassRule<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      HBaseClassTestRule.forClass(TestSecureExport.class);<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private static final Logger LOG = LoggerFactory.getLogger(TestSecureExport.class);<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private static MiniKdc KDC;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  private static final File KEYTAB_FILE = new File(UTIL.getDataTestDir("keytab").toUri().getPath());<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private static String USERNAME;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  private static String SERVER_PRINCIPAL;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  private static String HTTP_PRINCIPAL;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  private static final String FAMILYA_STRING = "fma";<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  private static final String FAMILYB_STRING = "fma";<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private static final byte[] FAMILYA = Bytes.toBytes(FAMILYA_STRING);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private static final byte[] FAMILYB = Bytes.toBytes(FAMILYB_STRING);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  private static final byte[] ROW1 = Bytes.toBytes("row1");<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  private static final byte[] ROW2 = Bytes.toBytes("row2");<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  private static final byte[] ROW3 = Bytes.toBytes("row3");<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private static final byte[] QUAL = Bytes.toBytes("qual");<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  private static final String LOCALHOST = "localhost";<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private static final long NOW = System.currentTimeMillis();<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  // user granted with all global permission<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  private static final String USER_ADMIN = "admin";<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  // user is table owner. will have all permissions on table<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  private static final String USER_OWNER = "owner";<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  // user with rx permissions.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  private static final String USER_RX = "rxuser";<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  // user with exe-only permissions.<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private static final String USER_XO = "xouser";<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  // user with read-only permissions.<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private static final String USER_RO = "rouser";<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  // user with no permissions<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  private static final String USER_NONE = "noneuser";<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private static final String PRIVATE = "private";<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  private static final String CONFIDENTIAL = "confidential";<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static final String SECRET = "secret";<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private static final String TOPSECRET = "topsecret";<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  @Rule<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  public final TestName name = new TestName();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static void setUpKdcServer() throws Exception {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    Properties conf = MiniKdc.createConf();<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    conf.put(MiniKdc.DEBUG, true);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    File kdcFile = new File(UTIL.getDataTestDir("kdc").toUri().getPath());<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    KDC = new MiniKdc(conf, kdcFile);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    KDC.start();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    USERNAME = UserGroupInformation.getLoginUser().getShortUserName();<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    SERVER_PRINCIPAL = USERNAME + "/" + LOCALHOST;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    HTTP_PRINCIPAL = "HTTP/" + LOCALHOST;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    KDC.createPrincipal(KEYTAB_FILE,<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      SERVER_PRINCIPAL,<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      HTTP_PRINCIPAL,<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      USER_ADMIN + "/" + LOCALHOST,<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      USER_OWNER + "/" + LOCALHOST,<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      USER_RX + "/" + LOCALHOST,<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      USER_RO + "/" + LOCALHOST,<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      USER_XO + "/" + LOCALHOST,<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      USER_NONE + "/" + LOCALHOST);<a name="line.147"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.FileStatus;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.fs.FileSystem;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.fs.Path;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.fs.permission.FsAction;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.fs.permission.FsPermission;<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.TableName;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<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.Result;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Table;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.mapreduce.ExportUtils;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.mapreduce.Import;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.security.HBaseKerberosUtils;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.security.HadoopSecurityEnabledUserProviderForTesting;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.security.User;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.security.access.AccessControlConstants;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.security.access.AccessControlLists;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.security.access.SecureTestUtil;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.security.access.SecureTestUtil.AccessTestAction;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.security.visibility.Authorizations;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.security.visibility.CellVisibility;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.security.visibility.VisibilityClient;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.security.visibility.VisibilityConstants;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.security.visibility.VisibilityTestUtil;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.minikdc.MiniKdc;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.util.ToolRunner;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.junit.After;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.junit.AfterClass;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.junit.Before;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.junit.BeforeClass;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.junit.ClassRule;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.junit.Rule;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.junit.Test;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.junit.experimental.categories.Category;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.junit.rules.TestName;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.slf4j.Logger;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.slf4j.LoggerFactory;<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>@Category({MediumTests.class})<a name="line.84"></a>
+<span class="sourceLineNo">085</span>public class TestSecureExport {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  @ClassRule<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      HBaseClassTestRule.forClass(TestSecureExport.class);<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private static final Logger LOG = LoggerFactory.getLogger(TestSecureExport.class);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private static MiniKdc KDC;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  private static final File KEYTAB_FILE = new File(UTIL.getDataTestDir("keytab").toUri().getPath());<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private static String USERNAME;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private static String SERVER_PRINCIPAL;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private static String HTTP_PRINCIPAL;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  private static final String FAMILYA_STRING = "fma";<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  private static final String FAMILYB_STRING = "fma";<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  private static final byte[] FAMILYA = Bytes.toBytes(FAMILYA_STRING);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  private static final byte[] FAMILYB = Bytes.toBytes(FAMILYB_STRING);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  private static final byte[] ROW1 = Bytes.toBytes("row1");<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  private static final byte[] ROW2 = Bytes.toBytes("row2");<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  private static final byte[] ROW3 = Bytes.toBytes("row3");<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private static final byte[] QUAL = Bytes.toBytes("qual");<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  private static final String LOCALHOST = "localhost";<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  private static final long NOW = System.currentTimeMillis();<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  // user granted with all global permission<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private static final String USER_ADMIN = "admin";<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  // user is table owner. will have all permissions on table<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private static final String USER_OWNER = "owner";<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  // user with rx permissions.<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  private static final String USER_RX = "rxuser";<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  // user with exe-only permissions.<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  private static final String USER_XO = "xouser";<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  // user with read-only permissions.<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static final String USER_RO = "rouser";<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  // user with no permissions<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private static final String USER_NONE = "noneuser";<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  private static final String PRIVATE = "private";<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  private static final String CONFIDENTIAL = "confidential";<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  private static final String SECRET = "secret";<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  private static final String TOPSECRET = "topsecret";<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  @Rule<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  public final TestName name = new TestName();<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  private static void setUpKdcServer() throws Exception {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    KDC = UTIL.setupMiniKdc(KEYTAB_FILE);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    USERNAME = UserGroupInformation.getLoginUser().getShortUserName();<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    SERVER_PRINCIPAL = USERNAME + "/" + LOCALHOST;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    HTTP_PRINCIPAL = "HTTP/" + LOCALHOST;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    KDC.createPrincipal(KEYTAB_FILE,<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      SERVER_PRINCIPAL,<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      HTTP_PRINCIPAL,<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      USER_ADMIN + "/" + LOCALHOST,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      USER_OWNER + "/" + LOCALHOST,<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      USER_RX + "/" + LOCALHOST,<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      USER_RO + "/" + LOCALHOST,<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      USER_XO + "/" + LOCALHOST,<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      USER_NONE + "/" + LOCALHOST);<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>  private static User getUserByLogin(final String user) throws IOException {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    return User.create(UserGroupInformation.loginUserFromKeytabAndReturnUGI(<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        getPrinciple(user), KEYTAB_FILE.getAbsolutePath()));<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>  private static String getPrinciple(final String user) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    return user + "/" + LOCALHOST + "@" + KDC.getRealm();<a name="line.147"></a>
 <span class="sourceLineNo">148</span>  }<a name="line.148"></a>
 <span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private static User getUserByLogin(final String user) throws IOException {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    return User.create(UserGroupInformation.loginUserFromKeytabAndReturnUGI(<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        getPrinciple(user), KEYTAB_FILE.getAbsolutePath()));<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  }<a name="line.153"></a>
+<span class="sourceLineNo">150</span>  private static void setUpClusterKdc() throws Exception {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    HBaseKerberosUtils.setSecuredConfiguration(UTIL.getConfiguration(),<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        SERVER_PRINCIPAL + "@" + KDC.getRealm(), HTTP_PRINCIPAL + "@" + KDC.getRealm());<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    HBaseKerberosUtils.setSSLConfiguration(UTIL, TestSecureExport.class);<a name="line.153"></a>
 <span class="sourceLineNo">154</span><a name="line.154"></a>
-<span class="sourceLineNo">155</span>  private static String getPrinciple(final String user) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    return user + "/" + LOCALHOST + "@" + KDC.getRealm();<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  }<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  private static void setUpClusterKdc() throws Exception {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    HBaseKerberosUtils.setKeytabFileForTesting(KEYTAB_FILE.getAbsolutePath());<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    HBaseKerberosUtils.setPrincipalForTesting(SERVER_PRINCIPAL + "@" + KDC.getRealm());<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    HBaseKerberosUtils.setSecuredConfiguration(UTIL.getConfiguration());<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    // if we drop support for hadoop-2.4.0 and hadoop-2.4.1,<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    // the following key should be changed.<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    // 1) DFS_NAMENODE_USER_NAME_KEY -&gt; DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // 2) DFS_DATANODE_USER_NAME_KEY -&gt; DFS_DATANODE_KERBEROS_PRINCIPAL_KEY<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    UTIL.getConfiguration().set(DFSConfigKeys.DFS_NAMENODE_USER_NAME_KEY,<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        SERVER_PRINCIPAL + "@" + KDC.getRealm());<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    UTIL.getConfiguration().set(DFSConfigKeys.DFS_DATANODE_USER_NAME_KEY,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        SERVER_PRINCIPAL + "@" + KDC.getRealm());<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    UTIL.getConfiguration().set(DFSConfigKeys.DFS_NAMENODE_KEYTAB_FILE_KEY,<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        KEYTAB_FILE.getAbsolutePath());<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    UTIL.getConfiguration().set(DFSConfigKeys.DFS_DATANODE_KEYTAB_FILE_KEY,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        KEYTAB_FILE.getAbsolutePath());<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    // set yarn principal<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    UTIL.getConfiguration().set(YarnConfiguration.RM_PRINCIPAL,<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        SERVER_PRINCIPAL + "@" + KDC.getRealm());<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    UTIL.getConfiguration().set(YarnConfiguration.NM_PRINCIPAL,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        SERVER_PRINCIPAL + "@" + KDC.getRealm());<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    UTIL.getConfiguration().set(DFSConfigKeys.DFS_WEB_AUTHENTICATION_KERBEROS_PRINCIPAL_KEY,<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        HTTP_PRINCIPAL + "@" + KDC.getRealm());<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    UTIL.getConfiguration().setBoolean(DFSConfigKeys.DFS_BLOCK_ACCESS_TOKEN_ENABLE_KEY, true);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    UTIL.getConfiguration().set(DFSConfigKeys.DFS_HTTP_POLICY_KEY,<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        HttpConfig.Policy.HTTPS_ONLY.name());<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    UTIL.getConfiguration().set(DFSConfigKeys.DFS_NAMENODE_HTTPS_ADDRESS_KEY, LOCALHOST + ":0");<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    UTIL.getConfiguration().set(DFSConfigKeys.DFS_DATANODE_HTTPS_ADDRESS_KEY, LOCALHOST + ":0");<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>    File keystoresDir = new File(UTIL.getDataTestDir("keystore").toUri().getPath());<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    keystoresDir.mkdirs();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    String sslConfDir = KeyStoreTestUtil.getClasspathDir(TestSecureExport.class);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    KeyStoreTestUtil.setupSSLConfig(keystoresDir.getAbsolutePath(), sslConfDir,<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        UTIL.getConfiguration(), false);<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    UTIL.getConfiguration().setBoolean("ignore.secure.ports.for.testing", true);<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    UserGroupInformation.setConfiguration(UTIL.getConfiguration());<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    UTIL.getConfiguration().set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY,<a name="line.196"></a>
-<span class="sourceLineNo">197</span>        UTIL.getConfiguration().get(<a name="line.197"></a>
-<span class="sourceLineNo">198</span>            CoprocessorHost.REGION_COPROCESSOR_CONF_KEY) + "," + Export.class.getName());<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>  private static void addLabels(final Configuration conf, final List&lt;String&gt; users,<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      final List&lt;String&gt; labels) throws Exception {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    PrivilegedExceptionAction&lt;VisibilityLabelsProtos.VisibilityLabelsResponse&gt; action<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      = () -&gt; {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        try (Connection conn = ConnectionFactory.createConnection(conf)) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>          VisibilityClient.addLabels(conn, labels.toArray(new String[labels.size()]));<a name="line.206"></a>
-<span class="sourceLineNo">207</span>          for (String user : users) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>            VisibilityClient.setAuths(conn, labels.toArray(new String[labels.size()]), user);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>          }<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        } catch (Throwable t) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          throw new IOException(t);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        return null;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      };<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    getUserByLogin(USER_ADMIN).runAs(action);<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>  @Before<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  public void announce() {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    LOG.info("Running " + name.getMethodName());<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>  @After<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  public void cleanup() throws IOException {<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>  private static void clearOutput(Path path) throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    FileSystem fs = path.getFileSystem(UTIL.getConfiguration());<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    if (fs.exists(path)) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      assertEquals(true, fs.delete(path, true));<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>  /**<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   * Sets the security firstly for getting the correct default realm.<a name="line.235"></a>
-<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  @BeforeClass<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  public static void beforeClass() throws Exception {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    UserProvider.setUserProviderForTesting(UTIL.getConfiguration(),<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        HadoopSecurityEnabledUserProviderForTesting.class);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    setUpKdcServer();<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    SecureTestUtil.enableSecurity(UTIL.getConfiguration());<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    UTIL.getConfiguration().setBoolean(AccessControlConstants.EXEC_PERMISSION_CHECKS_KEY, true);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    VisibilityTestUtil.enableVisiblityLabels(UTIL.getConfiguration());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    SecureTestUtil.verifyConfiguration(UTIL.getConfiguration());<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    setUpClusterKdc();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    UTIL.startMiniCluster();<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    UTIL.waitUntilAllRegionsAssigned(AccessControlLists.ACL_TABLE_NAME);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    UTIL.waitUntilAllRegionsAssigned(VisibilityConstants.LABELS_TABLE_NAME);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    UTIL.waitTableEnabled(AccessControlLists.ACL_TABLE_NAME, 50000);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    UTIL.waitTableEnabled(VisibilityConstants.LABELS_TABLE_NAME, 50000);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    SecureTestUtil.grantGlobal(UTIL, USER_ADMIN,<a name="line.252"></a>
-<span class="sourceLineNo">253</span>            Permission.Action.ADMIN,<a name="line.253"></a>
-<span class="sourceLineNo">254</span>            Permission.Action.CREATE,<a name="line.254"></a>
-<span class="sourceLineNo">255</span>            Permission.Action.EXEC,<a name="line.255"></a>
-<span class="sourceLineNo">256</span>            Permission.Action.READ,<a name="line.256"></a>
-<span class="sourceLineNo">257</span>            Permission.Action.WRITE);<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    addLabels(UTIL.getConfiguration(), Arrays.asList(USER_OWNER),<a name="line.258"></a>
-<span class="sourceLineNo">259</span>            Arrays.asList(PRIVATE, CONFIDENTIAL, SECRET, TOPSECRET));<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>  @AfterClass<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  public static void afterClass() throws Exception {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    if (KDC != null) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      KDC.stop();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    UTIL.shutdownMiniCluster();<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>   * Test the ExportEndpoint's access levels. The {@link Export} test is ignored<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * since the access exceptions cannot be collected from the mappers.<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   */<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  @Test<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  public void testAccessCase() throws Throwable {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    final String exportTable = name.getMethodName();<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    TableDescriptor exportHtd = TableDescriptorBuilder<a name="line.277"></a>
-<span class="sourceLineNo">278</span>            .newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.278"></a>
-<span class="sourceLineNo">279</span>            .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILYA))<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            .setOwnerString(USER_OWNER)<a name="line.280"></a>
-<span class="sourceLineNo">281</span>            .build();<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    SecureTestUtil.createTable(UTIL, exportHtd, new byte[][]{Bytes.toBytes("s")});<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    SecureTestUtil.grantOnTable(UTIL, USER_RO,<a name="line.283"></a>
-<span class="sourceLineNo">284</span>            TableName.valueOf(exportTable), null, null,<a name="line.284"></a>
-<span class="sourceLineNo">285</span>            Permission.Action.READ);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    SecureTestUtil.grantOnTable(UTIL, USER_RX,<a name="line.286"></a>
-<span class="sourceLineNo">287</span>            TableName.valueOf(exportTable), null, null,<a name="line.287"></a>
-<span class="sourceLineNo">288</span>            Permission.Action.READ,<a name="line.288"></a>
-<span class="sourceLineNo">289</span>            Permission.Action.EXEC);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    SecureTestUtil.grantOnTable(UTIL, USER_XO,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            TableName.valueOf(exportTable), null, null,<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            Permission.Action.EXEC);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    assertEquals(4, AccessControlLists.getTablePermissions(UTIL.getConfiguration(),<a name="line.293"></a>
-<span class="sourceLineNo">294</span>            TableName.valueOf(exportTable)).size());<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    AccessTestAction putAction = () -&gt; {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      Put p = new Put(ROW1);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      p.addColumn(FAMILYA, Bytes.toBytes("qual_0"), NOW, QUAL);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      p.addColumn(FAMILYA, Bytes.toBytes("qual_1"), NOW, QUAL);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      try (Connection conn = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.299"></a>
-<span class="sourceLineNo">300</span>              Table t = conn.getTable(TableName.valueOf(exportTable))) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        t.put(p);<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>    // no hdfs access.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    SecureTestUtil.verifyAllowed(putAction,<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      getUserByLogin(USER_ADMIN),<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      getUserByLogin(USER_OWNER));<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    SecureTestUtil.verifyDenied(putAction,<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      getUserByLogin(USER_RO),<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      getUserByLogin(USER_XO),<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      getUserByLogin(USER_RX),<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      getUserByLogin(USER_NONE));<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>    final FileSystem fs = UTIL.getDFSCluster().getFileSystem();<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    final Path openDir = fs.makeQualified(new Path("testAccessCase"));<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    fs.mkdirs(openDir);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    fs.setPermission(openDir, new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL));<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    final Path output = fs.makeQualified(new Path(openDir, "output"));<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    AccessTestAction exportAction = () -&gt; {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      try {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        String[] args = new String[]{exportTable, output.toString()};<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        Map&lt;byte[], Export.Response&gt; result<a name="line.323"></a>
-<span class="sourceLineNo">324</span>                = Export.run(new Configuration(UTIL.getConfiguration()), args);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        long rowCount = 0;<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        long cellCount = 0;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        for (Export.Response r : result.values()) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>          rowCount += r.getRowCount();<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          cellCount += r.getCellCount();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        }<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        assertEquals(1, rowCount);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        assertEquals(2, cellCount);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>        return null;<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      } catch (ServiceException | IOException ex) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        throw ex;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      } catch (Throwable ex) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        LOG.error(ex.toString(), ex);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        throw new Exception(ex);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      } finally {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        if (fs.exists(new Path(openDir, "output"))) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          // if export completes successfully, every file under the output directory should be<a name="line.341"></a>
-<span class="sourceLineNo">342</span>          // owned by the current user, not the hbase service user.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>          FileStatus outputDirFileStatus = fs.getFileStatus(new Path(openDir, "output"));<a name="line.343"></a>
-<span class="sourceLineNo">344</span>          String currentUserName = User.getCurrent().getShortName();<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          assertEquals("Unexpected file owner", currentUserName, outputDirFileStatus.getOwner());<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>          FileStatus[] outputFileStatus = fs.listStatus(new Path(openDir, "output"));<a name="line.347"></a>
-<span class="sourceLineNo">348</span>          for (FileStatus fileStatus: outputFileStatus) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>            assertEquals("Unexpected file owner", currentUserName, fileStatus.getOwner());<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        } else {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>          LOG.info("output directory doesn't exist. Skip check");<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>        clearOutput(output);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      }<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    };<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    SecureTestUtil.verifyDenied(exportAction,<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      getUserByLogin(USER_RO),<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      getUserByLogin(USER_XO),<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      getUserByLogin(USER_NONE));<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    SecureTestUtil.verifyAllowed(exportAction,<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      getUserByLogin(USER_ADMIN),<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      getUserByLogin(USER_OWNER),<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      getUserByLogin(USER_RX));<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    AccessTestAction deleteAction = () -&gt; {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      UTIL.deleteTable(TableName.valueOf(exportTable));<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      return null;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    };<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    SecureTestUtil.verifyAllowed(deleteAction, getUserByLogin(USER_OWNER));<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    fs.delete(openDir, true);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  @Test<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  public void testVisibilityLabels() throws IOException, Throwable {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    final String exportTable = name.getMethodName() + "_export";<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    final String importTable = name.getMethodName() + "_import";<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    final TableDescriptor exportHtd = TableDescriptorBuilder<a name="line.378"></a>
-<span class="sourceLineNo">379</span>            .newBuilder(TableName.valueOf(exportTable))<a name="line.379"></a>
-<span class="sourceLineNo">380</span>            .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILYA))<a name="line.380"></a>
-<span class="sourceLineNo">381</span>            .setOwnerString(USER_OWNER)<a name="line.381"></a>
-<span class="sourceLineNo">382</span>            .build();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    SecureTestUtil.createTable(UTIL, exportHtd, new byte[][]{Bytes.toBytes("s")});<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    AccessTestAction putAction = () -&gt; {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      Put p1 = new Put(ROW1);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      p1.addColumn(FAMILYA, QUAL, NOW, QUAL);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      p1.setCellVisibility(new CellVisibility(SECRET));<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      Put p2 = new Put(ROW2);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      p2.addColumn(FAMILYA, QUAL, NOW, QUAL);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>      p2.setCellVisibility(new CellVisibility(PRIVATE + " &amp; " + CONFIDENTIAL));<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      Put p3 = new Put(ROW3);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      p3.addColumn(FAMILYA, QUAL, NOW, QUAL);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      p3.setCellVisibility(new CellVisibility("!" + CONFIDENTIAL + " &amp; " + TOPSECRET));<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      try (Connection conn = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.394"></a>
-<span class="sourceLineNo">395</span>              Table t = conn.getTable(TableName.valueOf(exportTable))) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        t.put(p1);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        t.put(p2);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        t.put(p3);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      }<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      return null;<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    };<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    SecureTestUtil.verifyAllowed(putAction, getUserByLogin(USER_OWNER));<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    List&lt;Pair&lt;List&lt;String&gt;, Integer&gt;&gt; labelsAndRowCounts = new LinkedList&lt;&gt;();<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    labelsAndRowCounts.add(new Pair&lt;&gt;(Arrays.asList(SECRET), 1));<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    labelsAndRowCounts.add(new Pair&lt;&gt;(Arrays.asList(PRIVATE, CONFIDENTIAL), 1));<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    labelsAndRowCounts.add(new Pair&lt;&gt;(Arrays.asList(TOPSECRET), 1));<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    labelsAndRowCounts.add(new Pair&lt;&gt;(Arrays.asList(TOPSECRET, CONFIDENTIAL), 0));<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    labelsAndRowCounts.add(new Pair&lt;&gt;(Arrays.asList(TOPSECRET, CONFIDENTIAL, PRIVATE, SECRET), 2));<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    for (final Pair&lt;List&lt;String&gt;, Integer&gt; labelsAndRowCount : labelsAndRowCounts) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      final List&lt;String&gt; labels = labelsAndRowCount.getFirst();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      final int rowCount = labelsAndRowCount.getSecond();<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      //create a open permission directory.<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      final Path openDir = new Path("testAccessCase");<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      final FileSystem fs = openDir.getFileSystem(UTIL.getConfiguration());<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      fs.mkdirs(openDir);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      fs.setPermission(openDir, new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL));<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      final Path output = fs.makeQualified(new Path(openDir, "output"));<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      AccessTestAction exportAction = () -&gt; {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        StringBuilder buf = new StringBuilder();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        labels.forEach(v -&gt; buf.append(v).append(","));<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        buf.deleteCharAt(buf.length() - 1);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        try {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>          String[] args = new String[]{<a name="line.423"></a>
-<span class="sourceLineNo">424</span>            "-D " + ExportUtils.EXPORT_VISIBILITY_LABELS + "=" + buf.toString(),<a name="line.424"></a>
-<span class="sourceLineNo">425</span>            exportTable,<a name="line.425"></a>
-<span class="sourceLineNo">426</span>            output.toString(),};<a name="line.426"></a>
-<span class="sourceLineNo">427</span>          Export.run(new Configuration(UTIL.getConfiguration()), args);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>          return null;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        } catch (ServiceException | IOException ex) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>          throw ex;<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        } catch (Throwable ex) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          throw new Exception(ex);<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>      SecureTestUtil.verifyAllowed(exportAction, getUserByLogin(USER_OWNER));<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      final TableDescriptor importHtd = TableDescriptorBuilder<a name="line.436"></a>
-<span class="sourceLineNo">437</span>              .newBuilder(TableName.valueOf(importTable))<a name="line.437"></a>
-<span class="sourceLineNo">438</span>              .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILYB))<a name="line.438"></a>
-<span class="sourceLineNo">439</span>              .setOwnerString(USER_OWNER)<a name="line.439"></a>
-<span class="sourceLineNo">440</span>              .build();<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      SecureTestUtil.createTable(UTIL, importHtd, new byte[][]{Bytes.toBytes("s")});<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      AccessTestAction importAction = () -&gt; {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        String[] args = new String[]{<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          "-D" + Import.CF_RENAME_PROP + "=" + FAMILYA_STRING + ":" + FAMILYB_STRING,<a name="line.444"></a>
-<span class="sourceLineNo">445</span>          importTable,<a name="line.445"></a>
-<span class="sourceLineNo">446</span>          output.toString()<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        };<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        assertEquals(0, ToolRunner.run(<a name="line.448"></a>
-<span class="sourceLineNo">449</span>            new Configuration(UTIL.getConfiguration()), new Import(), args));<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        return null;<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      };<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      SecureTestUtil.verifyAllowed(importAction, getUserByLogin(USER_OWNER));<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      AccessTestAction scanAction = () -&gt; {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>        Scan scan = new Scan();<a name="line.454"></a>
-<span class="sourceLineNo">455</span>        scan.setAuthorizations(new Authorizations(labels));<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        try (Connection conn = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.456"></a>
-<span class="sourceLineNo">457</span>                Table table = conn.getTable(importHtd.getTableName());<a name="line.457"></a>
-<span class="sourceLineNo">458</span>                ResultScanner scanner = table.getScanner(scan)) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>          int count = 0;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>          for (Result r : scanner) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>            ++count;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>          }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>          assertEquals(rowCount, count);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        return null;<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      };<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      SecureTestUtil.verifyAllowed(scanAction, getUserByLogin(USER_OWNER));<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      AccessTestAction deleteAction = () -&gt; {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        UTIL.deleteTable(importHtd.getTableName());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>        return null;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      };<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      SecureTestUtil.verifyAllowed(deleteAction, getUserByLogin(USER_OWNER));<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      clearOutput(output);<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    AccessTestAction deleteAction = () -&gt; {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      UTIL.deleteTable(exportHtd.getTableName());<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      return null;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    };<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    SecureTestUtil.verifyAllowed(deleteAction, getUserByLogin(USER_OWNER));<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
-<span class="sourceLineNo">481</span>}<a name="line.481"></a>
+<span class="sourceLineNo">155</span>    UTIL.getConfiguration().set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY,<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        UTIL.getConfiguration().get(<a name="line.156"></a>
+<span class="sourceLineNo">157</span>            CoprocessorHost.REGION_COPROCESSOR_CONF_KEY) + "," + Export.class.getName());<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
+<span class="sourceLineNo">159</span><a name="line.159"></a>
+<span class="sourceLineNo">160</span>  private static void addLabels(final Configuration conf, final List&lt;String&gt; users,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      final List&lt;String&gt; labels) throws Exception {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    PrivilegedExceptionAction&lt;VisibilityLabelsProtos.VisibilityLabelsResponse&gt; action<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      = () -&gt; {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        try (Connection conn = ConnectionFactory.createConnection(conf)) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          VisibilityClient.addLabels(conn, labels.toArray(new String[labels.size()]));<a name="line.165"></a>
+<span class="sourceLineNo">166</span>          for (String user : users) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>            VisibilityClient.setAuths(conn, labels.toArray(new String[labels.size()]), user);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>          }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        } catch (Throwable t) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          throw new IOException(t);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        }<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        return null;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      };<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    getUserByLogin(USER_ADMIN).runAs(action);<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>  @Before<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public void announce() {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    LOG.info("Running " + name.getMethodName());<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  }<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>  @After<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  public void cleanup() throws IOException {<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 void clearOutput(Path path) throws IOException {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    FileSystem fs = path.getFileSystem(UTIL.getConfiguration());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    if (fs.exists(path)) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      assertEquals(true, fs.delete(path, true));<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>  /**<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * Sets the security firstly for getting the correct default realm.<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   */<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  @BeforeClass<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  public static void beforeClass() throws Exception {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    UserProvider.setUserProviderForTesting(UTIL.getConfiguration(),<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        HadoopSecurityEnabledUserProviderForTesting.class);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    setUpKdcServer();<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    SecureTestUtil.enableSecurity(UTIL.getConfiguration());<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    UTIL.getConfiguration().setBoolean(AccessControlConstants.EXEC_PERMISSION_CHECKS_KEY, true);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    VisibilityTestUtil.enableVisiblityLabels(UTIL.getConfiguration());<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    SecureTestUtil.verifyConfiguration(UTIL.getConfiguration());<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    setUpClusterKdc();<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    UTIL.startMiniCluster();<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    UTIL.waitUntilAllRegionsAssigned(AccessControlLists.ACL_TABLE_NAME);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    UTIL.waitUntilAllRegionsAssigned(VisibilityConstants.LABELS_TABLE_NAME);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    UTIL.waitTableEnabled(AccessControlLists.ACL_TABLE_NAME, 50000);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    UTIL.waitTableEnabled(VisibilityConstants.LABELS_TABLE_NAME, 50000);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    SecureTestUtil.grantGlobal(UTIL, USER_ADMIN,<a name="line.211"></a>
+<span class="sourceLineNo">212</span>            Permission.Action.ADMIN,<a name="line.212"></a>
+<span class="sourceLineNo">213</span>            Permission.Action.CREATE,<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            Permission.Action.EXEC,<a name="line.214"></a>
+<span class="sourceLineNo">215</span>            Permission.Action.READ,<a name="line.215"></a>
+<span class="sourceLineNo">216</span>            Permission.Action.WRITE);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    addLabels(UTIL.getConfiguration(), Arrays.asList(USER_OWNER),<a name="line.217"></a>
+<span class="sourceLineNo">218</span>            Arrays.asList(PRIVATE, CONFIDENTIAL, SECRET, TOPSECRET));<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>  @AfterClass<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  public static void afterClass() throws Exception {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    if (KDC != null) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      KDC.stop();<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    }<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    UTIL.shutdownMiniCluster();<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>   * Test the ExportEndpoint's access levels. The {@link Export} test is ignored<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * since the access exceptions cannot be collected from the mappers.<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   */<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  @Test<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  public void testAccessCase() throws Throwable {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    final String exportTable = name.getMethodName();<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    TableDescriptor exportHtd = TableDescriptorBuilder<a name="line.236"></a>
+<span class="sourceLineNo">237</span>            .newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILYA))<a name="line.238"></a>
+<span class="sourceLineNo">239</span>            .setOwnerString(USER_OWNER)<a name="line.239"></a>
+<span class="sourceLineNo">240</span>            .build();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    SecureTestUtil.createTable(UTIL, exportHtd, new byte[][]{Bytes.toBytes("s")});<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    SecureTestUtil.grantOnTable(UTIL, USER_RO,<a name="line.242"></a>
+<span class="sourceLineNo">243</span>            TableName.valueOf(exportTable), null, null,<a name="line.243"></a>
+<span class="sourceLineNo">244</span>            Permission.Action.READ);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    SecureTestUtil.grantOnTable(UTIL, USER_RX,<a name="line.245"></a>
+<span class="sourceLineNo">246</span>            TableName.valueOf(exportTable), null, null,<a name="line.246"></a>
+<span class="sourceLineNo">247</span>            Permission.Action.READ,<a name="line.247"></a>
+<span class="sourceLineNo">248</span>            Permission.Action.EXEC);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    SecureTestUtil.grantOnTable(UTIL, USER_XO,<a name="line.249"></a>
+<span class="sourceLineNo">250</span>            TableName.valueOf(exportTable), null, null,<a name="line.250"></a>
+<span class="sourceLineNo">251</span>            Permission.Action.EXEC);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    assertEquals(4, AccessControlLists.getTablePermissions(UTIL.getConfiguration(),<a name="line.252"></a>
+<span class="sourceLineNo">253</span>            TableName.valueOf(exportTable)).size());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    AccessTestAction putAction = () -&gt; {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      Put p = new Put(ROW1);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      p.addColumn(FAMILYA, Bytes.toBytes("qual_0"), NOW, QUAL);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      p.addColumn(FAMILYA, Bytes.toBytes("qual_1"), NOW, QUAL);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      try (Connection conn = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.258"></a>
+<span class="sourceLineNo">259</span>              Table t = conn.getTable(TableName.valueOf(exportTable))) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        t.put(p);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      }<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      return null;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    };<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    // no hdfs access.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    SecureTestUtil.verifyAllowed(putAction,<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      getUserByLogin(USER_ADMIN),<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      getUserByLogin(USER_OWNER));<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    SecureTestUtil.verifyDenied(putAction,<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      getUserByLogin(USER_RO),<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      getUserByLogin(USER_XO),<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      getUserByLogin(USER_RX),<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      getUserByLogin(USER_NONE));<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>    final FileSystem fs = UTIL.getDFSCluster().getFileSystem();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    final Path openDir = fs.makeQualified(new Path("testAccessCase"));<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    fs.mkdirs(openDir);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    fs.setPermission(openDir, new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL));<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    final Path output = fs.makeQualified(new Path(openDir, "output"));<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    AccessTestAction exportAction = () -&gt; {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      try {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        String[] args = new String[]{exportTable, output.toString()};<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        Map&lt;byte[], Export.Response&gt; result<a name="line.282"></a>
+<span class="sourceLineNo">283</span>                = Export.run(new Configuration(UTIL.getConfiguration()), args);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        long rowCount = 0;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        long cellCount = 0;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        for (Export.Response r : result.values()) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          rowCount += r.getRowCount();<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          cellCount += r.getCellCount();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        }<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        assertEquals(1, rowCount);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        assertEquals(2, cellCount);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        return null;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      } catch (ServiceException | IOException ex) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        throw ex;<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      } catch (Throwable ex) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        LOG.error(ex.toString(), ex);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        throw new Exception(ex);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      } finally {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        if (fs.exists(new Path(openDir, "output"))) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>          // if export completes successfully, every file under the output directory should be<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          // owned by the current user, not the hbase service user.<a name="line.301"></a>
+<span class="sourceLineNo">302</span>          FileStatus outputDirFileStatus = fs.getFileStatus(new Path(openDir, "output"));<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          String currentUserName = User.getCurrent().getShortName();<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          assertEquals("Unexpected file owner", currentUserName, outputDirFileStatus.getOwner());<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>          FileStatus[] outputFileStatus = fs.listStatus(new Path(openDir, "output"));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>          for (FileStatus fileStatus: outputFileStatus) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>            assertEquals("Unexpected file owner", currentUserName, fileStatus.getOwner());<a name="line.308"></a>
+<span class="sourceLineNo">309</span>          }<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        } else {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          LOG.info("output directory doesn't exist. Skip check");<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>        clearOutput(output);<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>    SecureTestUtil.verifyDenied(exportAction,<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      getUserByLogin(USER_RO),<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      getUserByLogin(USER_XO),<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      getUserByLogin(USER_NONE));<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    SecureTestUtil.verifyAllowed(exportAction,<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      getUserByLogin(USER_ADMIN),<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      getUserByLogin(USER_OWNER),<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      getUserByLogin(USER_RX));<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    AccessTestAction deleteAction = () -&gt; {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      UTIL.deleteTable(TableName.valueOf(exportTable));<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      return null;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    };<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    SecureTestUtil.verifyAllowed(deleteAction, getUserByLogin(USER_OWNER));<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    fs.delete(openDir, true);<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>  @Test<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  public void testVisibilityLabels() throws IOException, Throwable {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    final String exportTable = name.getMethodName() + "_export";<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    final String importTable = name.getMethodName() + "_import";<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    final TableDescriptor exportHtd = TableDescriptorBuilder<a name="line.337"></a>
+<span class="sourceLineNo">338</span>            .newBuilder(TableName.valueOf(exportTable))<a name="line.338"></a>
+<span class="sourceLineNo">339</span>            .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILYA))<a name="line.339"></a>
+<span class="sourceLineNo">340</span>            .setOwnerString(USER_OWNER)<a name="line.340"></a>
+<span class="sourceLineNo">341</span>            .build();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    SecureTestUtil.createTable(UTIL, exportHtd, new byte[][]{Bytes.toBytes("s")});<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    AccessTestAction putAction = () -&gt; {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      Put p1 = new Put(ROW1);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      p1.addColumn(FAMILYA, QUAL, NOW, QUAL);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      p1.setCellVisibility(new CellVisibility(SECRET));<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      Put p2 = new Put(ROW2);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      p2.addColumn(FAMILYA, QUAL, NOW, QUAL);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      p2.setCellVisibility(new CellVisibility(PRIVATE + " &amp; " + CONFIDENTIAL));<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      Put p3 = new Put(ROW3);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      p3.addColumn(FAMILYA, QUAL, NOW, QUAL);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      p3.setCellVisibility(new CellVisibility("!" + CONFIDENTIAL + " &amp; " + TOPSECRET));<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      try (Connection conn = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>              Table t = conn.getTable(TableName.valueOf(exportTable))) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        t.put(p1);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        t.put(p2);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        t.put(p3);<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      return null;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    };<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    SecureTestUtil.verifyAllowed(putAction, getUserByLogin(USER_OWNER));<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    List&lt;Pair&lt;List&lt;String&gt;, Integer&gt;&gt; labelsAndRowCounts = new LinkedList&lt;&gt;();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    labelsAndRowCounts.add(new Pair&lt;&gt;(Arrays.asList(SECRET), 1));<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    labelsAndRowCounts.add(new Pair&lt;&gt;(Arrays.asList(PRIVATE, CONFIDENTIAL), 1));<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    labelsAndRowCounts.add(new Pair&lt;&gt;(Arrays.asList(TOPSECRET), 1));<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    labelsAndRowCounts.add(new Pair&lt;&gt;(Arrays.asList(TOPSECRET, CONFIDENTIAL), 0));<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    labelsAndRowCounts.add(new Pair&lt;&gt;(Arrays.asList(TOPSECRET, CONFIDENTIAL, PRIVATE, SECRET), 2));<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    for (final Pair&lt;List&lt;String&gt;, Integer&gt; labelsAndRowCount : labelsAndRowCounts) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      final List&lt;String&gt; labels = labelsAndRowCount.getFirst();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      final int rowCount = labelsAndRowCount.getSecond();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      //create a open permission directory.<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      final Path openDir = new Path("testAccessCase");<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      final FileSystem fs = openDir.getFileSystem(UTIL.getConfiguration());<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      fs.mkdirs(openDir);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      fs.setPermission(openDir, new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL));<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      final Path output = fs.makeQualified(new Path(openDir, "output"));<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      AccessTestAction exportAction = () -&gt; {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        StringBuilder buf = new StringBuilder();<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        labels.forEach(v -&gt; buf.append(v).append(","));<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        buf.deleteCharAt(buf.length() - 1);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>        try {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>          String[] args = new String[]{<a name="line.382"></a>
+<span class="sourceLineNo">383</span>            "-D " + ExportUtils.EXPORT_VISIBILITY_LABELS + "=" + buf.toString(),<a name="line.383"></a>
+<span class="sourceLineNo">384</span>            exportTable,<a name="line.384"></a>
+<span class="sourceLineNo">385</span>            output.toString(),};<a name="line.385"></a>
+<span class="sourceLineNo">386</span>          Export.run(new Configuration(UTIL.getConfiguration()), args);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>          return null;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        } catch (ServiceException | IOException ex) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          throw ex;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        } catch (Throwable ex) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>          throw new Exception(ex);<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>      SecureTestUtil.verifyAllowed(exportAction, getUserByLogin(USER_OWNER));<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      final TableDescriptor importHtd = TableDescriptorBuilder<a name="line.395"></a>
+<span class="sourceLineNo">396</span>              .newBuilder(TableName.valueOf(importTable))<a name="line.396"></a>
+<span class="sourceLineNo">397</span>              .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILYB))<a name="line.397"></a>
+<span class="sourceLineNo">398</span>              .setOwnerString(USER_OWNER)<a name="line.398"></a>
+<span class="sourceLineNo">399</span>              .build();<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      SecureTestUtil.createTable(UTIL, importHtd, new byte[][]{Bytes.toBytes("s")});<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      AccessTestAction importAction = () -&gt; {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        String[] args = new String[]{<a name="line.402"></a>
+<span class="sourceLineNo">403</span>          "-D" + Import.CF_RENAME_PROP + "=" + FAMILYA_STRING + ":" + FAMILYB_STRING,<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          importTable,<a name="line.404"></a>
+<span class="sourceLineNo">405</span>          output.toString()<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        };<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        assertEquals(0, ToolRunner.run(<a name="line.407"></a>
+<span class="sourceLineNo">408</span>            new Configuration(UTIL.getConfiguration()), new Import(), args));<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        return null;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      };<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      SecureTestUtil.verifyAllowed(importAction, getUserByLogin(USER_OWNER));<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      AccessTestAction scanAction = () -&gt; {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        Scan scan = new Scan();<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        scan.setAuthorizations(new Authorizations(labels));<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        try (Connection conn = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.415"></a>
+<span class="sourceLineNo">41

<TRUNCATED>