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 2017/08/01 15:07:43 UTC

[01/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site c8f032803 -> 110df8178


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/src-html/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html
index 822824b..d47faeb 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html
@@ -92,75 +92,85 @@
 <span class="sourceLineNo">084</span><a name="line.84"></a>
 <span class="sourceLineNo">085</span>  @Test(timeout=60000)<a name="line.85"></a>
 <span class="sourceLineNo">086</span>  public void testCrashTargetRs() throws Exception {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  @Ignore  // HBASE-18366... To be enabled again.<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  @Test(timeout=60000)<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public void testRecoveryAndDoubleExecutionOnRsWithMeta() throws Exception {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    testRecoveryAndDoubleExecution(true);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  @Test(timeout=60000)<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public void testRecoveryAndDoubleExecutionOnRsWithoutMeta() throws Exception {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    testRecoveryAndDoubleExecution(false);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>  /**<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * Run server crash procedure steps twice to test idempotency and that we are persisting all<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * needed state.<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @throws Exception<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   */<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private void testRecoveryAndDoubleExecution(final boolean carryingMeta) throws Exception {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    final TableName tableName = TableName.valueOf(<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      "testRecoveryAndDoubleExecution-carryingMeta-" + carryingMeta);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    final Table t = this.util.createTable(tableName, HBaseTestingUtility.COLUMNS,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        HBaseTestingUtility.KEYS_FOR_HBA_CREATE_TABLE);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    try {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      // Load the table with a bit of data so some logs to split and some edits in each region.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      this.util.loadTable(t, HBaseTestingUtility.COLUMNS[0]);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      final int count = util.countRows(t);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      assertTrue("expected some rows", count &gt; 0);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      final String checksum = util.checksumRows(t);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      // Run the procedure executor outside the master so we can mess with it. Need to disable<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      // Master's running of the server crash processing.<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      final HMaster master = this.util.getHBaseCluster().getMaster();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec = master.getMasterProcedureExecutor();<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      master.setServerCrashProcessingEnabled(false);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      // find the first server that match the request and executes the test<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      ServerName rsToKill = null;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      for (HRegionInfo hri: util.getHBaseAdmin().getTableRegions(tableName)) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>        final ServerName serverName = AssignmentTestingUtil.getServerHoldingRegion(util, hri);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        if (AssignmentTestingUtil.isServerHoldingMeta(util, serverName) == carryingMeta) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>          rsToKill = serverName;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>          break;<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>      // kill the RS<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      AssignmentTestingUtil.killRs(util, rsToKill);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      // Now, reenable processing else we can't get a lock on the ServerCrashProcedure.<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      master.setServerCrashProcessingEnabled(true);<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      // Do some of the master processing of dead servers so when SCP runs, it has expected 'state'.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      master.getServerManager().moveFromOnlineToDeadServers(rsToKill);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      // Enable test flags and then queue the crash procedure.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      ProcedureTestingUtility.waitNoProcedureRunning(procExec);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, true);<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      long procId = procExec.submitProcedure(new ServerCrashProcedure(<a name="line.139"></a>
-<span class="sourceLineNo">140</span>          procExec.getEnvironment(), rsToKill, true, carryingMeta));<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      // Now run through the procedure twice crashing the executor on each step...<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      MasterProcedureTestingUtility.testRecoveryAndDoubleExecution(procExec, procId);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      // Assert all data came back.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      assertEquals(count, util.countRows(t));<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      assertEquals(checksum, util.checksumRows(t));<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    } finally {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      t.close();<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  }<a name="line.149"></a>
-<span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private void collectMasterMetrics() {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    serverCrashSubmittedCount = serverCrashProcMetrics.getSubmittedCounter().getCount();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    serverCrashFailedCount = serverCrashProcMetrics.getFailedCounter().getCount();<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">087</span>    testRecoveryAndDoubleExecution(false, false);<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>  @Ignore  // HBASE-18366... To be enabled again.<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  @Test(timeout=60000)<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  public void testRecoveryAndDoubleExecutionOnRsWithMeta() throws Exception {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    testRecoveryAndDoubleExecution(true, true);<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>  @Test(timeout=60000)<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public void testRecoveryAndDoubleExecutionOnRsWithoutMeta() throws Exception {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    testRecoveryAndDoubleExecution(false, true);<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span>  /**<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * Run server crash procedure steps twice to test idempotency and that we are persisting all<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * needed state.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * @throws Exception<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  private void testRecoveryAndDoubleExecution(final boolean carryingMeta,<a name="line.106"></a>
+<span class="sourceLineNo">107</span>                                              final boolean doubleExecution) throws Exception {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    final TableName tableName = TableName.valueOf(<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      "testRecoveryAndDoubleExecution-carryingMeta-" + carryingMeta);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    final Table t = this.util.createTable(tableName, HBaseTestingUtility.COLUMNS,<a name="line.110"></a>
+<span class="sourceLineNo">111</span>        HBaseTestingUtility.KEYS_FOR_HBA_CREATE_TABLE);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    try {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      // Load the table with a bit of data so some logs to split and some edits in each region.<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      this.util.loadTable(t, HBaseTestingUtility.COLUMNS[0]);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      final int count = util.countRows(t);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      assertTrue("expected some rows", count &gt; 0);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      final String checksum = util.checksumRows(t);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      // Run the procedure executor outside the master so we can mess with it. Need to disable<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      // Master's running of the server crash processing.<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      final HMaster master = this.util.getHBaseCluster().getMaster();<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec = master.getMasterProcedureExecutor();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      master.setServerCrashProcessingEnabled(false);<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      // find the first server that match the request and executes the test<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      ServerName rsToKill = null;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      for (HRegionInfo hri : util.getHBaseAdmin().getTableRegions(tableName)) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>        final ServerName serverName = AssignmentTestingUtil.getServerHoldingRegion(util, hri);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        if (AssignmentTestingUtil.isServerHoldingMeta(util, serverName) == carryingMeta) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>          rsToKill = serverName;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>          break;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      }<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      // kill the RS<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      AssignmentTestingUtil.killRs(util, rsToKill);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      // Now, reenable processing else we can't get a lock on the ServerCrashProcedure.<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      master.setServerCrashProcessingEnabled(true);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      // Do some of the master processing of dead servers so when SCP runs, it has expected 'state'.<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      master.getServerManager().moveFromOnlineToDeadServers(rsToKill);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      // Enable test flags and then queue the crash procedure.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      ProcedureTestingUtility.waitNoProcedureRunning(procExec);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      ServerCrashProcedure scp = new ServerCrashProcedure(procExec.getEnvironment(), rsToKill,<a name="line.140"></a>
+<span class="sourceLineNo">141</span>          true, carryingMeta);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      if (doubleExecution) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, true);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        long procId = procExec.submitProcedure(scp);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        // Now run through the procedure twice crashing the executor on each step...<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        MasterProcedureTestingUtility.testRecoveryAndDoubleExecution(procExec, procId);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      } else {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        ProcedureTestingUtility.submitAndWait(procExec, scp);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      // Assert all data came back.<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      assertEquals(count, util.countRows(t));<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      assertEquals(checksum, util.checksumRows(t));<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    } catch(Throwable throwable) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      LOG.error("Test failed!", throwable);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      throw throwable;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    } finally {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      t.close();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  private void collectMasterMetrics() {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    serverCrashSubmittedCount = serverCrashProcMetrics.getSubmittedCounter().getCount();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    serverCrashFailedCount = serverCrashProcMetrics.getFailedCounter().getCount();<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
+<span class="sourceLineNo">165</span>}<a name="line.165"></a>
 
 
 


[33/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html
new file mode 100644
index 0000000..43587d8
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html
@@ -0,0 +1,860 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>RecoverMetaProcedure (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="RecoverMetaProcedure (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/RecoverMetaProcedure.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.ProcedureFuture.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" target="_top">Frames</a></li>
+<li><a href="RecoverMetaProcedure.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.procedure2.StateMachineProcedure">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.master.procedure</div>
+<h2 title="Class RecoverMetaProcedure" class="title">Class RecoverMetaProcedure</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">org.apache.hadoop.hbase.procedure2.Procedure</a>&lt;TEnvironment&gt;</li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">org.apache.hadoop.hbase.procedure2.StateMachineProcedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState&gt;</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt;&gt;, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.49">RecoverMetaProcedure</a>
+extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState&gt;
+implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a></pre>
+<div class="block">This procedure recovers meta from prior shutdown/ crash of a server, and brings meta online by
+ assigning meta region/s. Any place where meta is accessed and requires meta to be online, need to
+ submit this procedure instead of duplicating steps to recover meta in the code.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.procedure2.StateMachineProcedure">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.master.procedure.TableProcedureInterface">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a></h3>
+<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></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../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/procedure/RecoverMetaProcedure.html#failedMetaServer">failedMetaServer</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.commons.logging.Log</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#LOG">LOG</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#master">master</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#replicaId">replicaId</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#shouldSplitWal">shouldSplitWal</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#syncLatch">syncLatch</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#NO_PROC_ID">NO_PROC_ID</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#NO_TIMEOUT">NO_TIMEOUT</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#RecoverMetaProcedure--">RecoverMetaProcedure</a></span>()</code>
+<div class="block">This constructor is also used when deserializing from a procedure store; we'll construct one
+ of these then call <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#deserializeStateData-java.io.InputStream-"><code>deserializeStateData(InputStream)</code></a>.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#RecoverMetaProcedure-org.apache.hadoop.hbase.ServerName-boolean-">RecoverMetaProcedure</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;failedMetaServer,
+                    boolean&nbsp;shouldSplitLog)</code>
+<div class="block">Call this constructor to queue up a <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a> in response to meta
+ carrying server crash</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#RecoverMetaProcedure-org.apache.hadoop.hbase.ServerName-boolean-org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch-">RecoverMetaProcedure</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;failedMetaServer,
+                    boolean&nbsp;shouldSplitLog,
+                    <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a>&nbsp;latch)</code>
+<div class="block">Constructor with latch, for blocking/ sync usage</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</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 if they need a lock on an Entity.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup</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">Called when the procedure is marked as completed (success or rollback).</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#deserializeStateData-java.io.InputStream-">deserializeStateData</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;stream)</code>
+<div class="block">Called on store load to allow the user to decode the previously serialized
+ state.</div>
+</td>
+</tr>
+<tr id="i3" 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/procedure/RecoverMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">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.RecoverMetaState&nbsp;state)</code>
+<div class="block">called to perform a single step of the specified 'state' of the procedure</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.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="i5" class="rowColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.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="i6" class="altColor">
+<td class="colFirst"><code>protected int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">getStateId</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState&nbsp;recoverMetaState)</code>
+<div class="block">Convert the Enum (or more descriptive) state object to an ordinal (or state id).</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<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/procedure/RecoverMetaProcedure.html#getTableName--">getTableName</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
+<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/procedure/RecoverMetaProcedure.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="i9" class="rowColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#isRunRequired--">isRunRequired</a></span>()</code>&nbsp;</td>
+</tr>
+<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/master/procedure/RecoverMetaProcedure.html#prepare-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepare</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 for execution</div>
+</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.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="i12" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">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.RecoverMetaState&nbsp;recoverMetaState)</code>
+<div class="block">called to perform the rollback of the specified state</div>
+</td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#serializeStateData-java.io.OutputStream-">serializeStateData</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream)</code>
+<div class="block">The user-level code of the procedure may have some state to
+ persist (e.g.</div>
+</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#toStringClassDetails-java.lang.StringBuilder-">toStringClassDetails</a></span>(<a href="http://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>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.StateMachineProcedure">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a>, <a href="../../../../../../org/apache/hadoop/hbase/
 procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#addStackIndex-int-">addStackIndex</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#afterReplay-TEnvironment-">afterReplay</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#beforeReplay-TEnvironment-">beforeReplay</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#compareTo-org.apache.hadoop.hbase.procedure2.Procedure-">compareTo</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doAcquireLock-TEnvironment-">doAcquireLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doExecute-TEnvironment-">doExecute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doReleaseLock-TEnvironment-">doReleaseLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doRollback-TEnvironment-">doRollback</
 a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#elapsedTime--">elapsedTime</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getChildrenLatch--">getChildrenLatch</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getException--">getException</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getLastUpdate--">getLastUpdate</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getNonceKey--">getNonceKey</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getOwner--">getOwner</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getParentProcId--">getParentProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcedureMetrics-TEnvironment-">getProcedureMetrics</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 l#getProcId--">getProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcIdHashCode-long-">getProcIdHashCode</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcName--">getProcName</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getResult--">getResult</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getRootProcedureId-java.util.Map-org.apache.hadoop.hbase.procedure2.Procedure-">getRootProcedureId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getRootProcId--">getRootProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getStackIndexes--">getStackIndexes</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getState--">getState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getSubmittedTime--">getSubmittedTime<
 /a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getTimeout--">getTimeout</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getTimeoutTimestamp--">getTimeoutTimestamp</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasChildren--">hasChildren</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasException--">hasException</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasLock-TEnvironment-">hasLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasOwner--">hasOwner</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasParent--">hasParent</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasTimeout--">hasTimeout</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#haveSameParent-org.apache.hadoop.hb
 ase.procedure2.Procedure-org.apache.hadoop.hbase.procedure2.Procedure-">haveSameParent</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#holdLock-TEnvironment-">holdLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#incChildrenLatch--">incChildrenLatch</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isFailed--">isFailed</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isFinished--">isFinished</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isInitializing--">isInitializing</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isRunnable--">isRunnable</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isSuccess--">isSuccess</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isWaiting--">isWaiting</a>, <a href="../../../../../../or
 g/apache/hadoop/hbase/procedure2/Procedure.html#removeStackIndex--">removeStackIndex</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setAbortFailure-java.lang.String-java.lang.String-">setAbortFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setChildrenLatch-int-">setChildrenLatch</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setFailure-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">setFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setFailure-java.lang.String-java.lang.Throwable-">setFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setLastUpdate-long-">setLastUpdate</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setNonceKey-org.apache.hadoop.hbase.util.NonceKey-">setNonceKey</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/P
 rocedure.html#setOwner-java.lang.String-">setOwner</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setOwner-org.apache.hadoop.hbase.security.User-">setOwner</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setParentProcId-long-">setParentProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setProcId-long-">setProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setResult-byte:A-">setResult</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setRootProcId-long-">setRootProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setStackIndexes-java.util.List-">setStackIndexes</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setState-org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureState-">setState</a>, <a href="../../../../../../or
 g/apache/hadoop/hbase/procedure2/Procedure.html#setSubmittedTime-long-">setSubmittedTime</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setTimeout-int-">setTimeout</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setTimeoutFailure-TEnvironment-">setTimeoutFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#shouldWaitClientAck-TEnvironment-">shouldWaitClientAck</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toString--">toString</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClass--">toStringClass</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringDetails--">toStringDetails</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringSimpleSB--">toStringSimpleSB</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure
 .html#updateMetricsOnFinish-TEnvironment-long-boolean-">updateMetricsOnFinish</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#updateMetricsOnSubmit-TEnvironment-">updateMetricsOnSubmit</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#updateTimestamp--">updateTimestamp</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#wasExecuted--">wasExecuted</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="LOG">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>LOG</h4>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.52">LOG</a></pre>
+</li>
+</ul>
+<a name="failedMetaServer">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>failedMetaServer</h4>
+<pre>private&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/procedure/RecoverMetaProcedure.html#line.54">failedMetaServer</a></pre>
+</li>
+</ul>
+<a name="shouldSplitWal">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>shouldSplitWal</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.55">shouldSplitWal</a></pre>
+</li>
+</ul>
+<a name="replicaId">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>replicaId</h4>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.56">replicaId</a></pre>
+</li>
+</ul>
+<a name="syncLatch">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>syncLatch</h4>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.58">syncLatch</a></pre>
+</li>
+</ul>
+<a name="master">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>master</h4>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.59">master</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="RecoverMetaProcedure-org.apache.hadoop.hbase.ServerName-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>RecoverMetaProcedure</h4>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.67">RecoverMetaProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;failedMetaServer,
+                            boolean&nbsp;shouldSplitLog)</pre>
+<div class="block">Call this constructor to queue up a <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a> in response to meta
+ carrying server crash</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>failedMetaServer</code> - failed/ crashed region server that was carrying meta</dd>
+<dd><code>shouldSplitLog</code> - split log file of meta region</dd>
+</dl>
+</li>
+</ul>
+<a name="RecoverMetaProcedure-org.apache.hadoop.hbase.ServerName-boolean-org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>RecoverMetaProcedure</h4>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.74">RecoverMetaProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;failedMetaServer,
+                            boolean&nbsp;shouldSplitLog,
+                            <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a>&nbsp;latch)</pre>
+<div class="block">Constructor with latch, for blocking/ sync usage</div>
+</li>
+</ul>
+<a name="RecoverMetaProcedure--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>RecoverMetaProcedure</h4>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.86">RecoverMetaProcedure</a>()</pre>
+<div class="block">This constructor is also used when deserializing from a procedure store; we'll construct one
+ of these then call <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#deserializeStateData-java.io.InputStream-"><code>deserializeStateData(InputStream)</code></a>. Do not use directly.</div>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">
+<!--   -->
+</a>
+<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/procedure/RecoverMetaProcedure.html#line.91">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.RecoverMetaState&nbsp;state)
+                                               throws <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a>,
+                                                      <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</a>,
+                                                      <a href="http://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>
+<div class="block">called to perform a single step of the specified 'state' of the procedure</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#executeFromState-TEnvironment-TState-">executeFromState</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState&gt;</code></dd>
+<dd><code>state</code> - state to execute</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>Flow.NO_MORE_STATE if the procedure is completed,
+         Flow.HAS_MORE_STATE if there is another step.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a></code></dd>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>rollbackState</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.154">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.RecoverMetaState&nbsp;recoverMetaState)
+                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                             <a href="http://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#rollbackState-TEnvironment-TState-">StateMachineProcedure</a></code></span></div>
+<div class="block">called to perform the rollback of the specified state</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollbackState-TEnvironment-TState-">rollbackState</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState&gt;</code></dd>
+<dd><code>recoverMetaState</code> - state to rollback</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - temporary failure, the rollback will retry later</dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getState-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getState</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.162">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>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">getState</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState&gt;</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>stateId</code> - the ordinal() of the state enum (or state id)</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the state enum object</dd>
+</dl>
+</li>
+</ul>
+<a name="getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getStateId</h4>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.167">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState&nbsp;recoverMetaState)</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>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">getStateId</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState&gt;</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>recoverMetaState</code> - the state enum object</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>stateId the ordinal() of the state enum (or state id)</dd>
+</dl>
+</li>
+</ul>
+<a name="getInitialState--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getInitialState</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.172">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>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getInitialState--">getInitialState</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState&gt;</code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the initial state enum object</dd>
+</dl>
+</li>
+</ul>
+<a name="toStringClassDetails-java.lang.StringBuilder-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>toStringClassDetails</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.177">toStringClassDetails</a>(<a href="http://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>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClassDetails-java.lang.StringBuilder-">toStringClassDetails</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt;</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>sb</code> - the string builder to use to append the proc specific information</dd>
+</dl>
+</li>
+</ul>
+<a name="serializeStateData-java.io.OutputStream-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>serializeStateData</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.186">serializeStateData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream)
+                           throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-java.io.OutputStream-">Procedure</a></code></span></div>
+<div class="block">The user-level code of the procedure may have some state to
+ persist (e.g. input arguments or current position in the processing state) to
+ be able to resume on failure.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#serializeStateData-java.io.OutputStream-">serializeStateData</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState&gt;</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>stream</code> - the stream that will contain the user serialized data</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="deserializeStateData-java.io.InputStream-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>deserializeStateData</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.198">deserializeStateData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;stream)
+                             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-java.io.InputStream-">Procedure</a></code></span></div>
+<div class="block">Called on store load to allow the user to decode the previously serialized
+ state.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#deserializeStateData-java.io.InputStream-">deserializeStateData</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState&gt;</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>stream</code> - the stream that contains the user serialized data</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
+<!--   -->
+</a>
+<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/procedure/RecoverMetaProcedure.html#line.209">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 invokes <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#execute-TEnvironment-"><code>Procedure.execute(Object)</code></a>.
+ It calls <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#releaseLock-TEnvironment-"><code>Procedure.releaseLock(Object)</code></a> after the call to execute.
+
+ <p>If you need to hold the lock for the life of the Procdure -- i.e. you do not
+ want any other Procedure interfering while this Procedure is running, see
+ <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#holdLock-TEnvironment-"><code>Procedure.holdLock(Object)</code></a>.
+
+ <p>Example: in our Master we can execute request in parallel for different tables.
+ We can create t1 and create t2 and these creates can be executed at the same time.
+ Anything else on t1/t2 is queued waiting that specific table create to happen.
+
+ <p>There are 3 LockState:
+ <ul><li>LOCK_ACQUIRED should be returned when the proc has the lock and the proc is
+ ready to execute.</li>
+ <li>LOCK_YIELD_WAIT should be returned when the proc has not the lock and the framework
+ should take care of readding the procedure back to the runnable set for retry</li>
+ <li>LOCK_EVENT_WAIT should be returned when the proc has not the lock and someone will
+ take care of readding the procedure back to the runnable set when the lock is available.
+ </li></ul></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#acquireLock-TEnvironment-">acquireLock</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt;</code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the lock state as described above.</dd>
+</dl>
+</li>
+</ul>
+<a name="releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>releaseLock</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.217">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>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#releaseLock-TEnvironment-">releaseLock</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt;</code></dd>
+</dl>
+</li>
+</ul>
+<a name="completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>completionCleanup</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.222">completionCleanup</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#completionCleanup-TEnvironment-">Procedure</a></code></span></div>
+<div class="block">Called when the procedure is marked as completed (success or rollback).
+ The procedure implementor may use this method to cleanup in-memory states.
+ This operation will not be retried on failure. If a procedure took a lock,
+ it will have been released when this method runs.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#completionCleanup-TEnvironment-">completionCleanup</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt;</code></dd>
+</dl>
+</li>
+</ul>
+<a name="getTableName--">
+<!--   -->
+</a>
+<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/procedure/RecoverMetaProcedure.html#line.227">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>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the name of the table the procedure is operating on</dd>
+</dl>
+</li>
+</ul>
+<a name="getTableOperationType--">
+<!--   -->
+</a>
+<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/procedure/RecoverMetaProcedure.html#line.232">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)
+ we can abort those operations.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html#getTableOperationType--">getTableOperationType</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>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the operation type that the procedure is executing.</dd>
+</dl>
+</li>
+</ul>
+<a name="isRunRequired--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isRunRequired</h4>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.240">isRunRequired</a>()</pre>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if failedMetaServer is not null (meta carrying server crashed) or meta is
+ already initialized</dd>
+</dl>
+</li>
+</ul>
+<a name="prepare-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>prepare</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.247">prepare</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">Prepare for execution</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/RecoverMetaProcedure.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.ProcedureFuture.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" target="_top">Frames</a></li>
+<li><a href="RecoverMetaProcedure.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.procedure2.StateMachineProcedure">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html
index 0d092ef..a41cf5c 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.ProcedureFuture.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -402,7 +402,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollba
 ck-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBefore
 ExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">
@@ -951,7 +951,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.ProcedureFuture.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">


[06/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/org/apache/hadoop/hbase/master/MockNoopMasterServices.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/MockNoopMasterServices.html b/testdevapidocs/org/apache/hadoop/hbase/master/MockNoopMasterServices.html
index 975ad17..7d3dc6c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/MockNoopMasterServices.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/MockNoopMasterServices.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":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.55">MockNoopMasterServices</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.57">MockNoopMasterServices</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbase.Server</pre>
 </li>
@@ -470,35 +470,39 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 </tr>
 <tr id="i64" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#registerService-com.google.protobuf.Service-">registerService</a></span>(com.google.protobuf.Service&nbsp;instance)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#recoverMeta--">recoverMeta</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i65" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#registerService-com.google.protobuf.Service-">registerService</a></span>(com.google.protobuf.Service&nbsp;instance)</code>&nbsp;</td>
+</tr>
+<tr id="i66" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#removeDrainFromRegionServer-org.apache.hadoop.hbase.ServerName-">removeDrainFromRegionServer</a></span>(org.apache.hadoop.hbase.ServerName&nbsp;servers)</code>&nbsp;</td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i67" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#removeReplicationPeer-java.lang.String-">removeReplicationPeer</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</code>&nbsp;</td>
 </tr>
-<tr id="i67" class="rowColor">
+<tr id="i68" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#splitRegion-org.apache.hadoop.hbase.HRegionInfo-byte:A-long-long-">splitRegion</a></span>(org.apache.hadoop.hbase.HRegionInfo&nbsp;regionInfo,
            byte[]&nbsp;splitRow,
            long&nbsp;nonceGroup,
            long&nbsp;nonce)</code>&nbsp;</td>
 </tr>
-<tr id="i68" class="altColor">
+<tr id="i69" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#stop-java.lang.String-">stop</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why)</code>&nbsp;</td>
 </tr>
-<tr id="i69" class="rowColor">
+<tr id="i70" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
              boolean&nbsp;preserveSplits,
              long&nbsp;nonceGroup,
              long&nbsp;nonce)</code>&nbsp;</td>
 </tr>
-<tr id="i70" class="altColor">
+<tr id="i71" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updateReplicationPeerConfig</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                            org.apache.hadoop.hbase.replication.ReplicationPeerConfig&nbsp;peerConfig)</code>&nbsp;</td>
@@ -531,7 +535,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>private final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.56">conf</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.58">conf</a></pre>
 </li>
 </ul>
 <a name="metricsMaster">
@@ -540,7 +544,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>metricsMaster</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.master.MetricsMaster <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.57">metricsMaster</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.master.MetricsMaster <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.59">metricsMaster</a></pre>
 </li>
 </ul>
 <a name="stopped">
@@ -549,7 +553,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockListLast">
 <li class="blockList">
 <h4>stopped</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.188">stopped</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.190">stopped</a></pre>
 </li>
 </ul>
 </li>
@@ -566,7 +570,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>MockNoopMasterServices</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.59">MockNoopMasterServices</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.61">MockNoopMasterServices</a>()</pre>
 </li>
 </ul>
 <a name="MockNoopMasterServices-org.apache.hadoop.conf.Configuration-">
@@ -575,7 +579,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MockNoopMasterServices</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.63">MockNoopMasterServices</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.65">MockNoopMasterServices</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 </li>
@@ -592,7 +596,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>checkTableModifiable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.69">checkTableModifiable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.71">checkTableModifiable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
                           throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -608,7 +612,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.74">createTable</a>(org.apache.hadoop.hbase.HTableDescriptor&nbsp;desc,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.76">createTable</a>(org.apache.hadoop.hbase.HTableDescriptor&nbsp;desc,
                         byte[][]&nbsp;splitKeys,
                         long&nbsp;nonceGroup,
                         long&nbsp;nonce)
@@ -627,7 +631,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>createSystemTable</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.84">createSystemTable</a>(org.apache.hadoop.hbase.HTableDescriptor&nbsp;hTableDescriptor)
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.86">createSystemTable</a>(org.apache.hadoop.hbase.HTableDescriptor&nbsp;hTableDescriptor)
                        throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -643,7 +647,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getAssignmentManager</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.assignment.AssignmentManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.89">getAssignmentManager</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.assignment.AssignmentManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.91">getAssignmentManager</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getAssignmentManager</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -656,7 +660,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getExecutorService</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.executor.ExecutorService&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.94">getExecutorService</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.executor.ExecutorService&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.96">getExecutorService</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getExecutorService</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -669,7 +673,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getChoreService</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.ChoreService&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.99">getChoreService</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.ChoreService&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.101">getChoreService</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getChoreService</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Server</code></dd>
@@ -682,7 +686,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionNormalizer</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.normalizer.RegionNormalizer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.104">getRegionNormalizer</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.normalizer.RegionNormalizer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.106">getRegionNormalizer</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getRegionNormalizer</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -695,7 +699,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getCatalogJanitor</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.CatalogJanitor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.109">getCatalogJanitor</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.CatalogJanitor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.111">getCatalogJanitor</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getCatalogJanitor</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -708,7 +712,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterFileSystem</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.MasterFileSystem&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.114">getMasterFileSystem</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.MasterFileSystem&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.116">getMasterFileSystem</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getMasterFileSystem</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -721,7 +725,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterWalManager</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.MasterWalManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.119">getMasterWalManager</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.MasterWalManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.121">getMasterWalManager</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getMasterWalManager</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -734,7 +738,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterCoprocessorHost</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.MasterCoprocessorHost&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.124">getMasterCoprocessorHost</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.MasterCoprocessorHost&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.126">getMasterCoprocessorHost</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getMasterCoprocessorHost</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -747,7 +751,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterQuotaManager</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.quotas.MasterQuotaManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.129">getMasterQuotaManager</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.quotas.MasterQuotaManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.131">getMasterQuotaManager</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getMasterQuotaManager</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -760,7 +764,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterProcedureExecutor</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.134">getMasterProcedureExecutor</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.136">getMasterProcedureExecutor</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getMasterProcedureExecutor</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -773,7 +777,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterMetrics</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.MetricsMaster&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.139">getMasterMetrics</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.MetricsMaster&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.141">getMasterMetrics</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getMasterMetrics</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -786,7 +790,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerManager</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.ServerManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.144">getServerManager</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.ServerManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.146">getServerManager</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getServerManager</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -799,7 +803,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getZooKeeper</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.149">getZooKeeper</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.151">getZooKeeper</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getZooKeeper</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Server</code></dd>
@@ -812,7 +816,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getCoordinatedStateManager</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.CoordinatedStateManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.154">getCoordinatedStateManager</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.CoordinatedStateManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.156">getCoordinatedStateManager</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getCoordinatedStateManager</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Server</code></dd>
@@ -825,7 +829,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaTableLocator</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.zookeeper.MetaTableLocator&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.159">getMetaTableLocator</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.zookeeper.MetaTableLocator&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.161">getMetaTableLocator</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getMetaTableLocator</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Server</code></dd>
@@ -838,7 +842,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getConnection</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.ClusterConnection&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.164">getConnection</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.client.ClusterConnection&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.166">getConnection</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getConnection</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Server</code></dd>
@@ -851,7 +855,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfiguration</h4>
-<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.169">getConfiguration</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.171">getConfiguration</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getConfiguration</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Server</code></dd>
@@ -864,7 +868,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerName</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.ServerName&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.174">getServerName</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.ServerName&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.176">getServerName</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getServerName</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Server</code></dd>
@@ -877,7 +881,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>abort</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.179">abort</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.181">abort</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why,
                   <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;e)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -891,7 +895,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isAborted</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.184">isAborted</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.186">isAborted</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>isAborted</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Abortable</code></dd>
@@ -904,7 +908,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.191">stop</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.193">stop</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>stop</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Stoppable</code></dd>
@@ -917,7 +921,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isStopping</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.196">isStopping</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.198">isStopping</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>isStopping</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -930,7 +934,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isStopped</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.201">isStopped</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.203">isStopped</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>isStopped</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Stoppable</code></dd>
@@ -943,7 +947,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableDescriptors</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.TableDescriptors&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.206">getTableDescriptors</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.TableDescriptors&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.208">getTableDescriptors</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getTableDescriptors</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -956,7 +960,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isServerCrashProcessingEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.211">isServerCrashProcessingEnabled</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.213">isServerCrashProcessingEnabled</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>isServerCrashProcessingEnabled</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -969,7 +973,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>registerService</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.216">registerService</a>(com.google.protobuf.Service&nbsp;instance)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.218">registerService</a>(com.google.protobuf.Service&nbsp;instance)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>registerService</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -982,7 +986,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>abortProcedure</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.221">abortProcedure</a>(long&nbsp;procId,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.223">abortProcedure</a>(long&nbsp;procId,
                               boolean&nbsp;mayInterruptIfRunning)
                        throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -999,7 +1003,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>listProcedures</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.ProcedureInfo&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.227">listProcedures</a>()
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.ProcedureInfo&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.229">listProcedures</a>()
                                                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1015,7 +1019,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>listLocks</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.procedure2.LockInfo&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.232">listLocks</a>()
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.procedure2.LockInfo&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.234">listLocks</a>()
                                                             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1031,7 +1035,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableDescriptorsByNamespace</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.HTableDescriptor&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.237">listTableDescriptorsByNamespace</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.HTableDescriptor&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.239">listTableDescriptorsByNamespace</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
                                                                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1047,7 +1051,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableNamesByNamespace</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.TableName&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.242">listTableNamesByNamespace</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.TableName&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.244">listTableNamesByNamespace</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
                                                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1063,7 +1067,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteTable</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.247">deleteTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.249">deleteTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                         long&nbsp;nonceGroup,
                         long&nbsp;nonce)
                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1081,7 +1085,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>truncateTable</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.255">truncateTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.257">truncateTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                           boolean&nbsp;preserveSplits,
                           long&nbsp;nonceGroup,
                           long&nbsp;nonce)
@@ -1100,7 +1104,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyTable</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.265">modifyTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.267">modifyTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                         org.apache.hadoop.hbase.HTableDescriptor&nbsp;descriptor,
                         long&nbsp;nonceGroup,
                         long&nbsp;nonce)
@@ -1119,7 +1123,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>enableTable</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.274">enableTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.276">enableTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                         long&nbsp;nonceGroup,
                         long&nbsp;nonce)
                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1137,7 +1141,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>disableTable</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.282">disableTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.284">disableTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                          long&nbsp;nonceGroup,
                          long&nbsp;nonce)
                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1155,7 +1159,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>addColumn</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.290">addColumn</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.292">addColumn</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                       org.apache.hadoop.hbase.HColumnDescriptor&nbsp;columnDescriptor,
                       long&nbsp;nonceGroup,
                       long&nbsp;nonce)
@@ -1174,7 +1178,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyColumn</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.296">modifyColumn</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.298">modifyColumn</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                          org.apache.hadoop.hbase.HColumnDescriptor&nbsp;descriptor,
                          long&nbsp;nonceGroup,
                          long&nbsp;nonce)
@@ -1193,7 +1197,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteColumn</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.302">deleteColumn</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.304">deleteColumn</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                          byte[]&nbsp;columnName,
                          long&nbsp;nonceGroup,
                          long&nbsp;nonce)
@@ -1212,7 +1216,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>mergeRegions</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.308">mergeRegions</a>(org.apache.hadoop.hbase.HRegionInfo[]&nbsp;regionsToMerge,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.310">mergeRegions</a>(org.apache.hadoop.hbase.HRegionInfo[]&nbsp;regionsToMerge,
                          boolean&nbsp;forcible,
                          long&nbsp;nonceGroup,
                          long&nbsp;nonce)
@@ -1231,7 +1235,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>splitRegion</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.317">splitRegion</a>(org.apache.hadoop.hbase.HRegionInfo&nbsp;regionInfo,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.319">splitRegion</a>(org.apache.hadoop.hbase.HRegionInfo&nbsp;regionInfo,
                         byte[]&nbsp;splitRow,
                         long&nbsp;nonceGroup,
                         long&nbsp;nonce)
@@ -1250,7 +1254,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableStateManager</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.TableStateManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.326">getTableStateManager</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.TableStateManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.328">getTableStateManager</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getTableStateManager</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -1263,7 +1267,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isActiveMaster</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.331">isActiveMaster</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.333">isActiveMaster</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>isActiveMaster</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -1276,7 +1280,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isInitialized</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.336">isInitialized</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.338">isInitialized</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>isInitialized</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -1289,7 +1293,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isInMaintenanceMode</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.341">isInMaintenanceMode</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.343">isInMaintenanceMode</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>isInMaintenanceMode</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -1302,7 +1306,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastMajorCompactionTimestamp</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.346">getLastMajorCompactionTimestamp</a>(org.apache.hadoop.hbase.TableName&nbsp;table)
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.348">getLastMajorCompactionTimestamp</a>(org.apache.hadoop.hbase.TableName&nbsp;table)
                                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1318,7 +1322,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastMajorCompactionTimestampForRegion</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.351">getLastMajorCompactionTimestampForRegion</a>(byte[]&nbsp;regionName)
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.353">getLastMajorCompactionTimestampForRegion</a>(byte[]&nbsp;regionName)
                                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1334,7 +1338,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterSchema</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.ClusterSchema&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.356">getClusterSchema</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.ClusterSchema&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.358">getClusterSchema</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getClusterSchema</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -1347,7 +1351,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterConnection</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.client.ClusterConnection&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.361">getClusterConnection</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.client.ClusterConnection&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.363">getClusterConnection</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getClusterConnection</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Server</code></dd>
@@ -1360,7 +1364,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getLoadBalancer</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.LoadBalancer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.367">getLoadBalancer</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.LoadBalancer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.369">getLoadBalancer</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getLoadBalancer</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -1373,7 +1377,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getFavoredNodesManager</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.favored.FavoredNodesManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.372">getFavoredNodesManager</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.favored.FavoredNodesManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.374">getFavoredNodesManager</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getFavoredNodesManager</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -1386,7 +1390,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getSnapshotManager</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.snapshot.SnapshotManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.377">getSnapshotManager</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.snapshot.SnapshotManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.379">getSnapshotManager</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getSnapshotManager</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -1399,7 +1403,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterProcedureManagerHost</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.382">getMasterProcedureManagerHost</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.384">getMasterProcedureManagerHost</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getMasterProcedureManagerHost</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -1412,7 +1416,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isSplitOrMergeEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.387">isSplitOrMergeEnabled</a>(org.apache.hadoop.hbase.client.MasterSwitchType&nbsp;switchType)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.389">isSplitOrMergeEnabled</a>(org.apache.hadoop.hbase.client.MasterSwitchType&nbsp;switchType)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>isSplitOrMergeEnabled</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -1425,7 +1429,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>addReplicationPeer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.392">addReplicationPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.394">addReplicationPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                                org.apache.hadoop.hbase.replication.ReplicationPeerConfig&nbsp;peerConfig)
                         throws org.apache.hadoop.hbase.replication.ReplicationException</pre>
 <dl>
@@ -1442,7 +1446,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>removeReplicationPeer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.397">removeReplicationPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.399">removeReplicationPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                            throws org.apache.hadoop.hbase.replication.ReplicationException</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1458,7 +1462,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>enableReplicationPeer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.401">enableReplicationPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.403">enableReplicationPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                            throws org.apache.hadoop.hbase.replication.ReplicationException,
                                   <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -1476,7 +1480,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>disableReplicationPeer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.405">disableReplicationPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.407">disableReplicationPeer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                             throws org.apache.hadoop.hbase.replication.ReplicationException,
                                    <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -1494,7 +1498,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>drainRegionServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.409">drainRegionServer</a>(org.apache.hadoop.hbase.ServerName&nbsp;server)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.411">drainRegionServer</a>(org.apache.hadoop.hbase.ServerName&nbsp;server)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>drainRegionServer</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -1507,7 +1511,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>listDrainingRegionServers</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.ServerName&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.414">listDrainingRegionServers</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.ServerName&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.416">listDrainingRegionServers</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>listDrainingRegionServers</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -1520,7 +1524,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>removeDrainFromRegionServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.419">removeDrainFromRegionServer</a>(org.apache.hadoop.hbase.ServerName&nbsp;servers)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.421">removeDrainFromRegionServer</a>(org.apache.hadoop.hbase.ServerName&nbsp;servers)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>removeDrainFromRegionServer</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -1533,7 +1537,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationPeerConfig</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.replication.ReplicationPeerConfig&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.424">getReplicationPeerConfig</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>public&nbsp;org.apache.hadoop.hbase.replication.ReplicationPeerConfig&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.426">getReplicationPeerConfig</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                                                                                    throws org.apache.hadoop.hbase.replication.ReplicationException,
                                                                                           <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -1551,7 +1555,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>updateReplicationPeerConfig</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.430">updateReplicationPeerConfig</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.432">updateReplicationPeerConfig</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                                         org.apache.hadoop.hbase.replication.ReplicationPeerConfig&nbsp;peerConfig)
                                  throws org.apache.hadoop.hbase.replication.ReplicationException,
                                         <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1570,7 +1574,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>listReplicationPeers</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.replication.ReplicationPeerDescription&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.435">listReplicationPeers</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.replication.ReplicationPeerDescription&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.437">listReplicationPeers</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex)
                                                                                           throws org.apache.hadoop.hbase.replication.ReplicationException,
                                                                                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -1588,7 +1592,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getLockManager</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.master.locking.LockManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.441">getLockManager</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.master.locking.LockManager&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.443">getLockManager</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getLockManager</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -1601,7 +1605,7 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionServerVersion</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.446">getRegionServerVersion</a>(org.apache.hadoop.hbase.ServerName&nbsp;sn)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.448">getRegionServerVersion</a>(org.apache.hadoop.hbase.ServerName&nbsp;sn)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getRegionServerVersion</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
@@ -1614,20 +1618,36 @@ implements org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>checkIfShouldMoveSystemRegionAsync</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.451">checkIfShouldMoveSystemRegionAsync</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.453">checkIfShouldMoveSystemRegionAsync</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>checkIfShouldMoveSystemRegionAsync</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
 </dl>
 </li>
 </ul>
+<a name="recoverMeta--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>recoverMeta</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.457">recoverMeta</a>()
+                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>recoverMeta</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="getInitializedEvent--">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getInitializedEvent</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureEvent&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.455">getInitializedEvent</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureEvent&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html#line.462">getInitializedEvent</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getInitializedEvent</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.master.MasterServices</code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html b/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html
index 2882eca..855a9ce 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html
@@ -214,7 +214,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkInitialized, checkServiceStarted, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createNamespace, createQuotaSnapshotNotifier, createRpcServices, createServerManager, createSystemTable, createTable, deleteColumn, deleteNamespace, deleteTable, disableReplicationPeer, disableTable, drainRegionServer, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterSchema, getClusterStatus, getDumpServlet, getFavoredNodesManager, getFsTableDescriptors, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterC
 oprocessors, getMasterFileSystem, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMobCompactionState, getNamespace, getNamespaces, getNumWALFiles, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getRemoteInetAddress, getReplicationPeerConfig, getServerCrashProcessingEnabledEvent, getServerManager, getServerName, getSnapshotManager, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableRegionForRow, getTableStateManager, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, initQuotaManager, isActiveMaster, isBalancerOn, isCatalogJanitorEnabled, isCleanerChoreEnabled, isInitializationStartsMetaRegionAssignment, isInitialized, isInMaintenanceMo
 de, isNormalizerOn, isServerCrashProcessingEnabled, isSplitOrMergeEnabled, listDrainingRegionServers, listLocks, listProcedures, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyNamespace, modifyTable, move, normalizeRegions, registerService, removeDrainFromRegionServer, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, setCatalogJanitorEnabled, setInitialized, setServerCrashProcessingEnabled, shutdown, splitRegion, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkInitialized, checkServiceStarted, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createNamespace, createQuotaSnapshotNotifier, createRpcServices, createServerManager, createSystemTable, createTable, deleteColumn, deleteNamespace, deleteTable, disableReplicationPeer, disableTable, drainRegionServer, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterSchema, getClusterStatus, getDumpServlet, getFavoredNodesManager, getFsTableDescriptors, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterC
 oprocessors, getMasterFileSystem, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMobCompactionState, getNamespace, getNamespaces, getNumWALFiles, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getRemoteInetAddress, getReplicationPeerConfig, getServerCrashProcessingEnabledEvent, getServerManager, getServerName, getSnapshotManager, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableRegionForRow, getTableStateManager, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, initQuotaManager, isActiveMaster, isBalancerOn, isCatalogJanitorEnabled, isCleanerChoreEnabled, isInitialized, isInMaintenanceMode, isNormalizerOn, isServerCrashProcessingE
 nabled, isSplitOrMergeEnabled, listDrainingRegionServers, listLocks, listProcedures, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyNamespace, modifyTable, move, normalizeRegions, recoverMeta, registerService, removeDrainFromRegionServer, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, setCatalogJanitorEnabled, setInitialized, setServerCrashProcessingEnabled, shutdown, splitRegion, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">


[02/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html
index 002995b..5a0af9d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html
@@ -100,436 +100,433 @@
 <span class="sourceLineNo">092</span>        public Void call() throws Exception {<a name="line.92"></a>
 <span class="sourceLineNo">093</span>          final AssignmentManager am = env.getAssignmentManager();<a name="line.93"></a>
 <span class="sourceLineNo">094</span>          am.start();<a name="line.94"></a>
-<span class="sourceLineNo">095</span>          if (true) {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>            MasterMetaBootstrap metaBootstrap = new MasterMetaBootstrap(master,<a name="line.96"></a>
-<span class="sourceLineNo">097</span>                TaskMonitor.get().createStatus("meta"));<a name="line.97"></a>
-<span class="sourceLineNo">098</span>            metaBootstrap.splitMetaLogsBeforeAssignment();<a name="line.98"></a>
-<span class="sourceLineNo">099</span>            metaBootstrap.assignMeta();<a name="line.99"></a>
-<span class="sourceLineNo">100</span>            metaBootstrap.processDeadServers();<a name="line.100"></a>
-<span class="sourceLineNo">101</span>          }<a name="line.101"></a>
-<span class="sourceLineNo">102</span>          am.joinCluster();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>          master.setInitialized(true);<a name="line.103"></a>
-<span class="sourceLineNo">104</span>          return null;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        }<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      });<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  }<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  // ==========================================================================<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  //  Master failover utils<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  // ==========================================================================<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public static void masterFailover(final HBaseTestingUtility testUtil)<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      throws Exception {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    MiniHBaseCluster cluster = testUtil.getMiniHBaseCluster();<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>    // Kill the master<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    HMaster oldMaster = cluster.getMaster();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    cluster.killMaster(cluster.getMaster().getServerName());<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>    // Wait the secondary<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    waitBackupMaster(testUtil, oldMaster);<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>  public static void waitBackupMaster(final HBaseTestingUtility testUtil,<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      final HMaster oldMaster) throws Exception {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    MiniHBaseCluster cluster = testUtil.getMiniHBaseCluster();<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>    HMaster newMaster = cluster.getMaster();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    while (newMaster == null || newMaster == oldMaster) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      Thread.sleep(250);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      newMaster = cluster.getMaster();<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>    while (!(newMaster.isActiveMaster() &amp;&amp; newMaster.isInitialized())) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      Thread.sleep(250);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  // ==========================================================================<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  //  Table Helpers<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  // ==========================================================================<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  public static HTableDescriptor createHTD(final TableName tableName, final String... family) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    for (int i = 0; i &lt; family.length; ++i) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      htd.addFamily(new HColumnDescriptor(family[i]));<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    return htd;<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>  public static HRegionInfo[] createTable(final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec,<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      final TableName tableName, final byte[][] splitKeys, String... family) throws IOException {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    HTableDescriptor htd = createHTD(tableName, family);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    HRegionInfo[] regions = ModifyRegionUtils.createHRegionInfos(htd, splitKeys);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    long procId = ProcedureTestingUtility.submitAndWait(procExec,<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      new CreateTableProcedure(procExec.getEnvironment(), htd, regions));<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    ProcedureTestingUtility.assertProcNotFailed(procExec.getResult(procId));<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    return regions;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  public static void validateTableCreation(final HMaster master, final TableName tableName,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      final HRegionInfo[] regions, String... family) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    validateTableCreation(master, tableName, regions, true, family);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>  public static void validateTableCreation(final HMaster master, final TableName tableName,<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      final HRegionInfo[] regions, boolean hasFamilyDirs, String... family) throws IOException {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // check filesystem<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    final FileSystem fs = master.getMasterFileSystem().getFileSystem();<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    final Path tableDir = FSUtils.getTableDir(master.getMasterFileSystem().getRootDir(), tableName);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    assertTrue(fs.exists(tableDir));<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    FSUtils.logFileSystemState(fs, tableDir, LOG);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    List&lt;Path&gt; allRegionDirs = FSUtils.getRegionDirs(fs, tableDir);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    for (int i = 0; i &lt; regions.length; ++i) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      Path regionDir = new Path(tableDir, regions[i].getEncodedName());<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      assertTrue(regions[i] + " region dir does not exist", fs.exists(regionDir));<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      assertTrue(allRegionDirs.remove(regionDir));<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      List&lt;Path&gt; allFamilyDirs = FSUtils.getFamilyDirs(fs, regionDir);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      for (int j = 0; j &lt; family.length; ++j) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        final Path familyDir = new Path(regionDir, family[j]);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        if (hasFamilyDirs) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>          assertTrue(family[j] + " family dir does not exist", fs.exists(familyDir));<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          assertTrue(allFamilyDirs.remove(familyDir));<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        } else {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>          // TODO: WARN: Modify Table/Families does not create a family dir<a name="line.184"></a>
-<span class="sourceLineNo">185</span>          if (!fs.exists(familyDir)) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>            LOG.warn(family[j] + " family dir does not exist");<a name="line.186"></a>
-<span class="sourceLineNo">187</span>          }<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          allFamilyDirs.remove(familyDir);<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>      assertTrue("found extraneous families: " + allFamilyDirs, allFamilyDirs.isEmpty());<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    }<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    assertTrue("found extraneous regions: " + allRegionDirs, allRegionDirs.isEmpty());<a name="line.193"></a>
-<span class="sourceLineNo">194</span><a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // check meta<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    assertTrue(MetaTableAccessor.tableExists(master.getConnection(), tableName));<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    assertEquals(regions.length, countMetaRegions(master, tableName));<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>    // check htd<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    HTableDescriptor htd = master.getTableDescriptors().get(tableName);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    assertTrue("table descriptor not found", htd != null);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    for (int i = 0; i &lt; family.length; ++i) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      assertTrue("family not found " + family[i], htd.getFamily(Bytes.toBytes(family[i])) != null);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    assertEquals(family.length, htd.getFamilies().size());<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  }<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>  public static void validateTableDeletion(<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      final HMaster master, final TableName tableName) throws IOException {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    // check filesystem<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    final FileSystem fs = master.getMasterFileSystem().getFileSystem();<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    final Path tableDir = FSUtils.getTableDir(master.getMasterFileSystem().getRootDir(), tableName);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    assertFalse(fs.exists(tableDir));<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>    // check meta<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    assertFalse(MetaTableAccessor.tableExists(master.getConnection(), tableName));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    assertEquals(0, countMetaRegions(master, tableName));<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // check htd<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    assertTrue("found htd of deleted table",<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      master.getTableDescriptors().get(tableName) == null);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  private static int countMetaRegions(final HMaster master, final TableName tableName)<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      throws IOException {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    final AtomicInteger actualRegCount = new AtomicInteger(0);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    final MetaTableAccessor.Visitor visitor = new MetaTableAccessor.Visitor() {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      @Override<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      public boolean visit(Result rowResult) throws IOException {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        RegionLocations list = MetaTableAccessor.getRegionLocations(rowResult);<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        if (list == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>          LOG.warn("No serialized HRegionInfo in " + rowResult);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          return true;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        HRegionLocation l = list.getRegionLocation();<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        if (l == null) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          return true;<a name="line.237"></a>
+<span class="sourceLineNo">095</span>          MasterMetaBootstrap metaBootstrap = new MasterMetaBootstrap(master,<a name="line.95"></a>
+<span class="sourceLineNo">096</span>              TaskMonitor.get().createStatus("meta"));<a name="line.96"></a>
+<span class="sourceLineNo">097</span>          metaBootstrap.recoverMeta();<a name="line.97"></a>
+<span class="sourceLineNo">098</span>          metaBootstrap.processDeadServers();<a name="line.98"></a>
+<span class="sourceLineNo">099</span>          am.joinCluster();<a name="line.99"></a>
+<span class="sourceLineNo">100</span>          master.setInitialized(true);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>          return null;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>        }<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      });<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>  // ==========================================================================<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  //  Master failover utils<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  // ==========================================================================<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  public static void masterFailover(final HBaseTestingUtility testUtil)<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      throws Exception {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    MiniHBaseCluster cluster = testUtil.getMiniHBaseCluster();<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>    // Kill the master<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    HMaster oldMaster = cluster.getMaster();<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    cluster.killMaster(cluster.getMaster().getServerName());<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>    // Wait the secondary<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    waitBackupMaster(testUtil, oldMaster);<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 waitBackupMaster(final HBaseTestingUtility testUtil,<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      final HMaster oldMaster) throws Exception {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    MiniHBaseCluster cluster = testUtil.getMiniHBaseCluster();<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>    HMaster newMaster = cluster.getMaster();<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    while (newMaster == null || newMaster == oldMaster) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      Thread.sleep(250);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      newMaster = cluster.getMaster();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>    while (!(newMaster.isActiveMaster() &amp;&amp; newMaster.isInitialized())) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      Thread.sleep(250);<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><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  // ==========================================================================<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  //  Table Helpers<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  // ==========================================================================<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  public static HTableDescriptor createHTD(final TableName tableName, final String... family) {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    for (int i = 0; i &lt; family.length; ++i) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      htd.addFamily(new HColumnDescriptor(family[i]));<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    }<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    return htd;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  public static HRegionInfo[] createTable(final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec,<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      final TableName tableName, final byte[][] splitKeys, String... family) throws IOException {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    HTableDescriptor htd = createHTD(tableName, family);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    HRegionInfo[] regions = ModifyRegionUtils.createHRegionInfos(htd, splitKeys);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    long procId = ProcedureTestingUtility.submitAndWait(procExec,<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      new CreateTableProcedure(procExec.getEnvironment(), htd, regions));<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    ProcedureTestingUtility.assertProcNotFailed(procExec.getResult(procId));<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    return regions;<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>  public static void validateTableCreation(final HMaster master, final TableName tableName,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      final HRegionInfo[] regions, String... family) throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    validateTableCreation(master, tableName, regions, true, family);<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>  public static void validateTableCreation(final HMaster master, final TableName tableName,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      final HRegionInfo[] regions, boolean hasFamilyDirs, String... family) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    // check filesystem<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    final FileSystem fs = master.getMasterFileSystem().getFileSystem();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    final Path tableDir = FSUtils.getTableDir(master.getMasterFileSystem().getRootDir(), tableName);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    assertTrue(fs.exists(tableDir));<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    FSUtils.logFileSystemState(fs, tableDir, LOG);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    List&lt;Path&gt; allRegionDirs = FSUtils.getRegionDirs(fs, tableDir);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    for (int i = 0; i &lt; regions.length; ++i) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      Path regionDir = new Path(tableDir, regions[i].getEncodedName());<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      assertTrue(regions[i] + " region dir does not exist", fs.exists(regionDir));<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      assertTrue(allRegionDirs.remove(regionDir));<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      List&lt;Path&gt; allFamilyDirs = FSUtils.getFamilyDirs(fs, regionDir);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      for (int j = 0; j &lt; family.length; ++j) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        final Path familyDir = new Path(regionDir, family[j]);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        if (hasFamilyDirs) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>          assertTrue(family[j] + " family dir does not exist", fs.exists(familyDir));<a name="line.178"></a>
+<span class="sourceLineNo">179</span>          assertTrue(allFamilyDirs.remove(familyDir));<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        } else {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          // TODO: WARN: Modify Table/Families does not create a family dir<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          if (!fs.exists(familyDir)) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>            LOG.warn(family[j] + " family dir does not exist");<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          allFamilyDirs.remove(familyDir);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      assertTrue("found extraneous families: " + allFamilyDirs, allFamilyDirs.isEmpty());<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    assertTrue("found extraneous regions: " + allRegionDirs, allRegionDirs.isEmpty());<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // check meta<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    assertTrue(MetaTableAccessor.tableExists(master.getConnection(), tableName));<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    assertEquals(regions.length, countMetaRegions(master, tableName));<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // check htd<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    HTableDescriptor htd = master.getTableDescriptors().get(tableName);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    assertTrue("table descriptor not found", htd != null);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    for (int i = 0; i &lt; family.length; ++i) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      assertTrue("family not found " + family[i], htd.getFamily(Bytes.toBytes(family[i])) != null);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    assertEquals(family.length, htd.getFamilies().size());<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>  public static void validateTableDeletion(<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      final HMaster master, final TableName tableName) throws IOException {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    // check filesystem<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    final FileSystem fs = master.getMasterFileSystem().getFileSystem();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    final Path tableDir = FSUtils.getTableDir(master.getMasterFileSystem().getRootDir(), tableName);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    assertFalse(fs.exists(tableDir));<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>    // check meta<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    assertFalse(MetaTableAccessor.tableExists(master.getConnection(), tableName));<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    assertEquals(0, countMetaRegions(master, tableName));<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>    // check htd<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    assertTrue("found htd of deleted table",<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      master.getTableDescriptors().get(tableName) == null);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>  }<a name="line.219"></a>
+<span class="sourceLineNo">220</span><a name="line.220"></a>
+<span class="sourceLineNo">221</span>  private static int countMetaRegions(final HMaster master, final TableName tableName)<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      throws IOException {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    final AtomicInteger actualRegCount = new AtomicInteger(0);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    final MetaTableAccessor.Visitor visitor = new MetaTableAccessor.Visitor() {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      @Override<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      public boolean visit(Result rowResult) throws IOException {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        RegionLocations list = MetaTableAccessor.getRegionLocations(rowResult);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        if (list == null) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>          LOG.warn("No serialized HRegionInfo in " + rowResult);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>          return true;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        }<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        HRegionLocation l = list.getRegionLocation();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        if (l == null) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>          return true;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        }<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        if (!l.getRegionInfo().getTable().equals(tableName)) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          return false;<a name="line.237"></a>
 <span class="sourceLineNo">238</span>        }<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        if (!l.getRegionInfo().getTable().equals(tableName)) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          return false;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        }<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        if (l.getRegionInfo().isOffline() || l.getRegionInfo().isSplit()) return true;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        HRegionLocation[] locations = list.getRegionLocations();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        for (HRegionLocation location : locations) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          if (location == null) continue;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          ServerName serverName = location.getServerName();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          // Make sure that regions are assigned to server<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          if (serverName != null &amp;&amp; serverName.getHostAndPort() != null) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>            actualRegCount.incrementAndGet();<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>        return true;<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>    MetaTableAccessor.scanMetaForTableRegions(master.getConnection(), visitor, tableName);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    return actualRegCount.get();<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  }<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public static void validateTableIsEnabled(final HMaster master, final TableName tableName)<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      throws IOException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    TableStateManager tsm = master.getTableStateManager();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assertTrue(tsm.getTableState(tableName).equals(TableState.State.ENABLED));<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  }<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public static void validateTableIsDisabled(final HMaster master, final TableName tableName)<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      throws IOException {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    TableStateManager tsm = master.getTableStateManager();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    assertTrue(tsm.getTableState(tableName).equals(TableState.State.DISABLED));<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>  public static void validateColumnFamilyAddition(final HMaster master, final TableName tableName,<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      final String family) throws IOException {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    HTableDescriptor htd = master.getTableDescriptors().get(tableName);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    assertTrue(htd != null);<a name="line.274"></a>
+<span class="sourceLineNo">239</span>        if (l.getRegionInfo().isOffline() || l.getRegionInfo().isSplit()) return true;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        HRegionLocation[] locations = list.getRegionLocations();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        for (HRegionLocation location : locations) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          if (location == null) continue;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          ServerName serverName = location.getServerName();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          // Make sure that regions are assigned to server<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          if (serverName != null &amp;&amp; serverName.getHostAndPort() != null) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>            actualRegCount.incrementAndGet();<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          }<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        return true;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    };<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    MetaTableAccessor.scanMetaForTableRegions(master.getConnection(), visitor, tableName);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    return actualRegCount.get();<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>  public static void validateTableIsEnabled(final HMaster master, final TableName tableName)<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      throws IOException {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    TableStateManager tsm = master.getTableStateManager();<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    assertTrue(tsm.getTableState(tableName).equals(TableState.State.ENABLED));<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>  public static void validateTableIsDisabled(final HMaster master, final TableName tableName)<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      throws IOException {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    TableStateManager tsm = master.getTableStateManager();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    assertTrue(tsm.getTableState(tableName).equals(TableState.State.DISABLED));<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  }<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>  public static void validateColumnFamilyAddition(final HMaster master, final TableName tableName,<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      final String family) throws IOException {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    HTableDescriptor htd = master.getTableDescriptors().get(tableName);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    assertTrue(htd != null);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    assertTrue(htd.hasFamily(family.getBytes()));<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>    assertTrue(htd.hasFamily(family.getBytes()));<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>  public static void validateColumnFamilyDeletion(final HMaster master, final TableName tableName,<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      final String family) throws IOException {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    // verify htd<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    HTableDescriptor htd = master.getTableDescriptors().get(tableName);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    assertTrue(htd != null);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    assertFalse(htd.hasFamily(family.getBytes()));<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    // verify fs<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    final FileSystem fs = master.getMasterFileSystem().getFileSystem();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    final Path tableDir = FSUtils.getTableDir(master.getMasterFileSystem().getRootDir(), tableName);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    for (Path regionDir: FSUtils.getRegionDirs(fs, tableDir)) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      final Path familyDir = new Path(regionDir, family);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      assertFalse(family + " family dir should not exist", fs.exists(familyDir));<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public static void validateColumnFamilyModification(final HMaster master,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      final TableName tableName, final String family, HColumnDescriptor columnDescriptor)<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      throws IOException {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    HTableDescriptor htd = master.getTableDescriptors().get(tableName);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    assertTrue(htd != null);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    HColumnDescriptor hcfd = htd.getFamily(family.getBytes());<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    assertTrue(hcfd.equals(columnDescriptor));<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  public static void loadData(final Connection connection, final TableName tableName,<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      int rows, final byte[][] splitKeys,  final String... sfamilies) throws IOException {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    byte[][] families = new byte[sfamilies.length][];<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    for (int i = 0; i &lt; families.length; ++i) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      families[i] = Bytes.toBytes(sfamilies[i]);<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>    BufferedMutator mutator = connection.getBufferedMutator(tableName);<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>    // Ensure one row per region<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    assertTrue(rows &gt;= splitKeys.length);<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    for (byte[] k: splitKeys) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      byte[] value = Bytes.add(Bytes.toBytes(System.currentTimeMillis()), k);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      byte[] key = Bytes.add(k, Bytes.toBytes(MD5Hash.getMD5AsHex(value)));<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      mutator.mutate(createPut(families, key, value));<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      rows--;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    }<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>    // Add other extra rows. more rows, more files<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    while (rows-- &gt; 0) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      byte[] value = Bytes.add(Bytes.toBytes(System.currentTimeMillis()), Bytes.toBytes(rows));<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      byte[] key = Bytes.toBytes(MD5Hash.getMD5AsHex(value));<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      mutator.mutate(createPut(families, key, value));<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    mutator.flush();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  }<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private static Put createPut(final byte[][] families, final byte[] key, final byte[] value) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    byte[] q = Bytes.toBytes("q");<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    Put put = new Put(key);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    put.setDurability(Durability.SKIP_WAL);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    for (byte[] family: families) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      put.addColumn(family, q, value);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    return put;<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>  //  Procedure Helpers<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  // ==========================================================================<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  public static long generateNonceGroup(final HMaster master) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    return master.getClusterConnection().getNonceGenerator().getNonceGroup();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public static long generateNonce(final HMaster master) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return master.getClusterConnection().getNonceGenerator().newNonce();<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /**<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * Run through all procedure flow states TWICE while also restarting procedure executor at each<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * step; i.e force a reread of procedure store.<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   *<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   *&lt;p&gt;It does<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * &lt;ol&gt;&lt;li&gt;Execute step N - kill the executor before store update<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * &lt;li&gt;Restart executor/store<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   * &lt;li&gt;Execute step N - and then save to store<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   * &lt;/ol&gt;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   *<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   *&lt;p&gt;This is a good test for finding state that needs persisting and steps that are not<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * idempotent. Use this version of the test when a procedure executes all flow steps from start to<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * finish.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * @see #testRecoveryAndDoubleExecution(ProcedureExecutor, long)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private static void testRecoveryAndDoubleExecution(<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec, final long procId,<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      final int numSteps, final boolean expectExecRunning) throws Exception {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    assertEquals(false, procExec.isRunning());<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>    // Restart the executor and execute the step twice<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    //   execute step N - kill before store update<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    //   restart executor/store<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    //   execute step N - save on store<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    for (int i = 0; i &lt; numSteps; ++i) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      LOG.info("Restart " + i + " exec state=" + procExec.getProcedure(procId));<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      ProcedureTestingUtility.assertProcNotYetCompleted(procExec, procId);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      restartMasterProcedureExecutor(procExec);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
+<span class="sourceLineNo">276</span>  public static void validateColumnFamilyDeletion(final HMaster master, final TableName tableName,<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      final String family) throws IOException {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    // verify htd<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    HTableDescriptor htd = master.getTableDescriptors().get(tableName);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    assertTrue(htd != null);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    assertFalse(htd.hasFamily(family.getBytes()));<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    // verify fs<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    final FileSystem fs = master.getMasterFileSystem().getFileSystem();<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    final Path tableDir = FSUtils.getTableDir(master.getMasterFileSystem().getRootDir(), tableName);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    for (Path regionDir: FSUtils.getRegionDirs(fs, tableDir)) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      final Path familyDir = new Path(regionDir, family);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      assertFalse(family + " family dir should not exist", fs.exists(familyDir));<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    }<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  }<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>  public static void validateColumnFamilyModification(final HMaster master,<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      final TableName tableName, final String family, HColumnDescriptor columnDescriptor)<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      throws IOException {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    HTableDescriptor htd = master.getTableDescriptors().get(tableName);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    assertTrue(htd != null);<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>    HColumnDescriptor hcfd = htd.getFamily(family.getBytes());<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    assertTrue(hcfd.equals(columnDescriptor));<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>  public static void loadData(final Connection connection, final TableName tableName,<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      int rows, final byte[][] splitKeys,  final String... sfamilies) throws IOException {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    byte[][] families = new byte[sfamilies.length][];<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    for (int i = 0; i &lt; families.length; ++i) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      families[i] = Bytes.toBytes(sfamilies[i]);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>    BufferedMutator mutator = connection.getBufferedMutator(tableName);<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    // Ensure one row per region<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    assertTrue(rows &gt;= splitKeys.length);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    for (byte[] k: splitKeys) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      byte[] value = Bytes.add(Bytes.toBytes(System.currentTimeMillis()), k);<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      byte[] key = Bytes.add(k, Bytes.toBytes(MD5Hash.getMD5AsHex(value)));<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      mutator.mutate(createPut(families, key, value));<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      rows--;<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>    // Add other extra rows. more rows, more files<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    while (rows-- &gt; 0) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      byte[] value = Bytes.add(Bytes.toBytes(System.currentTimeMillis()), Bytes.toBytes(rows));<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      byte[] key = Bytes.toBytes(MD5Hash.getMD5AsHex(value));<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      mutator.mutate(createPut(families, key, value));<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    mutator.flush();<a name="line.326"></a>
+<span class="sourceLineNo">327</span>  }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>  private static Put createPut(final byte[][] families, final byte[] key, final byte[] value) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    byte[] q = Bytes.toBytes("q");<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    Put put = new Put(key);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    put.setDurability(Durability.SKIP_WAL);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    for (byte[] family: families) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      put.addColumn(family, q, value);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    return put;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  // ==========================================================================<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  //  Procedure Helpers<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  // ==========================================================================<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  public static long generateNonceGroup(final HMaster master) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    return master.getClusterConnection().getNonceGenerator().getNonceGroup();<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>  public static long generateNonce(final HMaster master) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return master.getClusterConnection().getNonceGenerator().newNonce();<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  /**<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   * Run through all procedure flow states TWICE while also restarting procedure executor at each<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   * step; i.e force a reread of procedure store.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   *<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   *&lt;p&gt;It does<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * &lt;ol&gt;&lt;li&gt;Execute step N - kill the executor before store update<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * &lt;li&gt;Restart executor/store<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * &lt;li&gt;Execute step N - and then save to store<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   * &lt;/ol&gt;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   *<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   *&lt;p&gt;This is a good test for finding state that needs persisting and steps that are not<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   * idempotent. Use this version of the test when a procedure executes all flow steps from start to<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   * finish.<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   * @see #testRecoveryAndDoubleExecution(ProcedureExecutor, long)<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   */<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  private static void testRecoveryAndDoubleExecution(<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec, final long procId,<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      final int numSteps, final boolean expectExecRunning) throws Exception {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    assertEquals(false, procExec.isRunning());<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>    // Restart the executor and execute the step twice<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    //   execute step N - kill before store update<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    //   restart executor/store<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    //   execute step N - save on store<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    for (int i = 0; i &lt; numSteps; ++i) {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      LOG.info("Restart " + i + " exec state=" + procExec.getProcedure(procId));<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      ProcedureTestingUtility.assertProcNotYetCompleted(procExec, procId);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      restartMasterProcedureExecutor(procExec);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      ProcedureTestingUtility.waitProcedure(procExec, procId);<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>    assertEquals(expectExecRunning, procExec.isRunning());<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
 <span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>    assertEquals(expectExecRunning, procExec.isRunning());<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>  /**<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * Run through all procedure flow states TWICE while also restarting<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * procedure executor at each step; i.e force a reread of procedure store.<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   *<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   *&lt;p&gt;It does<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   * &lt;ol&gt;&lt;li&gt;Execute step N - kill the executor before store update<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   * &lt;li&gt;Restart executor/store<a name="line.394"></a>
-<span class="sourceLineNo">395</span>   * &lt;li&gt;Execute step N - and then save to store<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   * &lt;/ol&gt;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>   *<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   *&lt;p&gt;This is a good test for finding state that needs persisting and steps that are not<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * idempotent. Use this version of the test when the order in which flow steps are executed is<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * not start to finish; where the procedure may vary the flow steps dependent on circumstance<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * found.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @see #testRecoveryAndDoubleExecution(ProcedureExecutor, long, int)<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   */<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  public static void testRecoveryAndDoubleExecution(<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec, final long procId) throws Exception {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    assertEquals(false, procExec.isRunning());<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    for (int i = 0; !procExec.isFinished(procId); ++i) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      LOG.info("Restart " + i + " exec state=" + procExec.getProcedure(procId));<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      restartMasterProcedureExecutor(procExec);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    assertEquals(true, procExec.isRunning());<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    ProcedureTestingUtility.assertProcNotFailed(procExec, procId);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  }<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  /**<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * Execute the procedure up to "lastStep" and then the ProcedureExecutor<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * is restarted and an abort() is injected.<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * If the procedure implement abort() this should result in rollback being triggered.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * Each rollback step is called twice, by restarting the executor after every step.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * At the end of this call the procedure should be finished and rolledback.<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * This method assert on the procedure being terminated with an AbortException.<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   */<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  public static void testRollbackAndDoubleExecution(<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec, final long procId,<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      final int lastStep) throws Exception {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    // Execute up to last step<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    testRecoveryAndDoubleExecution(procExec, procId, lastStep, false);<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>    // Restart the executor and rollback the step twice<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    //   rollback step N - kill before store update<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    //   restart executor/store<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    //   rollback step N - save on store<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    InjectAbortOnLoadListener abortListener = new InjectAbortOnLoadListener(procExec);<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    abortListener.addProcId(procId);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    procExec.registerListener(abortListener);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    try {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      for (int i = 0; !procExec.isFinished(procId); ++i) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        LOG.info("Restart " + i + " rollback state: " + procExec.getProcedure(procId));<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        ProcedureTestingUtility.assertProcNotYetCompleted(procExec, procId);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        restartMasterProcedureExecutor(procExec);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      }<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    } finally {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      assertTrue(procExec.unregisterListener(abortListener));<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    assertEquals(true, procExec.isRunning());<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    ProcedureTestingUtility.assertIsAbortException(procExec.getResult(procId));<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>  /**<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * Execute the procedure up to "lastStep" and then the ProcedureExecutor<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   * is restarted and an abort() is injected.<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * If the procedure implement abort() this should result in rollback being triggered.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * At the end of this call the procedure should be finished and rolledback.<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * This method assert on the procedure being terminated with an AbortException.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   */<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  public static void testRollbackRetriableFailure(<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec, final long procId,<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      final int lastStep) throws Exception {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    // Execute up to last step<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    testRecoveryAndDoubleExecution(procExec, procId, lastStep, false);<a name="line.464"></a>
+<span class="sourceLineNo">385</span>  /**<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Run through all procedure flow states TWICE while also restarting<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * procedure executor at each step; i.e force a reread of procedure store.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   *<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   *&lt;p&gt;It does<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * &lt;ol&gt;&lt;li&gt;Execute step N - kill the executor before store update<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * &lt;li&gt;Restart executor/store<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * &lt;li&gt;Execute step N - and then save to store<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   * &lt;/ol&gt;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>   *<a name="line.394"></a>
+<span class="sourceLineNo">395</span>   *&lt;p&gt;This is a good test for finding state that needs persisting and steps that are not<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   * idempotent. Use this version of the test when the order in which flow steps are executed is<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   * not start to finish; where the procedure may vary the flow steps dependent on circumstance<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * found.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @see #testRecoveryAndDoubleExecution(ProcedureExecutor, long, int)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   */<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  public static void testRecoveryAndDoubleExecution(<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec, final long procId) throws Exception {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    assertEquals(false, procExec.isRunning());<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    for (int i = 0; !procExec.isFinished(procId); ++i) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      LOG.info("Restart " + i + " exec state=" + procExec.getProcedure(procId));<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      restartMasterProcedureExecutor(procExec);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    }<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    assertEquals(true, procExec.isRunning());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    ProcedureTestingUtility.assertProcNotFailed(procExec, procId);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>  /**<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * Execute the procedure up to "lastStep" and then the ProcedureExecutor<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   * is restarted and an abort() is injected.<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   * If the procedure implement abort() this should result in rollback being triggered.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   * Each rollback step is called twice, by restarting the executor after every step.<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * At the end of this call the procedure should be finished and rolledback.<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * This method assert on the procedure being terminated with an AbortException.<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  public static void testRollbackAndDoubleExecution(<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec, final long procId,<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      final int lastStep) throws Exception {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    // Execute up to last step<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    testRecoveryAndDoubleExecution(procExec, procId, lastStep, false);<a name="line.426"></a>
+<span class="sourceLineNo">427</span><a name="line.427"></a>
+<span class="sourceLineNo">428</span>    // Restart the executor and rollback the step twice<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    //   rollback step N - kill before store update<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    //   restart executor/store<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    //   rollback step N - save on store<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    InjectAbortOnLoadListener abortListener = new InjectAbortOnLoadListener(procExec);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    abortListener.addProcId(procId);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    procExec.registerListener(abortListener);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    try {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      for (int i = 0; !procExec.isFinished(procId); ++i) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        LOG.info("Restart " + i + " rollback state: " + procExec.getProcedure(procId));<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        ProcedureTestingUtility.assertProcNotYetCompleted(procExec, procId);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        restartMasterProcedureExecutor(procExec);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    } finally {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      assertTrue(procExec.unregisterListener(abortListener));<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>    assertEquals(true, procExec.isRunning());<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    ProcedureTestingUtility.assertIsAbortException(procExec.getResult(procId));<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>  /**<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   * Execute the procedure up to "lastStep" and then the ProcedureExecutor<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   * is restarted and an abort() is injected.<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * If the procedure implement abort() this should result in rollback being triggered.<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   * At the end of this call the procedure should be finished and rolledback.<a name="line.454"></a>
+<span class="sourceLineNo">455</span>   * This method assert on the procedure being terminated with an AbortException.<a name="line.455"></a>
+<span class="sourceLineNo">456</span>   */<a name="line.456"></a>
+<span class="sourceLineNo">457</span>  public static void testRollbackRetriableFailure(<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec, final long procId,<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      final int lastStep) throws Exception {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    // Execute up to last step<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    testRecoveryAndDoubleExecution(procExec, procId, lastStep, false);<a name="line.461"></a>
+<span class="sourceLineNo">462</span><a name="line.462"></a>
+<span class="sourceLineNo">463</span>    // execute the rollback<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    testRestartWithAbort(procExec, procId);<a name="line.464"></a>
 <span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>    // execute the rollback<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    testRestartWithAbort(procExec, procId);<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>    assertEquals(true, procExec.isRunning());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    ProcedureTestingUtility.assertIsAbortException(procExec.getResult(procId));<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>   * Restart the ProcedureExecutor and inject an abort to the specified procedure.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * If the procedure implement abort() this should result in rollback being triggered.<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * At the end of this call the procedure should be finished and rolledback, if abort is implemnted<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   */<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  public static void testRestartWithAbort(ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec,<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      long procId) throws Exception {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, false);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    InjectAbortOnLoadListener abortListener = new InjectAbortOnLoadListener(procExec);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    abortListener.addProcId(procId);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    procExec.registerListener(abortListener);<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    try {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      ProcedureTestingUtility.assertProcNotYetCompleted(procExec, procId);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      LOG.info("Restart and rollback procId=" + procId);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      restartMasterProcedureExecutor(procExec);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    } finally {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      assertTrue(procExec.unregisterListener(abortListener));<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  }<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>  public static class InjectAbortOnLoadListener<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      implements ProcedureExecutor.ProcedureExecutorListener {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    private final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec;<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    private TreeSet&lt;Long&gt; procsToAbort = null;<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    public InjectAbortOnLoadListener(final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      this.procExec = procExec;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    public void addProcId(long procId) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      if (procsToAbort == null) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        procsToAbort = new TreeSet&lt;&gt;();<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      }<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      procsToAbort.add(procId);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>    @Override<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    public void procedureLoaded(long procId) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      if (procsToAbort != null &amp;&amp; !procsToAbort.contains(procId)) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>        return;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      procExec.abort(procId);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
+<span class="sourceLineNo">466</span>    assertEquals(true, procExec.isRunning());<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    ProcedureTestingUtility.assertIsAbortException(procExec.getResult(procId));<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>   * Restart the ProcedureExecutor and inject an abort to the specified procedure.<a name="line.471"></a>
+<span class="sourceLineNo">472</span>   * If the procedure implement abort() this should result in rollback being triggered.<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * At the end of this call the procedure should be finished and rolledback, if abort is implemnted<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   */<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  public static void testRestartWithAbort(ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec,<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      long procId) throws Exception {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, false);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    InjectAbortOnLoadListener abortListener = new InjectAbortOnLoadListener(procExec);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    abortListener.addProcId(procId);<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    procExec.registerListener(abortListener);<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    try {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      ProcedureTestingUtility.assertProcNotYetCompleted(procExec, procId);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      LOG.info("Restart and rollback procId=" + procId);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      restartMasterProcedureExecutor(procExec);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    } finally {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      assertTrue(procExec.unregisterListener(abortListener));<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
+<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>  public static class InjectAbortOnLoadListener<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      implements ProcedureExecutor.ProcedureExecutorListener {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    private final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec;<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    private TreeSet&lt;Long&gt; procsToAbort = null;<a name="line.494"></a>
+<span class="sourceLineNo">495</span><a name="line.495"></a>
+<span class="sourceLineNo">496</span>    public InjectAbortOnLoadListener(final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec) {<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      this.procExec = procExec;<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    }<a name="line.498"></a>
+<span class="sourceLineNo">499</span><a name="line.499"></a>
+<span class="sourceLineNo">500</span>    public void addProcId(long procId) {<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      if (procsToAbort == null) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        procsToAbort = new TreeSet&lt;&gt;();<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      }<a name="line.503"></a>
+<span class="sourceLineNo">504</span>      procsToAbort.add(procId);<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>    @Override<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    public void procedureLoaded(long procId) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      if (procsToAbort != null &amp;&amp; !procsToAbort.contains(procId)) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span>        return;<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      }<a name="line.511"></a>
+<span class="sourceLineNo">512</span>      procExec.abort(procId);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
+<span class="sourceLineNo">514</span><a name="line.514"></a>
+<span class="sourceLineNo">515</span>    @Override<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    public void procedureAdded(long procId) { /* no-op */ }<a name="line.516"></a>
 <span class="sourceLineNo">517</span><a name="line.517"></a>
 <span class="sourceLineNo">518</span>    @Override<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    public void procedureAdded(long procId) { /* no-op */ }<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>    @Override<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    public void procedureFinished(long procId) { /* no-op */ }<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span>}<a name="line.524"></a>
+<span class="sourceLineNo">519</span>    public void procedureFinished(long procId) { /* no-op */ }<a name="line.519"></a>
+<span class="sourceLineNo">520</span>  }<a name="line.520"></a>
+<span class="sourceLineNo">521</span>}<a name="line.521"></a>
 
 
 


[42/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 7f7c67f..3a18497 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="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <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" />
@@ -286,10 +286,10 @@
 <th><img src="images/icon_warning_sml.gif" alt="" />&#160;Warnings</th>
 <th><img src="images/icon_error_sml.gif" alt="" />&#160;Errors</th></tr>
 <tr class="b">
-<td>2249</td>
+<td>2250</td>
 <td>0</td>
 <td>0</td>
-<td>14896</td></tr></table></div>
+<td>14897</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -3047,7 +3047,7 @@
 <td><a href="#org.apache.hadoop.hbase.master.MasterMetaBootstrap.java">org/apache/hadoop/hbase/master/MasterMetaBootstrap.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>2</td></tr>
+<td>1</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.MasterRpcServices.java">org/apache/hadoop/hbase/master/MasterRpcServices.java</a></td>
 <td>0</td>
@@ -3439,3856 +3439,3861 @@
 <td>0</td>
 <td>6</td></tr>
 <tr class="b">
+<td><a href="#org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure.java">org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.java</a></td>
+<td>0</td>
+<td>0</td>
+<td>2</td></tr>
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.RestoreSnapshotProcedure.java">org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure.java">org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>56</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure.java">org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.replication.ReplicationManager.java">org/apache/hadoop/hbase/master/replication/ReplicationManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.snapshot.DisabledTableSnapshotHandler.java">org/apache/hadoop/hbase/master/snapshot/DisabledTableSnapshotHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.snapshot.EnabledTableSnapshotHandler.java">org/apache/hadoop/hbase/master/snapshot/EnabledTableSnapshotHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.snapshot.MasterSnapshotVerifier.java">org/apache/hadoop/hbase/master/snapshot/MasterSnapshotVerifier.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.snapshot.SnapshotFileCache.java">org/apache/hadoop/hbase/master/snapshot/SnapshotFileCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.snapshot.SnapshotHFileCleaner.java">org/apache/hadoop/hbase/master/snapshot/SnapshotHFileCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.snapshot.SnapshotManager.java">org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>17</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.snapshot.TakeSnapshotHandler.java">org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.metrics.BaseSourceImpl.java">org/apache/hadoop/hbase/metrics/BaseSourceImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.metrics.Interns.java">org/apache/hadoop/hbase/metrics/Interns.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.metrics.MetricRegistriesLoader.java">org/apache/hadoop/hbase/metrics/MetricRegistriesLoader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.metrics.MetricSet.java">org/apache/hadoop/hbase/metrics/MetricSet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.metrics.MetricsInfoImpl.java">org/apache/hadoop/hbase/metrics/MetricsInfoImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.metrics.impl.DropwizardMeter.java">org/apache/hadoop/hbase/metrics/impl/DropwizardMeter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.metrics.impl.GlobalMetricRegistriesAdapter.java">org/apache/hadoop/hbase/metrics/impl/GlobalMetricRegistriesAdapter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.metrics.impl.RefCountingMap.java">org/apache/hadoop/hbase/metrics/impl/RefCountingMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mob.CachedMobFile.java">org/apache/hadoop/hbase/mob/CachedMobFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mob.DefaultMobStoreCompactor.java">org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mob.DefaultMobStoreFlusher.java">org/apache/hadoop/hbase/mob/DefaultMobStoreFlusher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mob.MobCacheConfig.java">org/apache/hadoop/hbase/mob/MobCacheConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mob.MobFile.java">org/apache/hadoop/hbase/mob/MobFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mob.MobFileCache.java">org/apache/hadoop/hbase/mob/MobFileCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mob.MobUtils.java">org/apache/hadoop/hbase/mob/MobUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mob.compactions.MobCompactor.java">org/apache/hadoop/hbase/mob/compactions/MobCompactor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mob.compactions.PartitionedMobCompactionRequest.java">org/apache/hadoop/hbase/mob/compactions/PartitionedMobCompactionRequest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mob.compactions.PartitionedMobCompactor.java">org/apache/hadoop/hbase/mob/compactions/PartitionedMobCompactor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.monitoring.LogMonitoring.java">org/apache/hadoop/hbase/monitoring/LogMonitoring.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer.java">org/apache/hadoop/hbase/monitoring/MemoryBoundedLogMessageBuffer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.monitoring.MonitoredRPCHandlerImpl.java">org/apache/hadoop/hbase/monitoring/MonitoredRPCHandlerImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.monitoring.MonitoredTaskImpl.java">org/apache/hadoop/hbase/monitoring/MonitoredTaskImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.monitoring.StateDumpServlet.java">org/apache/hadoop/hbase/monitoring/StateDumpServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.monitoring.ThreadMonitoring.java">org/apache/hadoop/hbase/monitoring/ThreadMonitoring.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.namespace.NamespaceStateManager.java">org/apache/hadoop/hbase/namespace/NamespaceStateManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.namespace.NamespaceTableAndRegionInfo.java">org/apache/hadoop/hbase/namespace/NamespaceTableAndRegionInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.net.Address.java">org/apache/hadoop/hbase/net/Address.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.nio.ByteBuff.java">org/apache/hadoop/hbase/nio/ByteBuff.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>24</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.nio.MultiByteBuff.java">org/apache/hadoop/hbase/nio/MultiByteBuff.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>30</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.nio.SingleByteBuff.java">org/apache/hadoop/hbase/nio/SingleByteBuff.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.MasterProcedureManager.java">org/apache/hadoop/hbase/procedure/MasterProcedureManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.Procedure.java">org/apache/hadoop/hbase/procedure/Procedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.ProcedureCoordinator.java">org/apache/hadoop/hbase/procedure/ProcedureCoordinator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.ProcedureCoordinatorRpcs.java">org/apache/hadoop/hbase/procedure/ProcedureCoordinatorRpcs.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.ProcedureManagerHost.java">org/apache/hadoop/hbase/procedure/ProcedureManagerHost.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.ProcedureMember.java">org/apache/hadoop/hbase/procedure/ProcedureMember.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.ProcedureMemberRpcs.java">org/apache/hadoop/hbase/procedure/ProcedureMemberRpcs.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.RegionServerProcedureManager.java">org/apache/hadoop/hbase/procedure/RegionServerProcedureManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.Subprocedure.java">org/apache/hadoop/hbase/procedure/Subprocedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.ZKProcedureCoordinator.java">org/apache/hadoop/hbase/procedure/ZKProcedureCoordinator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.ZKProcedureMemberRpcs.java">org/apache/hadoop/hbase/procedure/ZKProcedureMemberRpcs.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.ZKProcedureUtil.java">org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager.java">org/apache/hadoop/hbase/procedure/flush/MasterFlushTableProcedureManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.flush.RegionServerFlushTableProcedureManager.java">org/apache/hadoop/hbase/procedure/flush/RegionServerFlushTableProcedureManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.AbstractProcedureScheduler.java">org/apache/hadoop/hbase/procedure2/AbstractProcedureScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.BadProcedureException.java">org/apache/hadoop/hbase/procedure2/BadProcedureException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.LockAndQueue.java">org/apache/hadoop/hbase/procedure2/LockAndQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.Procedure.java">org/apache/hadoop/hbase/procedure2/Procedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.ProcedureDeque.java">org/apache/hadoop/hbase/procedure2/ProcedureDeque.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.ProcedureExecutor.java">org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>27</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.ProcedureScheduler.java">org/apache/hadoop/hbase/procedure2/ProcedureScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.ProcedureUtil.java">org/apache/hadoop/hbase/procedure2/ProcedureUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.java">org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.RemoteProcedureException.java">org/apache/hadoop/hbase/procedure2/RemoteProcedureException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.RootProcedureState.java">org/apache/hadoop/hbase/procedure2/RootProcedureState.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.StateMachineProcedure.java">org/apache/hadoop/hbase/procedure2/StateMachineProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.ProcedureStore.java">org/apache/hadoop/hbase/procedure2/store/ProcedureStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.ProcedureStoreBase.java">org/apache/hadoop/hbase/procedure2/store/ProcedureStoreBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.ProcedureStoreTracker.java">org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALFile.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALFormat.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALFormatReader.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFormatReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore.java">org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.util.DelayedUtil.java">org/apache/hadoop/hbase/procedure2/util/DelayedUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.util.StringUtils.java">org/apache/hadoop/hbase/procedure2/util/StringUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.protobuf.ProtobufMagic.java">org/apache/hadoop/hbase/protobuf/ProtobufMagic.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.protobuf.ProtobufUtil.java">org/apache/hadoop/hbase/protobuf/ProtobufUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>103</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.protobuf.ReplicationProtbufUtil.java">org/apache/hadoop/hbase/protobuf/ReplicationProtbufUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.AverageIntervalRateLimiter.java">org/apache/hadoop/hbase/quotas/AverageIntervalRateLimiter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.DefaultOperationQuota.java">org/apache/hadoop/hbase/quotas/DefaultOperationQuota.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.FileSystemUtilizationChore.java">org/apache/hadoop/hbase/quotas/FileSystemUtilizationChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.FixedIntervalRateLimiter.java">org/apache/hadoop/hbase/quotas/FixedIntervalRateLimiter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.MasterQuotaManager.java">org/apache/hadoop/hbase/quotas/MasterQuotaManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.NamespaceQuotaSnapshotStore.java">org/apache/hadoop/hbase/quotas/NamespaceQuotaSnapshotStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.NoopOperationQuota.java">org/apache/hadoop/hbase/quotas/NoopOperationQuota.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.NoopQuotaLimiter.java">org/apache/hadoop/hbase/quotas/NoopQuotaLimiter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaCache.java">org/apache/hadoop/hbase/quotas/QuotaCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaLimiter.java">org/apache/hadoop/hbase/quotas/QuotaLimiter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaLimiterFactory.java">org/apache/hadoop/hbase/quotas/QuotaLimiterFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaObserverChore.java">org/apache/hadoop/hbase/quotas/QuotaObserverChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaRetriever.java">org/apache/hadoop/hbase/quotas/QuotaRetriever.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaSettings.java">org/apache/hadoop/hbase/quotas/QuotaSettings.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaSettingsFactory.java">org/apache/hadoop/hbase/quotas/QuotaSettingsFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaTableUtil.java">org/apache/hadoop/hbase/quotas/QuotaTableUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaUtil.java">org/apache/hadoop/hbase/quotas/QuotaUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.RateLimiter.java">org/apache/hadoop/hbase/quotas/RateLimiter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager.java">org/apache/hadoop/hbase/quotas/RegionServerRpcQuotaManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager.java">org/apache/hadoop/hbase/quotas/RegionServerSpaceQuotaManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore.java">org/apache/hadoop/hbase/quotas/SnapshotQuotaObserverChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.SpaceLimitSettings.java">org/apache/hadoop/hbase/quotas/SpaceLimitSettings.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory.java">org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifierFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcementFactory.java">org/apache/hadoop/hbase/quotas/SpaceViolationPolicyEnforcementFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.TableQuotaSnapshotStore.java">org/apache/hadoop/hbase/quotas/TableQuotaSnapshotStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.ThrottleSettings.java">org/apache/hadoop/hbase/quotas/ThrottleSettings.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.ThrottlingException.java">org/apache/hadoop/hbase/quotas/ThrottlingException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.TimeBasedLimiter.java">org/apache/hadoop/hbase/quotas/TimeBasedLimiter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.quotas.UserQuotaState.java">org/apache/hadoop/hbase/quotas/UserQuotaState.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.policies.MissingSnapshotViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/MissingSnapshotViolationPolicyEnforcement.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.AbstractMemStore.java">org/apache/hadoop/hbase/regionserver/AbstractMemStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.AbstractMultiFileWriter.java">org/apache/hadoop/hbase/regionserver/AbstractMultiFileWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.AnnotationReadingPriorityFunction.java">org/apache/hadoop/hbase/regionserver/AnnotationReadingPriorityFunction.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.BaseRowProcessor.java">org/apache/hadoop/hbase/regionserver/BaseRowProcessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CellArrayImmutableSegment.java">org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CellArrayMap.java">org/apache/hadoop/hbase/regionserver/CellArrayMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CellChunkImmutableSegment.java">org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CellChunkMap.java">org/apache/hadoop/hbase/regionserver/CellChunkMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CellFlatMap.java">org/apache/hadoop/hbase/regionserver/CellFlatMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CellSet.java">org/apache/hadoop/hbase/regionserver/CellSet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CellSink.java">org/apache/hadoop/hbase/regionserver/CellSink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ChangedReadersObserver.java">org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.Chunk.java">org/apache/hadoop/hbase/regionserver/Chunk.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ChunkCreator.java">org/apache/hadoop/hbase/regionserver/ChunkCreator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CompactSplit.java">org/apache/hadoop/hbase/regionserver/CompactSplit.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CompactedHFilesDischargeHandler.java">org/apache/hadoop/hbase/regionserver/CompactedHFilesDischargeHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CompactedHFilesDischarger.java">org/apache/hadoop/hbase/regionserver/CompactedHFilesDischarger.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CompactingMemStore.java">org/apache/hadoop/hbase/regionserver/CompactingMemStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CompactionPipeline.java">org/apache/hadoop/hbase/regionserver/CompactionPipeline.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CompactionRequestor.java">org/apache/hadoop/hbase/regionserver/CompactionRequestor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CompactionTool.java">org/apache/hadoop/hbase/regionserver/CompactionTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CompositeImmutableSegment.java">org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ConstantSizeRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/ConstantSizeRegionSplitPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.DefaultHeapMemoryTuner.java">org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>31</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.DefaultMemStore.java">org/apache/hadoop/hbase/regionserver/DefaultMemStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.DefaultStoreFlusher.java">org/apache/hadoop/hbase/regionserver/DefaultStoreFlusher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.DelimitedKeyPrefixRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/DelimitedKeyPrefixRegionSplitPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/DisabledRegionSplitPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.FavoredNodesForRegion.java">org/apache/hadoop/hbase/regionserver/FavoredNodesForRegion.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.FifoRpcSchedulerFactory.java">org/apache/hadoop/hbase/regionserver/FifoRpcSchedulerFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.FlushAllLargeStoresPolicy.java">org/apache/hadoop/hbase/regionserver/FlushAllLargeStoresPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.FlushLargeStoresPolicy.java">org/apache/hadoop/hbase/regionserver/FlushLargeStoresPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.FlushNonSloppyStoresFirstPolicy.java">org/apache/hadoop/hbase/regionserver/FlushNonSloppyStoresFirstPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.FlushPolicyFactory.java">org/apache/hadoop/hbase/regionserver/FlushPolicyFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.FlushRequestListener.java">org/apache/hadoop/hbase/regionserver/FlushRequestListener.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.FlushRequester.java">org/apache/hadoop/hbase/regionserver/FlushRequester.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HMobStore.java">org/apache/hadoop/hbase/regionserver/HMobStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HRegion.java">org/apache/hadoop/hbase/regionserver/HRegion.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>210</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HRegionFileSystem.java">org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>48</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HRegionServer.java">org/apache/hadoop/hbase/regionserver/HRegionServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>130</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.java">org/apache/hadoop/hbase/regionserver/HRegionServerCommandLine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HStore.java">org/apache/hadoop/hbase/regionserver/HStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>54</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HStoreFile.java">org/apache/hadoop/hbase/regionserver/HStoreFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HeapMemoryManager.java">org/apache/hadoop/hbase/regionserver/HeapMemoryManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.HeapMemoryTuner.java">org/apache/hadoop/hbase/regionserver/HeapMemoryTuner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ImmutableSegment.java">org/apache/hadoop/hbase/regionserver/ImmutableSegment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.IncreasingToUpperBoundRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/IncreasingToUpperBoundRegionSplitPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.InternalScan.java">org/apache/hadoop/hbase/regionserver/InternalScan.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.InternalScanner.java">org/apache/hadoop/hbase/regionserver/InternalScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.KeyPrefixRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/KeyPrefixRegionSplitPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.KeyValueHeap.java">org/apache/hadoop/hbase/regionserver/KeyValueHeap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.KeyValueScanner.java">org/apache/hadoop/hbase/regionserver/KeyValueScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.LeaseException.java">org/apache/hadoop/hbase/regionserver/LeaseException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.Leases.java">org/apache/hadoop/hbase/regionserver/Leases.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.LogRoller.java">org/apache/hadoop/hbase/regionserver/LogRoller.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStore.java">org/apache/hadoop/hbase/regionserver/MemStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreCompactor.java">org/apache/hadoop/hbase/regionserver/MemStoreCompactor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>20</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreCompactorSegmentsIterator.java">org/apache/hadoop/hbase/regionserver/MemStoreCompactorSegmentsIterator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreFlusher.java">org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>32</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreLABImpl.java">org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreMergerSegmentsIterator.java">org/apache/hadoop/hbase/regionserver/MemStoreMergerSegmentsIterator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreSegmentsIterator.java">org/apache/hadoop/hbase/regionserver/MemStoreSegmentsIterator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreSnapshot.java">org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsHeapMemoryManagerSource.java">org/apache/hadoop/hbase/regionserver/MetricsHeapMemoryManagerSource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsRegion.java">org/apache/hadoop/hbase/regionserver/MetricsRegion.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsRegionServerSource.java">org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsRegionServerSourceFactoryImpl.java">org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsRegionServerSourceImpl.java">org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapperImpl.java">org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsRegionWrapper.java">org/apache/hadoop/hbase/regionserver/MetricsRegionWrapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsRegionWrapperImpl.java">org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsTable.java">org/apache/hadoop/hbase/regionserver/MetricsTable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsTableAggregateSourceImpl.java">org/apache/hadoop/hbase/regionserver/MetricsTableAggregateSourceImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsTableSourceImpl.java">org/apache/hadoop/hbase/regionserver/MetricsTableSourceImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MetricsTableWrapperAggregateImpl.java">org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregateImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>20</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress.java">org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MultiRowMutationProcessor.java">org/apache/hadoop/hbase/regionserver/MultiRowMutationProcessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.java">org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MutableSegment.java">org/apache/hadoop/hbase/regionserver/MutableSegment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.NoOpHeapMemoryTuner.java">org/apache/hadoop/hbase/regionserver/NoOpHeapMemoryTuner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.NonLazyKeyValueScanner.java">org/apache/hadoop/hbase/regionserver/NonLazyKeyValueScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.NonReversedNonLazyKeyValueScanner.java">org/apache/hadoop/hbase/regionserver/NonReversedNonLazyKeyValueScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.OnlineRegions.java">org/apache/hadoop/hbase/regionserver/OnlineRegions.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.OperationStatus.java">org/apache/hadoop/hbase/regionserver/OperationStatus.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RSDumpServlet.java">org/apache/hadoop/hbase/regionserver/RSDumpServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RSRpcServices.java">org/apache/hadoop/hbase/regionserver/RSRpcServices.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>148</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RSStatusServlet.java">org/apache/hadoop/hbase/regionserver/RSStatusServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.Region.java">org/apache/hadoop/hbase/regionserver/Region.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>62</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.java">org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>191</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionMergeRequest.java">org/apache/hadoop/hbase/regionserver/RegionMergeRequest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionScanner.java">org/apache/hadoop/hbase/regionserver/RegionScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionServerCoprocessorHost.java">org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionServerServices.java">org/apache/hadoop/hbase/regionserver/RegionServerServices.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionServicesForStores.java">org/apache/hadoop/hbase/regionserver/RegionServicesForStores.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ReplicationService.java">org/apache/hadoop/hbase/regionserver/ReplicationService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ReplicationSinkService.java">org/apache/hadoop/hbase/regionserver/ReplicationSinkService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ReversedKeyValueHeap.java">org/apache/hadoop/hbase/regionserver/ReversedKeyValueHeap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ReversedRegionScannerImpl.java">org/apache/hadoop/hbase/regionserver/ReversedRegionScannerImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ReversedStoreScanner.java">org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RowProcessor.java">org/apache/hadoop/hbase/regionserver/RowProcessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RpcSchedulerFactory.java">org/apache/hadoop/hbase/regionserver/RpcSchedulerFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ScanInfo.java">org/apache/hadoop/hbase/regionserver/ScanInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ScannerContext.java">org/apache/hadoop/hbase/regionserver/ScannerContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ScannerIdGenerator.java">org/apache/hadoop/hbase/regionserver/ScannerIdGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.SecureBulkLoadManager.java">org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.Segment.java">org/apache/hadoop/hbase/regionserver/Segment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.SegmentFactory.java">org/apache/hadoop/hbase/regionserver/SegmentFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>24</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.SegmentScanner.java">org/apache/hadoop/hbase/regionserver/SegmentScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ServerNonceManager.java">org/apache/hadoop/hbase/regionserver/ServerNonceManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ShipperListener.java">org/apache/hadoop/hbase/regionserver/ShipperListener.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ShutdownHook.java">org/apache/hadoop/hbase/regionserver/ShutdownHook.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory.java">org/apache/hadoop/hbase/regionserver/SimpleRpcSchedulerFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.SplitLogWorker.java">org/apache/hadoop/hbase/regionserver/SplitLogWorker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.SplitRequest.java">org/apache/hadoop/hbase/regionserver/SplitRequest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.SteppingSplitPolicy.java">org/apache/hadoop/hbase/regionserver/SteppingSplitPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.Store.java">org/apache/hadoop/hbase/regionserver/Store.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreEngine.java">org/apache/hadoop/hbase/regionserver/StoreEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFile.java">org/apache/hadoop/hbase/regionserver/StoreFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileComparators.java">org/apache/hadoop/hbase/regionserver/StoreFileComparators.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileInfo.java">org/apache/hadoop/hbase/regionserver/StoreFileInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileManager.java">org/apache/hadoop/hbase/regionserver/StoreFileManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileReader.java">org/apache/hadoop/hbase/regionserver/StoreFileReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileScanner.java">org/apache/hadoop/hbase/regionserver/StoreFileScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileWriter.java">org/apache/hadoop/hbase/regionserver/StoreFileWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFlushContext.java">org/apache/hadoop/hbase/regionserver/StoreFlushContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFlusher.java">org/apache/hadoop/hbase/regionserver/StoreFlusher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreScanner.java">org/apache/hadoop/hbase/regionserver/StoreScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>26</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreUtils.java">org/apache/hadoop/hbase/regionserver/StoreUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StorefileRefresherChore.java">org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StripeMultiFileWriter.java">org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StripeStoreConfig.java">org/apache/hadoop/hbase/regionserver/StripeStoreConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StripeStoreFileManager.java">org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>19</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StripeStoreFlusher.java">org/apache/hadoop/hbase/regionserver/StripeStoreFlusher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.TimeRangeTracker.java">org/apache/hadoop/hbase/regionserver/TimeRangeTracker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.compactions.CompactionContext.java">org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.compactions.CompactionPolicy.java">org/apache/hadoop/hbase/regionserver/compactions/CompactionPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.compactions.CompactionProgress.java">org/apache/hadoop/hbase/regionserver/compactions/CompactionProgress.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest.java">org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.compactions.Compactor.java">org/apache/hadoop/hbase/regionserver/compactions/Compactor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.compactions.CurrentHourProvider.java">org/apache/hadoop/hbase/regionserver/compactions/CurrentHourProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.compactions.DateTieredCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/compactions/DateTieredCompactionPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor.java">org/apache/hadoop/hbase/regionserver/compactions/DefaultCompactor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.compactions.ExponentialCompactionWindowFactory.java">org/apache/hadoop/hbase/regionserver/compactions/ExponentialCompactionWindowFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.compactions.OffPeakHours.java">org/apache/hadoop/hbase/regionserver/compactions/OffPeakHours.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.compactions.RatioBasedCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.compactions.SortedCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/compactions/SortedCompactionPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.compactions.StripeCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.handler.CloseMetaHandler.java">org/apache/hadoop/hbase/regionserver/handler/CloseMetaHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.handler.CloseRegionHandler.java">org/apache/hadoop/hbase/regionserver/handler/CloseRegionHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler.java">org/apache/hadoop/hbase/regionserver/handler/OpenMetaHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler.java">org/apache/hadoop/hbase/regionserver/handler/OpenPriorityRegionHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.java">org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.handler.ParallelSeekHandler.java">org/apache/hadoop/hbase/regionserver/handler/ParallelSeekHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.handler.RegionReplicaFlushHandler.java">org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.handler.WALSplitterHandler.java">org/apache/hadoop/hbase/regionserver/handler/WALSplitterHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>24</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.querymatcher.ColumnTracker.java">org/apache/hadoop/hbase/regionserver/querymatcher/ColumnTracker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.querymatcher.DeleteTracker.java">org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.querymatcher.ExplicitColumnTracker.java">org/apache/hadoop/hbase/regionserver/querymatcher/ExplicitColumnTracker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.querymatcher.LegacyScanQueryMatcher.java">org/apache/hadoop/hbase/regionserver/querymatcher/LegacyScanQueryMatcher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.querymatcher.NewVersionBehaviorTracker.java">org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>17</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.querymatcher.ScanDeleteTracker.java">org/apache/hadoop/hbase/regionserver/querymatcher/ScanDeleteTracker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher.java">org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.snapshot.RegionServerSnapshotManager.java">org/apache/hadoop/hbase/regionserver/snapshot/RegionServerSnapshotManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>17</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.throttle.PressureAwareThroughputController.java">org/apache/hadoop/hbase/regionserver/throttle/PressureAwareThroughputController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.AbstractFSWAL.java">org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.AbstractProtobufLogWriter.java">org/apache/hadoop/hbase/regionserver/wal/AbstractProtobufLogWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.AsyncFSWAL.java">org/apache/hadoop/hbase/regionserver/wal/AsyncFSWAL.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.AsyncProtobufLogWriter.java">org/apache/hadoop/hbase/regionserver/wal/AsyncProtobufLogWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.CompressionContext.java">org/apache/hadoop/hbase/regionserver/wal/CompressionContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.Compressor.java">org/apache/hadoop/hbase/regionserver/wal/Compressor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.FSHLog.java">org/apache/hadoop/hbase/regionserver/wal/FSHLog.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.FSWALEntry.java">org/apache/hadoop/hbase/regionserver/wal/FSWALEntry.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.FailedLogCloseException.java">org/apache/hadoop/hbase/regionserver/wal/FailedLogCloseException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.FailedSyncBeforeLogCloseException.java">org/apache/hadoop/hbase/regionserver/wal/FailedSyncBeforeLogCloseException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.HLogPrettyPrinter.java">org/apache/hadoop/hbase/regionserver/wal/HLogPrettyPrinter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.MetricsWAL.java">org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.MetricsWALEditsReplay.java">org/apache/hadoop/hbase/regionserver/wal/MetricsWALEditsReplay.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.MetricsWALSourceImpl.java">org/apache/hadoop/hbase/regionserver/wal/MetricsWALSourceImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader.java">org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>26</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.ProtobufLogWriter.java">org/apache/hadoop/hbase/regionserver/wal/ProtobufLogWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.ReaderBase.java">org/apache/hadoop/hbase/regionserver/wal/ReaderBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.SecureAsyncProtobufLogWriter.java">org/apache/hadoop/hbase/regionserver/wal/SecureAsyncProtobufLogWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.SecureProtobufLogReader.java">org/apache/hadoop/hbase/regionserver/wal/SecureProtobufLogReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.SecureWALCellCodec.java">org/apache/hadoop/hbase/regionserver/wal/SecureWALCellCodec.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.SequenceIdAccounting.java">org/apache/hadoop/hbase/regionserver/wal/SequenceIdAccounting.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.java">org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.WALCellCodec.java">org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.WALCoprocessorHost.java">org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.WALEdit.java">org/apache/hadoop/hbase/regionserver/wal/WALEdit.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.WALEditsReplaySink.java">org/apache/hadoop/hbase/regionserver/wal/WALEditsReplaySink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.WALUtil.java">org/apache/hadoop/hbase/regionserver/wal/WALUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.BaseReplicationEndpoint.java">org/apache/hadoop/hbase/replication/BaseReplicationEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.BulkLoadCellFilter.java">org/apache/hadoop/hbase/replication/BulkLoadCellFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.ChainWALEntryFilter.java">org/apache/hadoop/hbase/replication/ChainWALEntryFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.ClusterMarkingEntryFilter.java">org/apache/hadoop/hbase/replication/ClusterMarkingEntryFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.HBaseReplicationEndpoint.java">org/apache/hadoop/hbase/replication/HBaseReplicationEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.NamespaceTableCfWALEntryFilter.java">org/apache/hadoop/hbase/replication/NamespaceTableCfWALEntryFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.ReplicationEndpoint.java">org/apache/hadoop/hbase/replication/ReplicationEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.ReplicationFactory.java">org/apache/hadoop/hbase/replication/ReplicationFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.ReplicationPeerZKImpl.java">org/apache/hadoop/hbase/replication/ReplicationPeerZKImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.ReplicationPeers.java">org/apache/hadoop/hbase/replication/ReplicationPeers.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.ReplicationPeersZKImpl.java">org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.ReplicationQueueInfo.java">org/apache/hadoop/hbase/replication/ReplicationQueueInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>21</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.ReplicationQueues.java">org/apache/hadoop/hbase/replication/ReplicationQueues.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.ReplicationQueuesClient.java">org/apache/hadoop/hbase/replication/ReplicationQueuesClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.ReplicationQueuesClientZKImpl.java">org/apache/hadoop/hbase/replication/ReplicationQueuesClientZKImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.ReplicationQueuesZKImpl.java">org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.ReplicationStateZKBase.java">org/apache/hadoop/hbase/replication/ReplicationStateZKBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.ReplicationTableBase.java">org/apache/hadoop/hbase/replication/ReplicationTableBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.ReplicationTracker.java">org/apache/hadoop/hbase/replication/ReplicationTracker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.ReplicationTrackerZKImpl.java">org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.ScopeWALEntryFilter.java">org/apache/hadoop/hbase/replication/ScopeWALEntryFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.TableBasedReplicationQueuesClientImpl.java">org/apache/hadoop/hbase/replication/TableBasedReplicationQueuesClientImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.TableBasedReplicationQueuesImpl.java">org/apache/hadoop/hbase/replication/TableBasedReplicationQueuesImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.WALCellFilter.java">org/apache/hadoop/hbase/replication/WALCellFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.WALEntryFilter.java">org/apache/hadoop/hbase/replication/WALEntryFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner.java">org/apache/hadoop/hbase/replication/master/ReplicationHFileCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner.java">org/apache/hadoop/hbase/replication/master/ReplicationLogCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.master.TableCFsUpdater.java">org/apache/hadoop/hbase/replication/master/TableCFsUpdater.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.DumpReplicationQueues.java">org/apache/hadoop/hbase/replication/regionserver/DumpReplicationQueues.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.HBaseInterClusterReplicationEndpoint.java">org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.HFileReplicator.java">org/apache/hadoop/hbase/replication/regionserver/HFileReplicator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.MetricsReplicationGlobalSourceSource.java">org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationGlobalSourceSource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.MetricsReplicationSinkSourceImpl.java">org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSinkSourceImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.MetricsReplicationSource.java">org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.MetricsReplicationSourceSource.java">org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.MetricsReplicationSourceSourceImpl.java">org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSourceImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.MetricsSink.java">org/apache/hadoop/hbase/replication/regionserver/MetricsSink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.MetricsSource.java">org/apache/hadoop/hbase/replication/regionserver/MetricsSource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.RegionReplicaReplicationEndpoint.java">org/apache/hadoop/hbase/replication/regionserver/RegionReplicaReplicationEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.Replication.java">org/apache/hadoop/hbase/replication/regionserver/Replication.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.ReplicationLoad.java">org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.ReplicationObserver.java">org/apache/hadoop/hbase/replication/regionserver/ReplicationObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.ReplicationSink.java">org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.ReplicationSinkManager.java">org/apache/hadoop/hbase/replication/regionserver/ReplicationSinkManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.ReplicationSource.java">org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceFactory.java">org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceInterface.java">org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceManager.java">org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>17</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceShipper.java">org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceWALReader.java">org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.ReplicationSyncUp.java">org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.ReplicationThrottler.java">org/apache/hadoop/hbase/replication/regionserver/ReplicationThrottler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.replication.regionserver.WALEntryStream.java">org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.Constants.java">org/apache/hadoop/hbase/rest/Constants.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.ExistsResource.java">org/apache/hadoop/hbase/rest/ExistsResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.MetricsREST.java">org/apache/hadoop/hbase/rest/MetricsREST.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.MetricsRESTSource.java">org/apache/hadoop/hbase/rest/MetricsRESTSource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.MetricsRESTSourceImpl.java">org/apache/hadoop/hbase/rest/MetricsRESTSourceImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.MultiRowResource.java">org/apache/hadoop/hbase/rest/MultiRowResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.NamespacesInstanceResource.java">org/apache/hadoop/hbase/rest/NamespacesInstanceResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.NamespacesResource.java">org/apache/hadoop/hbase/rest/NamespacesResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.ProtobufMessageHandler.java">org/apache/hadoop/hbase/rest/ProtobufMessageHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.RESTServer.java">org/apache/hadoop/hbase/rest/RESTServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.RESTServlet.java">org/apache/hadoop/hbase/rest/RESTServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.RESTServletContainer.java">org/apache/hadoop/hbase/rest/RESTServletContainer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.RegionsResource.java">org/apache/hadoop/hbase/rest/RegionsResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.ResourceBase.java">org/apache/hadoop/hbase/rest/ResourceBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.ResourceConfig.java">org/apache/hadoop/hbase/rest/ResourceConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.ResultGenerator.java">org/apache/hadoop/hbase/rest/ResultGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.RootResource.java">org/apache/hadoop/hbase/rest/RootResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.RowResource.java">org/apache/hadoop/hbase/rest/RowResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>44</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.RowResultGenerator.java">org/apache/hadoop/hbase/rest/RowResultGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.RowSpec.java">org/apache/hadoop/hbase/rest/RowSpec.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>32</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.ScannerResource.java">org/apache/hadoop/hbase/rest/ScannerResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.ScannerResultGenerator.java">org/apache/hadoop/hbase/rest/ScannerResultGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.SchemaResource.java">org/apache/hadoop/hbase/rest/SchemaResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.StorageClusterStatusResource.java">org/apache/hadoop/hbase/rest/StorageClusterStatusResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.StorageClusterVersionResource.java">org/apache/hadoop/hbase/rest/StorageClusterVersionResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.TableResource.java">org/apache/hadoop/hbase/rest/TableResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.TableScanResource.java">org/apache/hadoop/hbase/rest/TableScanResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.VersionResource.java">org/apache/hadoop/hbase/rest/VersionResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.client.Client.java">org/apache/hadoop/hbase/rest/client/Client.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>28</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.client.RemoteAdmin.java">org/apache/hadoop/hbase/rest/client/RemoteAdmin.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>107</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.client.RemoteHTable.java">org/apache/hadoop/hbase/rest/client/RemoteHTable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>107</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.client.Response.java">org/apache/hadoop/hbase/rest/client/Response.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.filter.GZIPRequestStream.java">org/apache/hadoop/hbase/rest/filter/GZIPRequestStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.filter.GZIPResponseStream.java">org/apache/hadoop/hbase/rest/filter/GZIPResponseStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.filter.GzipFilter.java">org/apache/hadoop/hbase/rest/filter/GzipFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.filter.RestCsrfPreventionFilter.java">org/apache/hadoop/hbase/rest/filter/RestCsrfPreventionFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.model.CellModel.java">org/apache/hadoop/hbase/rest/model/CellModel.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.model.CellSetModel.java">org/apache/hadoop/hbase/rest/model/CellSetModel.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.model.ColumnSchemaModel.java">org/apache/hadoop/hbase/rest/model/ColumnSchemaModel.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.rest.model.NamespacesInstanceModel.java">org/apache/hadoop/hbase/rest/model/NamespacesInstanceModel.java</a></td>
 <td>0</t

<TRUNCATED>

[14/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueueKeyComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueueKeyComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueueKeyComparator.html
index 38cee64..d900251 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueueKeyComparator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueueKeyComparator.html
@@ -220,1065 +220,1075 @@
 <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>    final Procedure pollResult = rq.peek();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      removeFromRunQueue(fairq, rq);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      return null;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>    rq.poll();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    if (rq.isEmpty() || xlockReq) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      removeFromRunQueue(fairq, rq);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      // if the rq is in the fairq because of runnable child<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      // check if the next procedure is still a child.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      Procedure nextProc = rq.peek();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        removeFromRunQueue(fairq, rq);<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>    return pollResult;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">215</span>    if (pollResult == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      return null;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      removeFromRunQueue(fairq, rq);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      return null;<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>    rq.poll();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    if (rq.isEmpty() || xlockReq) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      removeFromRunQueue(fairq, rq);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      // if the rq is in the fairq because of runnable child<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      // check if the next procedure is still a child.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      Procedure nextProc = rq.peek();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        removeFromRunQueue(fairq, rq);<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      String resourceName, LockAndQueue queue) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    LockInfo info = new LockInfo();<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    info.setResourceType(resourceType);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    info.setResourceName(resourceName);<a name="line.243"></a>
+<span class="sourceLineNo">238</span>    return pollResult;<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      String resourceName, LockAndQueue queue) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    LockInfo info = new LockInfo();<a name="line.243"></a>
 <span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    if (queue.hasExclusiveLock()) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.246"></a>
+<span class="sourceLineNo">245</span>    info.setResourceType(resourceType);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    info.setResourceName(resourceName);<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      info.setSharedLockCount(queue.getSharedLockCount());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        continue;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.263"></a>
+<span class="sourceLineNo">248</span>    if (queue.hasExclusiveLock()) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      info.setSharedLockCount(queue.getSharedLockCount());<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>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        continue;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
 <span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>      switch (lockProcedure.getType()) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      case EXCLUSIVE:<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        break;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      case SHARED:<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.270"></a>
+<span class="sourceLineNo">265</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>      switch (lockProcedure.getType()) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      case EXCLUSIVE:<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.270"></a>
 <span class="sourceLineNo">271</span>        break;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.275"></a>
+<span class="sourceLineNo">272</span>      case SHARED:<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        break;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
 <span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">277</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.278"></a>
 <span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return info;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">280</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
 <span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Override<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    schedLock();<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.288"></a>
+<span class="sourceLineNo">283</span>    return info;<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>  @Override<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    schedLock();<a name="line.288"></a>
 <span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          .entrySet()) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        String serverName = entry.getKey().getServerName();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        LockAndQueue queue = entry.getValue();<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>        if (queue.isLocked()) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              serverName, queue);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          lockInfos.add(lockInfo);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          .entrySet()) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        String namespaceName = entry.getKey();<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        LockAndQueue queue = entry.getValue();<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>        if (queue.isLocked()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              namespaceName, queue);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>          lockInfos.add(lockInfo);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        }<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.314"></a>
-<span class="sourceLineNo">315</span>          .entrySet()) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        String tableName = entry.getKey().getNameAsString();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        LockAndQueue queue = entry.getValue();<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>        if (queue.isLocked()) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.320"></a>
-<span class="sourceLineNo">321</span>              tableName, queue);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          lockInfos.add(lockInfo);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        String regionName = entry.getKey();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        LockAndQueue queue = entry.getValue();<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>        if (queue.isLocked()) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              regionName, queue);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          lockInfos.add(lockInfo);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      }<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>      return lockInfos;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    } finally {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      schedUnlock();<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>  @Override<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    LockAndQueue queue = null;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    schedLock();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    try {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      switch (resourceType) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        case SERVER:<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.350"></a>
-<span class="sourceLineNo">351</span>          break;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        case NAMESPACE:<a name="line.352"></a>
-<span class="sourceLineNo">353</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.353"></a>
+<span class="sourceLineNo">290</span>    try {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          .entrySet()) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        String serverName = entry.getKey().getServerName();<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        LockAndQueue queue = entry.getValue();<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>        if (queue.isLocked()) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              serverName, queue);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          lockInfos.add(lockInfo);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          .entrySet()) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        String namespaceName = entry.getKey();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        LockAndQueue queue = entry.getValue();<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>        if (queue.isLocked()) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.311"></a>
+<span class="sourceLineNo">312</span>              namespaceName, queue);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>          lockInfos.add(lockInfo);<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>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.317"></a>
+<span class="sourceLineNo">318</span>          .entrySet()) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        String tableName = entry.getKey().getNameAsString();<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        LockAndQueue queue = entry.getValue();<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>        if (queue.isLocked()) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.323"></a>
+<span class="sourceLineNo">324</span>              tableName, queue);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>          lockInfos.add(lockInfo);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        String regionName = entry.getKey();<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        LockAndQueue queue = entry.getValue();<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>        if (queue.isLocked()) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.334"></a>
+<span class="sourceLineNo">335</span>              regionName, queue);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          lockInfos.add(lockInfo);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return lockInfos;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    } finally {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      schedUnlock();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    LockAndQueue queue = null;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    schedLock();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    try {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      switch (resourceType) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        case SERVER:<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.353"></a>
 <span class="sourceLineNo">354</span>          break;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        case TABLE:<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.356"></a>
+<span class="sourceLineNo">355</span>        case NAMESPACE:<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.356"></a>
 <span class="sourceLineNo">357</span>          break;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        case REGION:<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          queue = locking.regionLocks.get(resourceName);<a name="line.359"></a>
+<span class="sourceLineNo">358</span>        case TABLE:<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.359"></a>
 <span class="sourceLineNo">360</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    } finally {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      schedUnlock();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public void clear() {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    schedLock();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    try {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      clearQueue();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      locking.clear();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    } finally {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      schedUnlock();<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>  protected void clearQueue() {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    // Remove Servers<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      serverBuckets[i] = null;<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>    // Remove Tables<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    tableMap = null;<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
+<span class="sourceLineNo">361</span>        case REGION:<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          queue = locking.regionLocks.get(resourceName);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    } finally {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      schedUnlock();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  @Override<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  public void clear() {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    schedLock();<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    try {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      clearQueue();<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      locking.clear();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    } finally {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      schedUnlock();<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><a name="line.382"></a>
+<span class="sourceLineNo">383</span>  protected void clearQueue() {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // Remove Servers<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      serverBuckets[i] = null;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>    // Remove Tables<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    tableMap = null;<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    while (treeMap != null) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Override<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  protected int queueSize() {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    int count = 0;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // Server queues<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      while (serverIter.hasNext()) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        count += serverIter.next().size();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>    // Table queues<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    while (tableIter.hasNext()) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      count += tableIter.next().size();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    return count;<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 completionCleanup(final Procedure proc) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    if (proc instanceof TableProcedureInterface) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      boolean tableDeleted;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (proc.hasException()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          // create failed because the table already exist<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        } else {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          // the operation failed because the table does not exist<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      } else {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        // the table was deleted<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if (tableDeleted) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        return;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    } else {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      return;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      fairq.add(queue);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      fairq.remove(queue);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>  // ============================================================================<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  //  Table Queue Lookup Helpers<a name="line.466"></a>
-<span class="sourceLineNo">467</span>  // ============================================================================<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    if (node != null) return node;<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    return node;<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private void removeTableQueue(TableName tableName) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    locking.removeTableLock(tableName);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  }<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    return proc instanceof TableProcedureInterface;<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>  private static TableName getTableName(Procedure proc) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  }<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>  //  Server Queue Lookup Helpers<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  // ============================================================================<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    if (node != null) return node;<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    return node;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  }<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    return Math.abs(hashCode) % buckets.length;<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>  private static boolean isServerProcedure(Procedure proc) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  // ============================================================================<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  //  Table and Server Queue Implementation<a name="line.518"></a>
-<span class="sourceLineNo">519</span>  // ============================================================================<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    @Override<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      return node.compareKey((ServerName)key);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      super(serverName, serverLock);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>    @Override<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      switch (spi.getServerOperationType()) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        case CRASH_HANDLER:<a name="line.536"></a>
-<span class="sourceLineNo">537</span>          return true;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        default:<a name="line.538"></a>
-<span class="sourceLineNo">539</span>          break;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      }<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    @Override<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    public int compareKey(TableQueue node, Object key) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      return node.compareKey((TableName)key);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    }<a name="line.549"></a>
-<span class="sourceLineNo">550</span>  }<a name="line.550"></a>
-<span class="sourceLineNo">551</span><a name="line.551"></a>
-<span class="sourceLineNo">552</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    private final LockStatus namespaceLockStatus;<a name="line.553"></a>
+<span class="sourceLineNo">394</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    while (treeMap != null) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  @Override<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  protected int queueSize() {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    int count = 0;<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>    // Server queues<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      while (serverIter.hasNext()) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        count += serverIter.next().size();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>    // Table queues<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    while (tableIter.hasNext()) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      count += tableIter.next().size();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    return count;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  @Override<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  public void completionCleanup(final Procedure proc) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    if (proc instanceof TableProcedureInterface) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      boolean tableDeleted;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      if (proc.hasException()) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>          // create failed because the table already exist<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        } else {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          // the operation failed because the table does not exist<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      } else {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        // the table was deleted<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      }<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      if (tableDeleted) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        return;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      }<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } else {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      return;<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><a name="line.454"></a>
+<span class="sourceLineNo">455</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      fairq.add(queue);<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>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      fairq.remove(queue);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  }<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>  // ============================================================================<a name="line.468"></a>
+<span class="sourceLineNo">469</span>  //  Table Queue Lookup Helpers<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  // ============================================================================<a name="line.470"></a>
+<span class="sourceLineNo">471</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    if (node != null) return node;<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    return node;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  }<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>  private void removeTableQueue(TableName tableName) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    locking.removeTableLock(tableName);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span><a name="line.486"></a>
+<span class="sourceLineNo">487</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    return proc instanceof TableProcedureInterface;<a name="line.488"></a>
+<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>  private static TableName getTableName(Procedure proc) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  }<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>  // ============================================================================<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  //  Server Queue Lookup Helpers<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  // ============================================================================<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    if (node != null) return node;<a name="line.501"></a>
+<span class="sourceLineNo">502</span><a name="line.502"></a>
+<span class="sourceLineNo">503</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    return node;<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>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return Math.abs(hashCode) % buckets.length;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>  private static boolean isServerProcedure(Procedure proc) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
+<span class="sourceLineNo">519</span><a name="line.519"></a>
+<span class="sourceLineNo">520</span>  // ============================================================================<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  //  Table and Server Queue Implementation<a name="line.521"></a>
+<span class="sourceLineNo">522</span>  // ============================================================================<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    @Override<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      return node.compareKey((ServerName)key);<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>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      super(serverName, serverLock);<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>    @Override<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      switch (spi.getServerOperationType()) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        case CRASH_HANDLER:<a name="line.539"></a>
+<span class="sourceLineNo">540</span>          return true;<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        default:<a name="line.541"></a>
+<span class="sourceLineNo">542</span>          break;<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    @Override<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    public int compareKey(TableQueue node, Object key) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      return node.compareKey((TableName)key);<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><a name="line.554"></a>
-<span class="sourceLineNo">555</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        LockStatus namespaceLockStatus) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      super(tableName, priority, tableLock);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      this.namespaceLockStatus = namespaceLockStatus;<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>    @Override<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    public boolean isAvailable() {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      // we can't execute operation on this table<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>        return false;<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>      if (getLockStatus().hasExclusiveLock()) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        // if we have an exclusive lock already taken<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        // only child of the lock owner can be executed<a name="line.571"></a>
-<span class="sourceLineNo">572</span>        final Procedure nextProc = peek();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>      // no xlock<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return true;<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>    @Override<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
-<span class="sourceLineNo">585</span><a name="line.585"></a>
-<span class="sourceLineNo">586</span>  // ============================================================================<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  //  Table Locking Helpers<a name="line.587"></a>
-<span class="sourceLineNo">588</span>  // ============================================================================<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    switch (proc.getTableOperationType()) {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      case CREATE:<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      case DELETE:<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      case DISABLE:<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      case ENABLE:<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        return true;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      case EDIT:<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        // we allow concurrent edit on the NS table<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      case READ:<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        return false;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      // region operations are using the shared-lock on the table<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      // and then they will grab an xlock on the region.<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      case REGION_SPLIT:<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      case REGION_MERGE:<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      case REGION_ASSIGN:<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      case REGION_UNASSIGN:<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      case REGION_EDIT:<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      case REGION_GC:<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      case MERGED_REGIONS_GC:<a name="line.609"></a>
-<span class="sourceLineNo">610</span>        return false;<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      default:<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        break;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    }<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        proc.getTableOperationType());<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  /**<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * Get lock info for a resource of specified type and name and log details<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   */<a name="line.620"></a>
-<span class="sourceLineNo">621</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    if (!LOG.isDebugEnabled()) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      return;<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    if (lockInfo != null) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.628"></a>
-<span class="sourceLineNo">629</span>          lockInfo.getSharedLockCount();<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      if (proc != null) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      }<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      LOG.debug(msg);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    }<a name="line.636"></a>
-<span class="sourceLineNo">637</span>  }<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>  /**<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   * Suspend the procedure if the specified table is already locked.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.641"></a>
-<span class="sourceLineNo">642</span>   * @param procedure the procedure trying to acquire the lock<a name="line.642"></a>
-<span class="sourceLineNo">643</span>   * @param table Table to lock<a name="line.643"></a>
-<span class="sourceLineNo">644</span>   * @return true if the procedure has to wait for the table to be available<a name="line.644"></a>
-<span class="sourceLineNo">645</span>   */<a name="line.645"></a>
-<span class="sourceLineNo">646</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    schedLock();<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    try {<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      final String namespace = table.getNamespaceAsString();<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      if (!namespaceLock.trySharedLock()) {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>        waitProcedure(namespaceLock, procedure);<a name="line.653"></a>
-<span class="sourceLineNo">654</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        return true;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      if (!tableLock.tryExclusiveLock(procedure)) {<a name="line.657"></a>
-<span class="sourceLineNo">658</span>        namespaceLock.releaseSharedLock();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>        waitProcedure(tableLock, procedure);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.TABLE, table.getNameAsString());<a name="line.660"></a>
+<span class="sourceLineNo">555</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    private final LockStatus namespaceLockStatus;<a name="line.556"></a>
+<span class="sourceLineNo">557</span><a name="line.557"></a>
+<span class="sourceLineNo">558</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>        LockStatus namespaceLockStatus) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      super(tableName, priority, tableLock);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      this.namespaceLockStatus = namespaceLockStatus;<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    }<a name="line.562"></a>
+<span class="sourceLineNo">563</span><a name="line.563"></a>
+<span class="sourceLineNo">564</span>    @Override<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    public boolean isAvailable() {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      // we can't execute operation on this table<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.568"></a>
+<span class="sourceLineNo">569</span>        return false;<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      }<a name="line.570"></a>
+<span class="sourceLineNo">571</span><a name="line.571"></a>
+<span class="sourceLineNo">572</span>      if (getLockStatus().hasExclusiveLock()) {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>        // if we have an exclusive lock already taken<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        // only child of the lock owner can be executed<a name="line.574"></a>
+<span class="sourceLineNo">575</span>        final Procedure nextProc = peek();<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>      // no xlock<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      return true;<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
+<span class="sourceLineNo">582</span><a name="line.582"></a>
+<span class="sourceLineNo">583</span>    @Override<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    }<a name="line.586"></a>
+<span class="sourceLineNo">587</span>  }<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>  // ============================================================================<a name="line.589"></a>
+<span class="sourceLineNo">590</span>  //  Table Locking Helpers<a name="line.590"></a>
+<span class="sourceLineNo">591</span>  // ============================================================================<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  /**<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @param proc must not be null<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   */<a name="line.594"></a>
+<span class="sourceLineNo">595</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    switch (proc.getTableOperationType()) {<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      case CREATE:<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      case DELETE:<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      case DISABLE:<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      case ENABLE:<a name="line.600"></a>
+<span class="sourceLineNo">601</span>        return true;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      case EDIT:<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        // we allow concurrent edit on the NS table<a name="line.603"></a>
+<span class="sourceLineNo">604</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      case READ:<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        return false;<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      // region operations are using the shared-lock on the table<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      // and then they will grab an xlock on the region.<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      case REGION_SPLIT:<a name="line.609"></a>
+<span class="sourceLineNo">610</span>      case REGION_MERGE:<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      case REGION_ASSIGN:<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      case REGION_UNASSIGN:<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      case REGION_EDIT:<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      case REGION_GC:<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      case MERGED_REGIONS_GC:<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        return false;<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      default:<a name="line.617"></a>
+<span class="sourceLineNo">618</span>        break;<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    }<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.620"></a>
+<span class="sourceLineNo">621</span>        proc.getTableOperationType());<a name="line.621"></a>
+<span class="sourceLineNo">622</span>  }<a name="line.622"></a>
+<span class="sourceLineNo">623</span><a name="line.623"></a>
+<span class="sourceLineNo">624</span>  /**<a name="line.624"></a>
+<span class="sourceLineNo">625</span>   * Get lock info for a resource of specified type and name and log details<a name="line.625"></a>
+<span class="sourceLineNo">626</span>   */<a name="line.626"></a>
+<span class="sourceLineNo">627</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    if (!LOG.isDebugEnabled()) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>      return;<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>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    if (lockInfo != null) {<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.634"></a>
+<span class="sourceLineNo">635</span>          lockInfo.getSharedLockCount();<a name="line.635"></a>
+<span class="sourceLineNo">636</span><a name="line.636"></a>
+<span class="sourceLineNo">637</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.637"></a>
+<span class="sourceLineNo">638</span>      if (proc != null) {<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      }<a name="line.640"></a>
+<span class="sourceLineNo">641</span>      LOG.debug(msg);<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>  }<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   * Suspend the procedure if the specified table is already locked.<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.647"></a>
+<span class="sourceLineNo">648</span>   * @param procedure the procedure trying to acquire the lock<a name="line.648"></a>
+<span class="sourceLineNo">649</span>   * @param table Table to lock<a name="line.649"></a>
+<span class="sourceLineNo">650</span>   * @return true if the procedure has to wait for the table to be available<a name="line.650"></a>
+<span class="sourceLineNo">651</span>   */<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    schedLock();<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    try {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>      final String namespace = table.getNamespaceAsString();<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      if (!namespaceLock.trySharedLock()) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>        waitProcedure(namespaceLock, procedure);<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.660"></a>
 <span class="sourceLineNo">661</span>        return true;<a name="line.661"></a>
 <span class="sourceLineNo">662</span>      }<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      removeFromRunQueue(tableRunQueue, getTableQueue(table));<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      return false;<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    } finally {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      schedUnlock();<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  }<a name="line.668"></a>
-<span class="sourceLineNo">669</span><a name="line.669"></a>
-<span class="sourceLineNo">670</span>  /**<a name="line.670"></a>
-<span class="sourceLineNo">671</span>   * Wake the procedures waiting for the specified table<a name="line.671"></a>
-<span class="sourceLineNo">672</span>   * @param procedure the procedure releasing the lock<a name="line.672"></a>
-<span class="sourceLineNo">673</span>   * @param table the name of the table that has the exclusive lock<a name="line.673"></a>
-<span class="sourceLineNo">674</span>   */<a name="line.674"></a>
-<span class="sourceLineNo">675</span>  public void wakeTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    schedLock();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    try {<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(table.getNamespaceAsString());<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      int waitingCount = 0;<a name="line.680"></a>
-<span class="sourceLineNo">681</span><a name="line.681"></a>
-<span class="sourceLineNo">682</span>      if (!tableLock.hasParentLock(procedure)) {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>        tableLock.releaseExclusiveLock(procedure);<a name="line.683"></a>
-<span class="sourceLineNo">684</span>        waitingCount += wakeWaitingProcedures(tableLock);<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      }<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      if (namespaceLock.releaseSharedLock()) {<a name="line.686"></a>
-<span class="sourceLineNo">687</span>        waitingCount += wakeWaitingProcedures(namespaceLock);<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      }<a name="line.688"></a>
-<span class="sourceLineNo">689</span>      addToRunQueue(tableRunQueue, getTableQueue(table));<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      wakePollIfNeeded(waitingCount);<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    } finally {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>      schedUnlock();<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><a name="line.695"></a>
-<span class="sourceLineNo">696</span>  /**<a name="line.696"></a>
-<span class="sourceLineNo">697</span>   * Suspend the procedure if the specified table is already locked.<a name="line.697"></a>
-<span class="sourceLineNo">698</span>   * other "read" operations in the table-queue may be executed concurrently,<a name="line.698"></a>
-<span class="sourceLineNo">699</span>   * @param procedure the procedure trying to acquire the lock<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   * @param table Table to lock<a name="line.700"></a>
-<span class="sourceLineNo">701</span>   * @return true if the procedure has to wait for the table to be available<a name="line.701"></a>
-<span class="sourceLineNo">702</span>   */<a name="line.702"></a>
-<span class="sourceLineNo">703</span>  public boolean waitTableSharedLock(final Procedure procedure, final TableName table) {<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    return waitTableQueueSharedLock(procedure, table) == null;<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>  private TableQueue waitTableQueueSharedLock(final Procedure procedure, final TableName table) {<a name="line.707"></a>
-<span class="sourceLineNo">708</sp

<TRUNCATED>

[03/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html
index 002995b..5a0af9d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html
@@ -100,436 +100,433 @@
 <span class="sourceLineNo">092</span>        public Void call() throws Exception {<a name="line.92"></a>
 <span class="sourceLineNo">093</span>          final AssignmentManager am = env.getAssignmentManager();<a name="line.93"></a>
 <span class="sourceLineNo">094</span>          am.start();<a name="line.94"></a>
-<span class="sourceLineNo">095</span>          if (true) {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>            MasterMetaBootstrap metaBootstrap = new MasterMetaBootstrap(master,<a name="line.96"></a>
-<span class="sourceLineNo">097</span>                TaskMonitor.get().createStatus("meta"));<a name="line.97"></a>
-<span class="sourceLineNo">098</span>            metaBootstrap.splitMetaLogsBeforeAssignment();<a name="line.98"></a>
-<span class="sourceLineNo">099</span>            metaBootstrap.assignMeta();<a name="line.99"></a>
-<span class="sourceLineNo">100</span>            metaBootstrap.processDeadServers();<a name="line.100"></a>
-<span class="sourceLineNo">101</span>          }<a name="line.101"></a>
-<span class="sourceLineNo">102</span>          am.joinCluster();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>          master.setInitialized(true);<a name="line.103"></a>
-<span class="sourceLineNo">104</span>          return null;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        }<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      });<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  }<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  // ==========================================================================<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  //  Master failover utils<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  // ==========================================================================<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public static void masterFailover(final HBaseTestingUtility testUtil)<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      throws Exception {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    MiniHBaseCluster cluster = testUtil.getMiniHBaseCluster();<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>    // Kill the master<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    HMaster oldMaster = cluster.getMaster();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    cluster.killMaster(cluster.getMaster().getServerName());<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>    // Wait the secondary<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    waitBackupMaster(testUtil, oldMaster);<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>  public static void waitBackupMaster(final HBaseTestingUtility testUtil,<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      final HMaster oldMaster) throws Exception {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    MiniHBaseCluster cluster = testUtil.getMiniHBaseCluster();<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>    HMaster newMaster = cluster.getMaster();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    while (newMaster == null || newMaster == oldMaster) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      Thread.sleep(250);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      newMaster = cluster.getMaster();<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>    while (!(newMaster.isActiveMaster() &amp;&amp; newMaster.isInitialized())) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      Thread.sleep(250);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  // ==========================================================================<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  //  Table Helpers<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  // ==========================================================================<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  public static HTableDescriptor createHTD(final TableName tableName, final String... family) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    for (int i = 0; i &lt; family.length; ++i) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      htd.addFamily(new HColumnDescriptor(family[i]));<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    return htd;<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>  public static HRegionInfo[] createTable(final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec,<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      final TableName tableName, final byte[][] splitKeys, String... family) throws IOException {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    HTableDescriptor htd = createHTD(tableName, family);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    HRegionInfo[] regions = ModifyRegionUtils.createHRegionInfos(htd, splitKeys);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    long procId = ProcedureTestingUtility.submitAndWait(procExec,<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      new CreateTableProcedure(procExec.getEnvironment(), htd, regions));<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    ProcedureTestingUtility.assertProcNotFailed(procExec.getResult(procId));<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    return regions;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  public static void validateTableCreation(final HMaster master, final TableName tableName,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      final HRegionInfo[] regions, String... family) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    validateTableCreation(master, tableName, regions, true, family);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>  public static void validateTableCreation(final HMaster master, final TableName tableName,<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      final HRegionInfo[] regions, boolean hasFamilyDirs, String... family) throws IOException {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // check filesystem<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    final FileSystem fs = master.getMasterFileSystem().getFileSystem();<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    final Path tableDir = FSUtils.getTableDir(master.getMasterFileSystem().getRootDir(), tableName);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    assertTrue(fs.exists(tableDir));<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    FSUtils.logFileSystemState(fs, tableDir, LOG);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    List&lt;Path&gt; allRegionDirs = FSUtils.getRegionDirs(fs, tableDir);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    for (int i = 0; i &lt; regions.length; ++i) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      Path regionDir = new Path(tableDir, regions[i].getEncodedName());<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      assertTrue(regions[i] + " region dir does not exist", fs.exists(regionDir));<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      assertTrue(allRegionDirs.remove(regionDir));<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      List&lt;Path&gt; allFamilyDirs = FSUtils.getFamilyDirs(fs, regionDir);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      for (int j = 0; j &lt; family.length; ++j) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        final Path familyDir = new Path(regionDir, family[j]);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        if (hasFamilyDirs) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>          assertTrue(family[j] + " family dir does not exist", fs.exists(familyDir));<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          assertTrue(allFamilyDirs.remove(familyDir));<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        } else {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>          // TODO: WARN: Modify Table/Families does not create a family dir<a name="line.184"></a>
-<span class="sourceLineNo">185</span>          if (!fs.exists(familyDir)) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>            LOG.warn(family[j] + " family dir does not exist");<a name="line.186"></a>
-<span class="sourceLineNo">187</span>          }<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          allFamilyDirs.remove(familyDir);<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>      assertTrue("found extraneous families: " + allFamilyDirs, allFamilyDirs.isEmpty());<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    }<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    assertTrue("found extraneous regions: " + allRegionDirs, allRegionDirs.isEmpty());<a name="line.193"></a>
-<span class="sourceLineNo">194</span><a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // check meta<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    assertTrue(MetaTableAccessor.tableExists(master.getConnection(), tableName));<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    assertEquals(regions.length, countMetaRegions(master, tableName));<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>    // check htd<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    HTableDescriptor htd = master.getTableDescriptors().get(tableName);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    assertTrue("table descriptor not found", htd != null);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    for (int i = 0; i &lt; family.length; ++i) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      assertTrue("family not found " + family[i], htd.getFamily(Bytes.toBytes(family[i])) != null);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    assertEquals(family.length, htd.getFamilies().size());<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  }<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>  public static void validateTableDeletion(<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      final HMaster master, final TableName tableName) throws IOException {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    // check filesystem<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    final FileSystem fs = master.getMasterFileSystem().getFileSystem();<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    final Path tableDir = FSUtils.getTableDir(master.getMasterFileSystem().getRootDir(), tableName);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    assertFalse(fs.exists(tableDir));<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>    // check meta<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    assertFalse(MetaTableAccessor.tableExists(master.getConnection(), tableName));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    assertEquals(0, countMetaRegions(master, tableName));<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // check htd<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    assertTrue("found htd of deleted table",<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      master.getTableDescriptors().get(tableName) == null);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  private static int countMetaRegions(final HMaster master, final TableName tableName)<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      throws IOException {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    final AtomicInteger actualRegCount = new AtomicInteger(0);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    final MetaTableAccessor.Visitor visitor = new MetaTableAccessor.Visitor() {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      @Override<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      public boolean visit(Result rowResult) throws IOException {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        RegionLocations list = MetaTableAccessor.getRegionLocations(rowResult);<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        if (list == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>          LOG.warn("No serialized HRegionInfo in " + rowResult);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          return true;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        HRegionLocation l = list.getRegionLocation();<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        if (l == null) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          return true;<a name="line.237"></a>
+<span class="sourceLineNo">095</span>          MasterMetaBootstrap metaBootstrap = new MasterMetaBootstrap(master,<a name="line.95"></a>
+<span class="sourceLineNo">096</span>              TaskMonitor.get().createStatus("meta"));<a name="line.96"></a>
+<span class="sourceLineNo">097</span>          metaBootstrap.recoverMeta();<a name="line.97"></a>
+<span class="sourceLineNo">098</span>          metaBootstrap.processDeadServers();<a name="line.98"></a>
+<span class="sourceLineNo">099</span>          am.joinCluster();<a name="line.99"></a>
+<span class="sourceLineNo">100</span>          master.setInitialized(true);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>          return null;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>        }<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      });<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>  // ==========================================================================<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  //  Master failover utils<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  // ==========================================================================<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  public static void masterFailover(final HBaseTestingUtility testUtil)<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      throws Exception {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    MiniHBaseCluster cluster = testUtil.getMiniHBaseCluster();<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>    // Kill the master<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    HMaster oldMaster = cluster.getMaster();<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    cluster.killMaster(cluster.getMaster().getServerName());<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>    // Wait the secondary<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    waitBackupMaster(testUtil, oldMaster);<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 waitBackupMaster(final HBaseTestingUtility testUtil,<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      final HMaster oldMaster) throws Exception {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    MiniHBaseCluster cluster = testUtil.getMiniHBaseCluster();<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>    HMaster newMaster = cluster.getMaster();<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    while (newMaster == null || newMaster == oldMaster) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      Thread.sleep(250);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      newMaster = cluster.getMaster();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>    while (!(newMaster.isActiveMaster() &amp;&amp; newMaster.isInitialized())) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      Thread.sleep(250);<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><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  // ==========================================================================<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  //  Table Helpers<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  // ==========================================================================<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  public static HTableDescriptor createHTD(final TableName tableName, final String... family) {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    for (int i = 0; i &lt; family.length; ++i) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      htd.addFamily(new HColumnDescriptor(family[i]));<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    }<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    return htd;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  public static HRegionInfo[] createTable(final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec,<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      final TableName tableName, final byte[][] splitKeys, String... family) throws IOException {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    HTableDescriptor htd = createHTD(tableName, family);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    HRegionInfo[] regions = ModifyRegionUtils.createHRegionInfos(htd, splitKeys);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    long procId = ProcedureTestingUtility.submitAndWait(procExec,<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      new CreateTableProcedure(procExec.getEnvironment(), htd, regions));<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    ProcedureTestingUtility.assertProcNotFailed(procExec.getResult(procId));<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    return regions;<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>  public static void validateTableCreation(final HMaster master, final TableName tableName,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      final HRegionInfo[] regions, String... family) throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    validateTableCreation(master, tableName, regions, true, family);<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>  public static void validateTableCreation(final HMaster master, final TableName tableName,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      final HRegionInfo[] regions, boolean hasFamilyDirs, String... family) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    // check filesystem<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    final FileSystem fs = master.getMasterFileSystem().getFileSystem();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    final Path tableDir = FSUtils.getTableDir(master.getMasterFileSystem().getRootDir(), tableName);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    assertTrue(fs.exists(tableDir));<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    FSUtils.logFileSystemState(fs, tableDir, LOG);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    List&lt;Path&gt; allRegionDirs = FSUtils.getRegionDirs(fs, tableDir);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    for (int i = 0; i &lt; regions.length; ++i) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      Path regionDir = new Path(tableDir, regions[i].getEncodedName());<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      assertTrue(regions[i] + " region dir does not exist", fs.exists(regionDir));<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      assertTrue(allRegionDirs.remove(regionDir));<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      List&lt;Path&gt; allFamilyDirs = FSUtils.getFamilyDirs(fs, regionDir);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      for (int j = 0; j &lt; family.length; ++j) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        final Path familyDir = new Path(regionDir, family[j]);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        if (hasFamilyDirs) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>          assertTrue(family[j] + " family dir does not exist", fs.exists(familyDir));<a name="line.178"></a>
+<span class="sourceLineNo">179</span>          assertTrue(allFamilyDirs.remove(familyDir));<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        } else {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          // TODO: WARN: Modify Table/Families does not create a family dir<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          if (!fs.exists(familyDir)) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>            LOG.warn(family[j] + " family dir does not exist");<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          allFamilyDirs.remove(familyDir);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      assertTrue("found extraneous families: " + allFamilyDirs, allFamilyDirs.isEmpty());<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    assertTrue("found extraneous regions: " + allRegionDirs, allRegionDirs.isEmpty());<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // check meta<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    assertTrue(MetaTableAccessor.tableExists(master.getConnection(), tableName));<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    assertEquals(regions.length, countMetaRegions(master, tableName));<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // check htd<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    HTableDescriptor htd = master.getTableDescriptors().get(tableName);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    assertTrue("table descriptor not found", htd != null);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    for (int i = 0; i &lt; family.length; ++i) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      assertTrue("family not found " + family[i], htd.getFamily(Bytes.toBytes(family[i])) != null);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    assertEquals(family.length, htd.getFamilies().size());<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>  public static void validateTableDeletion(<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      final HMaster master, final TableName tableName) throws IOException {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    // check filesystem<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    final FileSystem fs = master.getMasterFileSystem().getFileSystem();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    final Path tableDir = FSUtils.getTableDir(master.getMasterFileSystem().getRootDir(), tableName);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    assertFalse(fs.exists(tableDir));<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>    // check meta<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    assertFalse(MetaTableAccessor.tableExists(master.getConnection(), tableName));<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    assertEquals(0, countMetaRegions(master, tableName));<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>    // check htd<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    assertTrue("found htd of deleted table",<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      master.getTableDescriptors().get(tableName) == null);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>  }<a name="line.219"></a>
+<span class="sourceLineNo">220</span><a name="line.220"></a>
+<span class="sourceLineNo">221</span>  private static int countMetaRegions(final HMaster master, final TableName tableName)<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      throws IOException {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    final AtomicInteger actualRegCount = new AtomicInteger(0);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    final MetaTableAccessor.Visitor visitor = new MetaTableAccessor.Visitor() {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      @Override<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      public boolean visit(Result rowResult) throws IOException {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        RegionLocations list = MetaTableAccessor.getRegionLocations(rowResult);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        if (list == null) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>          LOG.warn("No serialized HRegionInfo in " + rowResult);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>          return true;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        }<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        HRegionLocation l = list.getRegionLocation();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        if (l == null) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>          return true;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        }<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        if (!l.getRegionInfo().getTable().equals(tableName)) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          return false;<a name="line.237"></a>
 <span class="sourceLineNo">238</span>        }<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        if (!l.getRegionInfo().getTable().equals(tableName)) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          return false;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        }<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        if (l.getRegionInfo().isOffline() || l.getRegionInfo().isSplit()) return true;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        HRegionLocation[] locations = list.getRegionLocations();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        for (HRegionLocation location : locations) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          if (location == null) continue;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          ServerName serverName = location.getServerName();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          // Make sure that regions are assigned to server<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          if (serverName != null &amp;&amp; serverName.getHostAndPort() != null) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>            actualRegCount.incrementAndGet();<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>        return true;<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>    MetaTableAccessor.scanMetaForTableRegions(master.getConnection(), visitor, tableName);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    return actualRegCount.get();<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  }<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public static void validateTableIsEnabled(final HMaster master, final TableName tableName)<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      throws IOException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    TableStateManager tsm = master.getTableStateManager();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    assertTrue(tsm.getTableState(tableName).equals(TableState.State.ENABLED));<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  }<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public static void validateTableIsDisabled(final HMaster master, final TableName tableName)<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      throws IOException {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    TableStateManager tsm = master.getTableStateManager();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    assertTrue(tsm.getTableState(tableName).equals(TableState.State.DISABLED));<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>  public static void validateColumnFamilyAddition(final HMaster master, final TableName tableName,<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      final String family) throws IOException {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    HTableDescriptor htd = master.getTableDescriptors().get(tableName);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    assertTrue(htd != null);<a name="line.274"></a>
+<span class="sourceLineNo">239</span>        if (l.getRegionInfo().isOffline() || l.getRegionInfo().isSplit()) return true;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        HRegionLocation[] locations = list.getRegionLocations();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        for (HRegionLocation location : locations) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          if (location == null) continue;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          ServerName serverName = location.getServerName();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          // Make sure that regions are assigned to server<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          if (serverName != null &amp;&amp; serverName.getHostAndPort() != null) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>            actualRegCount.incrementAndGet();<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          }<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        return true;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    };<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    MetaTableAccessor.scanMetaForTableRegions(master.getConnection(), visitor, tableName);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    return actualRegCount.get();<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>  public static void validateTableIsEnabled(final HMaster master, final TableName tableName)<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      throws IOException {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    TableStateManager tsm = master.getTableStateManager();<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    assertTrue(tsm.getTableState(tableName).equals(TableState.State.ENABLED));<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>  public static void validateTableIsDisabled(final HMaster master, final TableName tableName)<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      throws IOException {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    TableStateManager tsm = master.getTableStateManager();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    assertTrue(tsm.getTableState(tableName).equals(TableState.State.DISABLED));<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  }<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>  public static void validateColumnFamilyAddition(final HMaster master, final TableName tableName,<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      final String family) throws IOException {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    HTableDescriptor htd = master.getTableDescriptors().get(tableName);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    assertTrue(htd != null);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    assertTrue(htd.hasFamily(family.getBytes()));<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>    assertTrue(htd.hasFamily(family.getBytes()));<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>  public static void validateColumnFamilyDeletion(final HMaster master, final TableName tableName,<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      final String family) throws IOException {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    // verify htd<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    HTableDescriptor htd = master.getTableDescriptors().get(tableName);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    assertTrue(htd != null);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    assertFalse(htd.hasFamily(family.getBytes()));<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    // verify fs<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    final FileSystem fs = master.getMasterFileSystem().getFileSystem();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    final Path tableDir = FSUtils.getTableDir(master.getMasterFileSystem().getRootDir(), tableName);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    for (Path regionDir: FSUtils.getRegionDirs(fs, tableDir)) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      final Path familyDir = new Path(regionDir, family);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      assertFalse(family + " family dir should not exist", fs.exists(familyDir));<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public static void validateColumnFamilyModification(final HMaster master,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      final TableName tableName, final String family, HColumnDescriptor columnDescriptor)<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      throws IOException {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    HTableDescriptor htd = master.getTableDescriptors().get(tableName);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    assertTrue(htd != null);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    HColumnDescriptor hcfd = htd.getFamily(family.getBytes());<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    assertTrue(hcfd.equals(columnDescriptor));<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  public static void loadData(final Connection connection, final TableName tableName,<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      int rows, final byte[][] splitKeys,  final String... sfamilies) throws IOException {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    byte[][] families = new byte[sfamilies.length][];<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    for (int i = 0; i &lt; families.length; ++i) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      families[i] = Bytes.toBytes(sfamilies[i]);<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>    BufferedMutator mutator = connection.getBufferedMutator(tableName);<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>    // Ensure one row per region<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    assertTrue(rows &gt;= splitKeys.length);<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    for (byte[] k: splitKeys) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      byte[] value = Bytes.add(Bytes.toBytes(System.currentTimeMillis()), k);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      byte[] key = Bytes.add(k, Bytes.toBytes(MD5Hash.getMD5AsHex(value)));<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      mutator.mutate(createPut(families, key, value));<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      rows--;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    }<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>    // Add other extra rows. more rows, more files<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    while (rows-- &gt; 0) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      byte[] value = Bytes.add(Bytes.toBytes(System.currentTimeMillis()), Bytes.toBytes(rows));<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      byte[] key = Bytes.toBytes(MD5Hash.getMD5AsHex(value));<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      mutator.mutate(createPut(families, key, value));<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    mutator.flush();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  }<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private static Put createPut(final byte[][] families, final byte[] key, final byte[] value) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    byte[] q = Bytes.toBytes("q");<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    Put put = new Put(key);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    put.setDurability(Durability.SKIP_WAL);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    for (byte[] family: families) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      put.addColumn(family, q, value);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    return put;<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>  //  Procedure Helpers<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  // ==========================================================================<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  public static long generateNonceGroup(final HMaster master) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    return master.getClusterConnection().getNonceGenerator().getNonceGroup();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public static long generateNonce(final HMaster master) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return master.getClusterConnection().getNonceGenerator().newNonce();<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /**<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * Run through all procedure flow states TWICE while also restarting procedure executor at each<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * step; i.e force a reread of procedure store.<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   *<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   *&lt;p&gt;It does<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * &lt;ol&gt;&lt;li&gt;Execute step N - kill the executor before store update<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * &lt;li&gt;Restart executor/store<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   * &lt;li&gt;Execute step N - and then save to store<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   * &lt;/ol&gt;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   *<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   *&lt;p&gt;This is a good test for finding state that needs persisting and steps that are not<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * idempotent. Use this version of the test when a procedure executes all flow steps from start to<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * finish.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * @see #testRecoveryAndDoubleExecution(ProcedureExecutor, long)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private static void testRecoveryAndDoubleExecution(<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec, final long procId,<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      final int numSteps, final boolean expectExecRunning) throws Exception {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    assertEquals(false, procExec.isRunning());<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>    // Restart the executor and execute the step twice<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    //   execute step N - kill before store update<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    //   restart executor/store<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    //   execute step N - save on store<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    for (int i = 0; i &lt; numSteps; ++i) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      LOG.info("Restart " + i + " exec state=" + procExec.getProcedure(procId));<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      ProcedureTestingUtility.assertProcNotYetCompleted(procExec, procId);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      restartMasterProcedureExecutor(procExec);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
+<span class="sourceLineNo">276</span>  public static void validateColumnFamilyDeletion(final HMaster master, final TableName tableName,<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      final String family) throws IOException {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    // verify htd<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    HTableDescriptor htd = master.getTableDescriptors().get(tableName);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    assertTrue(htd != null);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    assertFalse(htd.hasFamily(family.getBytes()));<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    // verify fs<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    final FileSystem fs = master.getMasterFileSystem().getFileSystem();<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    final Path tableDir = FSUtils.getTableDir(master.getMasterFileSystem().getRootDir(), tableName);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    for (Path regionDir: FSUtils.getRegionDirs(fs, tableDir)) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      final Path familyDir = new Path(regionDir, family);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      assertFalse(family + " family dir should not exist", fs.exists(familyDir));<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    }<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  }<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>  public static void validateColumnFamilyModification(final HMaster master,<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      final TableName tableName, final String family, HColumnDescriptor columnDescriptor)<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      throws IOException {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    HTableDescriptor htd = master.getTableDescriptors().get(tableName);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    assertTrue(htd != null);<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>    HColumnDescriptor hcfd = htd.getFamily(family.getBytes());<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    assertTrue(hcfd.equals(columnDescriptor));<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>  public static void loadData(final Connection connection, final TableName tableName,<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      int rows, final byte[][] splitKeys,  final String... sfamilies) throws IOException {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    byte[][] families = new byte[sfamilies.length][];<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    for (int i = 0; i &lt; families.length; ++i) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      families[i] = Bytes.toBytes(sfamilies[i]);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>    BufferedMutator mutator = connection.getBufferedMutator(tableName);<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    // Ensure one row per region<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    assertTrue(rows &gt;= splitKeys.length);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    for (byte[] k: splitKeys) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      byte[] value = Bytes.add(Bytes.toBytes(System.currentTimeMillis()), k);<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      byte[] key = Bytes.add(k, Bytes.toBytes(MD5Hash.getMD5AsHex(value)));<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      mutator.mutate(createPut(families, key, value));<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      rows--;<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>    // Add other extra rows. more rows, more files<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    while (rows-- &gt; 0) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      byte[] value = Bytes.add(Bytes.toBytes(System.currentTimeMillis()), Bytes.toBytes(rows));<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      byte[] key = Bytes.toBytes(MD5Hash.getMD5AsHex(value));<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      mutator.mutate(createPut(families, key, value));<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    mutator.flush();<a name="line.326"></a>
+<span class="sourceLineNo">327</span>  }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>  private static Put createPut(final byte[][] families, final byte[] key, final byte[] value) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    byte[] q = Bytes.toBytes("q");<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    Put put = new Put(key);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    put.setDurability(Durability.SKIP_WAL);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    for (byte[] family: families) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      put.addColumn(family, q, value);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    return put;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  // ==========================================================================<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  //  Procedure Helpers<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  // ==========================================================================<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  public static long generateNonceGroup(final HMaster master) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    return master.getClusterConnection().getNonceGenerator().getNonceGroup();<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>  public static long generateNonce(final HMaster master) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return master.getClusterConnection().getNonceGenerator().newNonce();<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  /**<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   * Run through all procedure flow states TWICE while also restarting procedure executor at each<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   * step; i.e force a reread of procedure store.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   *<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   *&lt;p&gt;It does<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * &lt;ol&gt;&lt;li&gt;Execute step N - kill the executor before store update<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * &lt;li&gt;Restart executor/store<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * &lt;li&gt;Execute step N - and then save to store<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   * &lt;/ol&gt;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   *<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   *&lt;p&gt;This is a good test for finding state that needs persisting and steps that are not<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   * idempotent. Use this version of the test when a procedure executes all flow steps from start to<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   * finish.<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   * @see #testRecoveryAndDoubleExecution(ProcedureExecutor, long)<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   */<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  private static void testRecoveryAndDoubleExecution(<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec, final long procId,<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      final int numSteps, final boolean expectExecRunning) throws Exception {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    assertEquals(false, procExec.isRunning());<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>    // Restart the executor and execute the step twice<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    //   execute step N - kill before store update<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    //   restart executor/store<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    //   execute step N - save on store<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    for (int i = 0; i &lt; numSteps; ++i) {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      LOG.info("Restart " + i + " exec state=" + procExec.getProcedure(procId));<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      ProcedureTestingUtility.assertProcNotYetCompleted(procExec, procId);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      restartMasterProcedureExecutor(procExec);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      ProcedureTestingUtility.waitProcedure(procExec, procId);<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>    assertEquals(expectExecRunning, procExec.isRunning());<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
 <span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>    assertEquals(expectExecRunning, procExec.isRunning());<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>  /**<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * Run through all procedure flow states TWICE while also restarting<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * procedure executor at each step; i.e force a reread of procedure store.<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   *<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   *&lt;p&gt;It does<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   * &lt;ol&gt;&lt;li&gt;Execute step N - kill the executor before store update<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   * &lt;li&gt;Restart executor/store<a name="line.394"></a>
-<span class="sourceLineNo">395</span>   * &lt;li&gt;Execute step N - and then save to store<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   * &lt;/ol&gt;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>   *<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   *&lt;p&gt;This is a good test for finding state that needs persisting and steps that are not<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * idempotent. Use this version of the test when the order in which flow steps are executed is<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * not start to finish; where the procedure may vary the flow steps dependent on circumstance<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * found.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @see #testRecoveryAndDoubleExecution(ProcedureExecutor, long, int)<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   */<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  public static void testRecoveryAndDoubleExecution(<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec, final long procId) throws Exception {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    assertEquals(false, procExec.isRunning());<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    for (int i = 0; !procExec.isFinished(procId); ++i) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      LOG.info("Restart " + i + " exec state=" + procExec.getProcedure(procId));<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      restartMasterProcedureExecutor(procExec);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    assertEquals(true, procExec.isRunning());<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    ProcedureTestingUtility.assertProcNotFailed(procExec, procId);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  }<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  /**<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * Execute the procedure up to "lastStep" and then the ProcedureExecutor<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * is restarted and an abort() is injected.<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * If the procedure implement abort() this should result in rollback being triggered.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * Each rollback step is called twice, by restarting the executor after every step.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * At the end of this call the procedure should be finished and rolledback.<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * This method assert on the procedure being terminated with an AbortException.<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   */<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  public static void testRollbackAndDoubleExecution(<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec, final long procId,<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      final int lastStep) throws Exception {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    // Execute up to last step<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    testRecoveryAndDoubleExecution(procExec, procId, lastStep, false);<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>    // Restart the executor and rollback the step twice<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    //   rollback step N - kill before store update<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    //   restart executor/store<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    //   rollback step N - save on store<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    InjectAbortOnLoadListener abortListener = new InjectAbortOnLoadListener(procExec);<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    abortListener.addProcId(procId);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    procExec.registerListener(abortListener);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    try {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      for (int i = 0; !procExec.isFinished(procId); ++i) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        LOG.info("Restart " + i + " rollback state: " + procExec.getProcedure(procId));<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        ProcedureTestingUtility.assertProcNotYetCompleted(procExec, procId);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        restartMasterProcedureExecutor(procExec);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      }<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    } finally {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      assertTrue(procExec.unregisterListener(abortListener));<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    assertEquals(true, procExec.isRunning());<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    ProcedureTestingUtility.assertIsAbortException(procExec.getResult(procId));<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>  /**<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * Execute the procedure up to "lastStep" and then the ProcedureExecutor<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   * is restarted and an abort() is injected.<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * If the procedure implement abort() this should result in rollback being triggered.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * At the end of this call the procedure should be finished and rolledback.<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * This method assert on the procedure being terminated with an AbortException.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   */<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  public static void testRollbackRetriableFailure(<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec, final long procId,<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      final int lastStep) throws Exception {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    // Execute up to last step<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    testRecoveryAndDoubleExecution(procExec, procId, lastStep, false);<a name="line.464"></a>
+<span class="sourceLineNo">385</span>  /**<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Run through all procedure flow states TWICE while also restarting<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * procedure executor at each step; i.e force a reread of procedure store.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   *<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   *&lt;p&gt;It does<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * &lt;ol&gt;&lt;li&gt;Execute step N - kill the executor before store update<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * &lt;li&gt;Restart executor/store<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * &lt;li&gt;Execute step N - and then save to store<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   * &lt;/ol&gt;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>   *<a name="line.394"></a>
+<span class="sourceLineNo">395</span>   *&lt;p&gt;This is a good test for finding state that needs persisting and steps that are not<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   * idempotent. Use this version of the test when the order in which flow steps are executed is<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   * not start to finish; where the procedure may vary the flow steps dependent on circumstance<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * found.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @see #testRecoveryAndDoubleExecution(ProcedureExecutor, long, int)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   */<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  public static void testRecoveryAndDoubleExecution(<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec, final long procId) throws Exception {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    assertEquals(false, procExec.isRunning());<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    for (int i = 0; !procExec.isFinished(procId); ++i) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      LOG.info("Restart " + i + " exec state=" + procExec.getProcedure(procId));<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      restartMasterProcedureExecutor(procExec);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    }<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    assertEquals(true, procExec.isRunning());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    ProcedureTestingUtility.assertProcNotFailed(procExec, procId);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>  /**<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * Execute the procedure up to "lastStep" and then the ProcedureExecutor<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   * is restarted and an abort() is injected.<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   * If the procedure implement abort() this should result in rollback being triggered.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   * Each rollback step is called twice, by restarting the executor after every step.<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * At the end of this call the procedure should be finished and rolledback.<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * This method assert on the procedure being terminated with an AbortException.<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  public static void testRollbackAndDoubleExecution(<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec, final long procId,<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      final int lastStep) throws Exception {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    // Execute up to last step<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    testRecoveryAndDoubleExecution(procExec, procId, lastStep, false);<a name="line.426"></a>
+<span class="sourceLineNo">427</span><a name="line.427"></a>
+<span class="sourceLineNo">428</span>    // Restart the executor and rollback the step twice<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    //   rollback step N - kill before store update<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    //   restart executor/store<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    //   rollback step N - save on store<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    InjectAbortOnLoadListener abortListener = new InjectAbortOnLoadListener(procExec);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    abortListener.addProcId(procId);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    procExec.registerListener(abortListener);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    try {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      for (int i = 0; !procExec.isFinished(procId); ++i) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        LOG.info("Restart " + i + " rollback state: " + procExec.getProcedure(procId));<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        ProcedureTestingUtility.assertProcNotYetCompleted(procExec, procId);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        restartMasterProcedureExecutor(procExec);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    } finally {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      assertTrue(procExec.unregisterListener(abortListener));<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>    assertEquals(true, procExec.isRunning());<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    ProcedureTestingUtility.assertIsAbortException(procExec.getResult(procId));<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>  /**<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   * Execute the procedure up to "lastStep" and then the ProcedureExecutor<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   * is restarted and an abort() is injected.<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * If the procedure implement abort() this should result in rollback being triggered.<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   * At the end of this call the procedure should be finished and rolledback.<a name="line.454"></a>
+<span class="sourceLineNo">455</span>   * This method assert on the procedure being terminated with an AbortException.<a name="line.455"></a>
+<span class="sourceLineNo">456</span>   */<a name="line.456"></a>
+<span class="sourceLineNo">457</span>  public static void testRollbackRetriableFailure(<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec, final long procId,<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      final int lastStep) throws Exception {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    // Execute up to last step<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    testRecoveryAndDoubleExecution(procExec, procId, lastStep, false);<a name="line.461"></a>
+<span class="sourceLineNo">462</span><a name="line.462"></a>
+<span class="sourceLineNo">463</span>    // execute the rollback<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    testRestartWithAbort(procExec, procId);<a name="line.464"></a>
 <span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>    // execute the rollback<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    testRestartWithAbort(procExec, procId);<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>    assertEquals(true, procExec.isRunning());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    ProcedureTestingUtility.assertIsAbortException(procExec.getResult(procId));<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>   * Restart the ProcedureExecutor and inject an abort to the specified procedure.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * If the procedure implement abort() this should result in rollback being triggered.<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * At the end of this call the procedure should be finished and rolledback, if abort is implemnted<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   */<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  public static void testRestartWithAbort(ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec,<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      long procId) throws Exception {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, false);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    InjectAbortOnLoadListener abortListener = new InjectAbortOnLoadListener(procExec);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    abortListener.addProcId(procId);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    procExec.registerListener(abortListener);<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    try {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      ProcedureTestingUtility.assertProcNotYetCompleted(procExec, procId);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      LOG.info("Restart and rollback procId=" + procId);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      restartMasterProcedureExecutor(procExec);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    } finally {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      assertTrue(procExec.unregisterListener(abortListener));<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  }<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>  public static class InjectAbortOnLoadListener<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      implements ProcedureExecutor.ProcedureExecutorListener {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    private final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec;<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    private TreeSet&lt;Long&gt; procsToAbort = null;<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    public InjectAbortOnLoadListener(final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      this.procExec = procExec;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    public void addProcId(long procId) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      if (procsToAbort == null) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        procsToAbort = new TreeSet&lt;&gt;();<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      }<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      procsToAbort.add(procId);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>    @Override<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    public void procedureLoaded(long procId) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      if (procsToAbort != null &amp;&amp; !procsToAbort.contains(procId)) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>        return;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      procExec.abort(procId);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
+<span class="sourceLineNo">466</span>    assertEquals(true, procExec.isRunning());<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    ProcedureTestingUtility.assertIsAbortException(procExec.getResult(procId));<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>   * Restart the ProcedureExecutor and inject an abort to the specified procedure.<a name="line.471"></a>
+<span class="sourceLineNo">472</span>   * If the procedure implement abort() this should result in rollback being triggered.<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * At the end of this call the procedure should be finished and rolledback, if abort is implemnted<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   */<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  public static void testRestartWithAbort(ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec,<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      long procId) throws Exception {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, false);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    InjectAbortOnLoadListener abortListener = new InjectAbortOnLoadListener(procExec);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    abortListener.addProcId(procId);<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    procExec.registerListener(abortListener);<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    try {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      ProcedureTestingUtility.assertProcNotYetCompleted(procExec, procId);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      LOG.info("Restart and rollback procId=" + procId);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      restartMasterProcedureExecutor(procExec);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      ProcedureTestingUtility.waitProcedure(procExec, procId);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    } finally {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      assertTrue(procExec.unregisterListener(abortListener));<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
+<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>  public static class InjectAbortOnLoadListener<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      implements ProcedureExecutor.ProcedureExecutorListener {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    private final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec;<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    private TreeSet&lt;Long&gt; procsToAbort = null;<a name="line.494"></a>
+<span class="sourceLineNo">495</span><a name="line.495"></a>
+<span class="sourceLineNo">496</span>    public InjectAbortOnLoadListener(final ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec) {<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      this.procExec = procExec;<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    }<a name="line.498"></a>
+<span class="sourceLineNo">499</span><a name="line.499"></a>
+<span class="sourceLineNo">500</span>    public void addProcId(long procId) {<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      if (procsToAbort == null) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        procsToAbort = new TreeSet&lt;&gt;();<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      }<a name="line.503"></a>
+<span class="sourceLineNo">504</span>      procsToAbort.add(procId);<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>    @Override<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    public void procedureLoaded(long procId) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      if (procsToAbort != null &amp;&amp; !procsToAbort.contains(procId)) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span>        return;<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      }<a name="line.511"></a>
+<span class="sourceLineNo">512</span>      procExec.abort(procId);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
+<span class="sourceLineNo">514</span><a name="line.514"></a>
+<span class="sourceLineNo">515</span>    @Override<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    public void procedureAdded(long procId) { /* no-op */ }<a name="line.516"></a>
 <span class="sourceLineNo">517</span><a name="line.517"></a>
 <span class="sourceLineNo">518</span>    @Override<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    public void procedureAdded(long procId) { /* no-op */ }<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>    @Override<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    public void procedureFinished(long procId) { /* no-op */ }<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span>}<a name="line.524"></a>
+<span class="sourceLineNo">519</span>    public void procedureFinished(long procId) { /* no-op */ }<a name="line.519"></a>
+<span class="sourceLineNo">520</span>  }<a name="line.520"></a>
+<span class="sourceLineNo">521</span>}<a name="line.521"></a>
 
 
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
index e8ff73a..770a440 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
@@ -1288,7 +1288,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>pendingAssignQueue</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1551">pendingAssignQueue</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1553">pendingAssignQueue</a></pre>
 </li>
 </ul>
 <a name="assignQueueLock">
@@ -1297,7 +1297,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>assignQueueLock</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantLock</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1552">assignQueueLock</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantLock</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1554">assignQueueLock</a></pre>
 </li>
 </ul>
 <a name="assignQueueFullCond">
@@ -1306,7 +1306,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>assignQueueFullCond</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Condition.html?is-external=true" title="class or interface in java.util.concurrent.locks">Condition</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1553">assignQueueFullCond</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Condition.html?is-external=true" title="class or interface in java.util.concurrent.locks">Condition</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1555">assignQueueFullCond</a></pre>
 </li>
 </ul>
 </li>
@@ -2443,7 +2443,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>markRegionAsClosing</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1463">markRegionAsClosing</a>(<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>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1465">markRegionAsClosing</a>(<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="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2457,7 +2457,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>undoRegionAsClosing</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1481">undoRegionAsClosing</a>(<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>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1483">undoRegionAsClosing</a>(<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>
 <a name="markRegionAsClosed-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">
@@ -2466,7 +2466,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>markRegionAsClosed</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1486">markRegionAsClosed</a>(<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>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1488">markRegionAsClosed</a>(<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="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2480,7 +2480,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>markRegionAsSplit</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1500">markRegionAsSplit</a>(<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;parent,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1502">markRegionAsSplit</a>(<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;parent,
                               <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                               <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;daughterA,
                               <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;daughterB)
@@ -2497,7 +2497,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>markRegionAsMerged</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1526">markRegionAsMerged</a>(<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;child,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1528">markRegionAsMerged</a>(<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;child,
                                <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                                <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;mother,
                                <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;father)
@@ -2520,7 +2520,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldAssignFavoredNodes</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1543">shouldAssignFavoredNodes</a>(<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;region)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1545">shouldAssignFavoredNodes</a>(<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;region)</pre>
 </li>
 </ul>
 <a name="queueAssign-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">
@@ -2529,7 +2529,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>queueAssign</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1560">queueAssign</a>(<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>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1562">queueAssign</a>(<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">Add the assign operation to the assignment queue.
  The pending assignment operation will be processed,
  and each region will be assigned by a server using the balancer.</div>
@@ -2541,7 +2541,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>startAssignmentThread</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1577">startAssignmentThread</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1579">startAssignmentThread</a>()</pre>
 </li>
 </ul>
 <a name="stopAssignmentThread--">
@@ -2550,7 +2550,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>stopAssignmentThread</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1590">stopAssignmentThread</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1592">stopAssignmentThread</a>()</pre>
 </li>
 </ul>
 <a name="assignQueueSignal--">
@@ -2559,7 +2559,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>assignQueueSignal</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1603">assignQueueSignal</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1605">assignQueueSignal</a>()</pre>
 </li>
 </ul>
 <a name="waitOnAssignQueue--">
@@ -2568,7 +2568,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>waitOnAssignQueue</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</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;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1613">waitOnAssignQueue</a>()</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</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;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1615">waitOnAssignQueue</a>()</pre>
 </li>
 </ul>
 <a name="processAssignQueue--">
@@ -2577,7 +2577,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>processAssignQueue</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1638">processAssignQueue</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1640">processAssignQueue</a>()</pre>
 </li>
 </ul>
 <a name="acceptPlan-java.util.HashMap-java.util.Map-">
@@ -2586,7 +2586,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>acceptPlan</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1714">acceptPlan</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</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;&nbsp;regions,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1716">acceptPlan</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</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;&nbsp;regions,
                         <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&gt;&nbsp;plan)
                  throws <a href="../../../../../../org/apache/hadoop/hbase/HBaseIOException.html" title="class in org.apache.hadoop.hbase">HBaseIOException</a></pre>
 <dl>
@@ -2601,7 +2601,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>addToPendingAssignment</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1743">addToPendingAssignment</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</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;&nbsp;regions,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1745">addToPendingAssignment</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</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;&nbsp;regions,
                                     <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&nbsp;pendingRegions)</pre>
 </li>
 </ul>
@@ -2611,7 +2611,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>getExcludedServersForSystemTable</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1759">getExcludedServersForSystemTable</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1761">getExcludedServersForSystemTable</a>()</pre>
 <div class="block">Get a list of servers that this region can not assign to.
  For system table, we must assign them to a server with highest version.</div>
 </li>
@@ -2622,7 +2622,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>serverAdded</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1779">serverAdded</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1781">serverAdded</a>(<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/master/ServerListener.html#serverAdded-org.apache.hadoop.hbase.ServerName-">ServerListener</a></code></span></div>
 <div class="block">The server has joined the cluster.</div>
 <dl>
@@ -2639,7 +2639,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>serverRemoved</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1783">serverRemoved</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1785">serverRemoved</a>(<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/master/ServerListener.html#serverRemoved-org.apache.hadoop.hbase.ServerName-">ServerListener</a></code></span></div>
 <div class="block">The server was removed from the cluster.</div>
 <dl>
@@ -2656,7 +2656,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerVersion</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1791">getServerVersion</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1793">getServerVersion</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 </li>
 </ul>
 <a name="killRegionServer-org.apache.hadoop.hbase.ServerName-">
@@ -2665,7 +2665,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>killRegionServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1796">killRegionServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1798">killRegionServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 </li>
 </ul>
 <a name="killRegionServer-org.apache.hadoop.hbase.master.assignment.RegionStates.ServerStateNode-">
@@ -2674,7 +2674,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>killRegionServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1801">killRegionServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.ServerStateNode</a>&nbsp;serverNode)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1803">killRegionServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.ServerStateNode</a>&nbsp;serverNode)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.html
index 94562dd..5313e0c 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.html
@@ -324,7 +324,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href
 ="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a>, <a href="../../../../../../org/apache/hadoop/hbase/
 procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/assignment/GCRegionProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/GCRegionProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/GCRegionProcedure.html
index 094236e..48675a7d 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/GCRegionProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/GCRegionProcedure.html
@@ -312,7 +312,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href
 ="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a>, <a href="../../../../../../org/apache/hadoop/hbase/
 procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/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 cc57c38..8f009e0 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html
@@ -520,7 +520,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBe
 foreExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/ap
 ache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html
index b90fbf0..304721f 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html
@@ -328,7 +328,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironm
 ent-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="..
 /../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/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 37ad04a..78dd323 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html
@@ -480,7 +480,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBe
 foreExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/ap
 ache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/class-use/HMaster.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/class-use/HMaster.html b/devapidocs/org/apache/hadoop/hbase/master/class-use/HMaster.html
index 3ad38b0..6fdfce8 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/class-use/HMaster.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/class-use/HMaster.html
@@ -103,14 +103,18 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.quotas">org.apache.hadoop.hbase.quotas</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.master.procedure">org.apache.hadoop.hbase.master.procedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.tmpl.master">org.apache.hadoop.hbase.tmpl.master</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.quotas">org.apache.hadoop.hbase.quotas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.tmpl.master">org.apache.hadoop.hbase.tmpl.master</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.util">org.apache.hadoop.hbase.util</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -471,6 +475,24 @@
 </tbody>
 </table>
 </li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.master.procedure">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> in <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/package-summary.html">org.apache.hadoop.hbase.master.procedure</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/package-summary.html">org.apache.hadoop.hbase.master.procedure</a> declared as <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></code></td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#master">master</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.quotas">
 <!--   -->
 </a>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/package-use.html b/devapidocs/org/apache/hadoop/hbase/master/package-use.html
index 42ff16a..aeb4301 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-use.html
@@ -751,22 +751,27 @@
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/HMaster.html#org.apache.hadoop.hbase.master.procedure">HMaster</a>
+<div class="block">HMaster is the "master server" for HBase.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/MasterCoprocessorHost.html#org.apache.hadoop.hbase.master.procedure">MasterCoprocessorHost</a>
 <div class="block">Provides the coprocessor framework and environment for master oriented
  operations.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/MasterServices.html#org.apache.hadoop.hbase.master.procedure">MasterServices</a>
 <div class="block">Services Master supplies</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/ServerListener.html#org.apache.hadoop.hbase.master.procedure">ServerListener</a>
 <div class="block">Get notification of server registration events.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/TableNamespaceManager.html#org.apache.hadoop.hbase.master.procedure">TableNamespaceManager</a>
 <div class="block">This is a helper class used internally to manage the namespace metadata that is stored in
  TableName.NAMESPACE_TABLE_NAME.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.html
index 8bd3e49..9018375 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.html
@@ -257,7 +257,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#deserializeStateData-java.io.InputStream-">deserializeStateData</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#executeFromState-TEnvironment-TState-">executeFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a 
 href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getInitialState--">getInitialState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">getState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">getStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../
 ../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollbackState-TEnvironment-TState-">rollbackState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#serializeStateData-java.io.OutputStream-">serializeStateData</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#deserializeStateData-java.io.InputStream-">deserializeStateData</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#executeFromState-TEnvironment-TState-">executeFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a 
 href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getInitialState--">getInitialState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">getState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">getStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/
 apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollbackState-TEnvironment-TState-">rollbackState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#serializeStateData-java.io.OutputStream-">serializeStateData</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html
index 2b1f23d..c094da8 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html
@@ -324,7 +324,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#executeFromState-TEnvironment-TState-">executeFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getInitialState--">getInitialState</a>, <a href="../../../../../../org/a
 pache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">getState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">getStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollbackState-TEnvironment-TState-">rollbackState</a>, <a href="../../../../../../org/apac
 he/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#executeFromState-TEnvironment-TState-">executeFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop
 /hbase/procedure2/StateMachineProcedure.html#getInitialState--">getInitialState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">getState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">getStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/
 StateMachineProcedure.html#rollbackState-TEnvironment-TState-">rollbackState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html
index 4828e93..72f2e3a 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html
@@ -291,7 +291,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#deserializeStateData-java.io.InputStream-">deserializeStateData</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#executeFromState-TEnvironment-TState-">executeFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a 
 href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getInitialState--">getInitialState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">getState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">getStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../
 ../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollbackState-TEnvironment-TState-">rollbackState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#serializeStateData-java.io.OutputStream-">serializeStateData</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#deserializeStateData-java.io.InputStream-">deserializeStateData</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#executeFromState-TEnvironment-TState-">executeFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a 
 href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getInitialState--">getInitialState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">getState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">getStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/
 apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollbackState-TEnvironment-TState-">rollbackState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#serializeStateData-java.io.OutputStream-">serializeStateData</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.html
index c820caa..5c004d4 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.html
@@ -395,7 +395,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBe
 foreExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/ap
 ache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html
index e1dfc29..8e8110a 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html
@@ -404,7 +404,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBe
 foreExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/ap
 ache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html
index 4b89b21..f3a7959 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html
@@ -377,7 +377,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBe
 foreExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/ap
 ache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">


[04/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
index 2252d54..3881ea6 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
@@ -231,7 +231,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createSystemTable, createTable, deleteColumn, deleteTable, disableReplicationPeer, disableTable, drainRegionServer, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClusterSchema, getClusterStatus, getDumpServlet, getFavoredNodesManager, getFsTableDescriptors, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWa
 lManager, getMergePlanCount, getMobCompactionState, getNumWALFiles, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationPeerConfig, getServerCrashProcessingEnabledEvent, getServerManager, getServerName, getSnapshotManager, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableStateManager, getWalProcedureStore, getZooKeeper, isActiveMaster, isBalancerOn, isInitializationStartsMetaRegionAssignment, isInitialized, isInMaintenanceMode, isNormalizerOn, isServerCrashProcessingEnabled, isSplitOrMergeEnabled, listDrainingRegionServers, listLocks, listProcedures, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, registerService, removeDrainFromRegionServer, removeReplic
 ationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, setCatalogJanitorEnabled, setInitialized, setServerCrashProcessingEnabled, shutdown, splitRegion, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createSystemTable, createTable, deleteColumn, deleteTable, disableReplicationPeer, disableTable, drainRegionServer, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClusterSchema, getClusterStatus, getDumpServlet, getFavoredNodesManager, getFsTableDescriptors, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWa
 lManager, getMergePlanCount, getMobCompactionState, getNumWALFiles, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationPeerConfig, getServerCrashProcessingEnabledEvent, getServerManager, getServerName, getSnapshotManager, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableStateManager, getWalProcedureStore, getZooKeeper, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNormalizerOn, isServerCrashProcessingEnabled, isSplitOrMergeEnabled, listDrainingRegionServers, listLocks, listProcedures, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recoverMeta, registerService, removeDrainFromRegionServer, removeReplicationPeer, reportMobCompactionE
 nd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, setCatalogJanitorEnabled, setInitialized, setServerCrashProcessingEnabled, shutdown, splitRegion, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html
index 5262c3a..d2acc7c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html
@@ -231,7 +231,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createSystemTable, createTable, deleteColumn, deleteTable, disableReplicationPeer, disableTable, drainRegionServer, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClusterSchema, getClusterStatus, getDumpServlet, getFavoredNodesManager, getFsTableDescriptors, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWa
 lManager, getMergePlanCount, getMobCompactionState, getNumWALFiles, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationPeerConfig, getServerCrashProcessingEnabledEvent, getServerManager, getServerName, getSnapshotManager, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableStateManager, getWalProcedureStore, getZooKeeper, isActiveMaster, isBalancerOn, isInitializationStartsMetaRegionAssignment, isInitialized, isInMaintenanceMode, isNormalizerOn, isServerCrashProcessingEnabled, isSplitOrMergeEnabled, listDrainingRegionServers, listLocks, listProcedures, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, registerService, removeDrainFromRegionServer, removeReplic
 ationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, setCatalogJanitorEnabled, setInitialized, setServerCrashProcessingEnabled, shutdown, splitRegion, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createSystemTable, createTable, deleteColumn, deleteTable, disableReplicationPeer, disableTable, drainRegionServer, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClusterSchema, getClusterStatus, getDumpServlet, getFavoredNodesManager, getFsTableDescriptors, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWa
 lManager, getMergePlanCount, getMobCompactionState, getNumWALFiles, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationPeerConfig, getServerCrashProcessingEnabledEvent, getServerManager, getServerName, getSnapshotManager, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableStateManager, getWalProcedureStore, getZooKeeper, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNormalizerOn, isServerCrashProcessingEnabled, isSplitOrMergeEnabled, listDrainingRegionServers, listLocks, listProcedures, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recoverMeta, registerService, removeDrainFromRegionServer, removeReplicationPeer, reportMobCompactionE
 nd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, setCatalogJanitorEnabled, setInitialized, setServerCrashProcessingEnabled, shutdown, splitRegion, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/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 b595872..3c10f22 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -626,11 +626,11 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/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/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/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.ActionType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMultiLogThreshold.ActionType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
 </ul>
 </li>
 </ul>

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html
index 86d6c44..3138930 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/MockNoopMasterServices.html
@@ -60,411 +60,418 @@
 <span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;<a name="line.52"></a>
 <span class="sourceLineNo">053</span>import com.google.protobuf.Service;<a name="line.53"></a>
 <span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>public class MockNoopMasterServices implements MasterServices, Server {<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private final Configuration conf;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  private final MetricsMaster metricsMaster;<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>  public MockNoopMasterServices() {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    this(null);<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  }<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>  public MockNoopMasterServices(final Configuration conf) {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    this.conf = conf;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(null));<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>  @Override<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  public void checkTableModifiable(TableName tableName) throws IOException {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    //no-op<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  }<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  @Override<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  public long createTable(<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      final HTableDescriptor desc,<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      final byte[][] splitKeys,<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      final long nonceGroup,<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      final long nonce) throws IOException {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    // no-op<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    return -1;<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>  @Override<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  public long createSystemTable(final HTableDescriptor hTableDescriptor) throws IOException {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    return -1;<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>  @Override<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  public AssignmentManager getAssignmentManager() {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    return null;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  @Override<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  public ExecutorService getExecutorService() {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    return null;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  @Override<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  public ChoreService getChoreService() {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    return null;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  @Override<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  public RegionNormalizer getRegionNormalizer() {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    return null;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  }<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  @Override<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  public CatalogJanitor getCatalogJanitor() {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    return null;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  }<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>  @Override<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  public MasterFileSystem getMasterFileSystem() {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    return null;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  @Override<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  public MasterWalManager getMasterWalManager() {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    return null;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @Override<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public MasterCoprocessorHost getMasterCoprocessorHost() {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return null;<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>  @Override<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  public MasterQuotaManager getMasterQuotaManager() {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    return null;<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>  @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public ProcedureExecutor&lt;MasterProcedureEnv&gt; getMasterProcedureExecutor() {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return null;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  @Override<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  public MetricsMaster getMasterMetrics() {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    return metricsMaster;<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>  public ServerManager getServerManager() {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    return null;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  }<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>  @Override<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  public ZooKeeperWatcher getZooKeeper() {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    return null;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  @Override<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  public CoordinatedStateManager getCoordinatedStateManager() {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    return null;<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>  public MetaTableLocator getMetaTableLocator() {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    return null;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  }<a name="line.161"></a>
-<span class="sourceLineNo">162</span><a name="line.162"></a>
-<span class="sourceLineNo">163</span>  @Override<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  public ClusterConnection getConnection() {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    return null;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  }<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>  @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  public Configuration getConfiguration() {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    return conf;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  @Override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public ServerName getServerName() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    return ServerName.valueOf("mock.master", 12345, 1);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  }<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  @Override<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  public void abort(String why, Throwable e) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    //no-op<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  @Override<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  public boolean isAborted() {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    return false;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  }<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>  private boolean stopped = false;<a name="line.188"></a>
+<span class="sourceLineNo">055</span>import static org.mockito.Mockito.mock;<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>public class MockNoopMasterServices implements MasterServices, Server {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  private final Configuration conf;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private final MetricsMaster metricsMaster;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  public MockNoopMasterServices() {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    this(null);<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public MockNoopMasterServices(final Configuration conf) {<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    this.conf = conf;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(null));<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>  @Override<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  public void checkTableModifiable(TableName tableName) throws IOException {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    //no-op<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  }<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  @Override<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  public long createTable(<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      final HTableDescriptor desc,<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      final byte[][] splitKeys,<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      final long nonceGroup,<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      final long nonce) throws IOException {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    // no-op<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    return -1;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  @Override<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  public long createSystemTable(final HTableDescriptor hTableDescriptor) throws IOException {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    return -1;<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>  @Override<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public AssignmentManager getAssignmentManager() {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    return null;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>  @Override<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  public ExecutorService getExecutorService() {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    return null;<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>  @Override<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  public ChoreService getChoreService() {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    return 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>  @Override<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  public RegionNormalizer getRegionNormalizer() {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    return null;<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 CatalogJanitor getCatalogJanitor() {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    return null;<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>  public MasterFileSystem getMasterFileSystem() {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    return null;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  @Override<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  public MasterWalManager getMasterWalManager() {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    return null;<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>  public MasterCoprocessorHost getMasterCoprocessorHost() {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    return null;<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>  @Override<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  public MasterQuotaManager getMasterQuotaManager() {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    return null;<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>  @Override<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public ProcedureExecutor&lt;MasterProcedureEnv&gt; getMasterProcedureExecutor() {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    return null;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  @Override<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  public MetricsMaster getMasterMetrics() {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    return metricsMaster;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>  @Override<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  public ServerManager getServerManager() {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    return null;<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>  @Override<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  public ZooKeeperWatcher getZooKeeper() {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    return null;<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>  @Override<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  public CoordinatedStateManager getCoordinatedStateManager() {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    return null;<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>  @Override<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  public MetaTableLocator getMetaTableLocator() {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    return null;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  @Override<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public ClusterConnection getConnection() {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    return null;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>  @Override<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  public Configuration getConfiguration() {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    return conf;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  }<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  @Override<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  public ServerName getServerName() {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return ServerName.valueOf("mock.master", 12345, 1);<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>  @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  public void abort(String why, Throwable e) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    //no-op<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public boolean isAborted() {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    return false;<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>  @Override<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public void stop(String why) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    stopped = true;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>  }<a name="line.193"></a>
-<span class="sourceLineNo">194</span><a name="line.194"></a>
-<span class="sourceLineNo">195</span>  @Override<a name="line.195"></a>
-<span class="sourceLineNo">196</span>  public boolean isStopping() {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    return stopped;<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>  @Override<a name="line.200"></a>
-<span class="sourceLineNo">201</span>  public boolean isStopped() {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    return stopped;<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>  @Override<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  public TableDescriptors getTableDescriptors() {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    return null;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>  }<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span>  @Override<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  public boolean isServerCrashProcessingEnabled() {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    return true;<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>  @Override<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  public boolean registerService(Service instance) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    return false;<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>  @Override<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  public boolean abortProcedure(final long procId, final boolean mayInterruptIfRunning)<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      throws IOException {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    return false;  //To change body of implemented methods use File | Settings | File Templates.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>  @Override<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  public List&lt;ProcedureInfo&gt; listProcedures() throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    return null;  //To change body of implemented methods use File | Settings | File Templates.<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>  public List&lt;LockInfo&gt; listLocks() throws IOException {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    return null;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  public List&lt;HTableDescriptor&gt; listTableDescriptorsByNamespace(String name) throws IOException {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    return null;  //To change body of implemented methods use File | Settings | File Templates.<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>  @Override<a name="line.241"></a>
-<span class="sourceLineNo">242</span>  public List&lt;TableName&gt; listTableNamesByNamespace(String name) throws IOException {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    return null;<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>  @Override<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  public long deleteTable(<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      final TableName tableName,<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      final long nonceGroup,<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      final long nonce) throws IOException {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    return -1;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  @Override<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  public long truncateTable(<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      final TableName tableName,<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      final boolean preserveSplits,<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      final long nonceGroup,<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      final long nonce) throws IOException {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    return -1;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  }<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  @Override<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public long modifyTable(<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      final TableName tableName,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      final HTableDescriptor descriptor,<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      final long nonceGroup,<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      final long nonce) throws IOException {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    return -1;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>  @Override<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  public long enableTable(<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      final TableName tableName,<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      final long nonceGroup,<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      final long nonce) throws IOException {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    return -1;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>  }<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>  @Override<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public long disableTable(<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      TableName tableName,<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      final long nonceGroup,<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      final long nonce) throws IOException {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    return -1;<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>  @Override<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public long addColumn(final TableName tableName, final HColumnDescriptor columnDescriptor,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      final long nonceGroup, final long nonce) throws IOException {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    return -1;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  @Override<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  public long modifyColumn(final TableName tableName, final HColumnDescriptor descriptor,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      final long nonceGroup, final long nonce) throws IOException {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    return -1;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>  @Override<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  public long deleteColumn(final TableName tableName, final byte[] columnName,<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      final long nonceGroup, final long nonce) throws IOException {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return -1;<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>  @Override<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  public long mergeRegions(<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      final HRegionInfo[] regionsToMerge,<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      final boolean forcible,<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      final long nonceGroup,<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      final long nonce) throws IOException {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return -1;<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>  @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  public long splitRegion(<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      final HRegionInfo regionInfo,<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      final byte[] splitRow,<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      final long nonceGroup,<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      final long nonce) throws IOException {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    return -1;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  @Override<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  public TableStateManager getTableStateManager() {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    return null;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  }<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>  @Override<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  public boolean isActiveMaster() {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    return true;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>  @Override<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  public boolean isInitialized() {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    return false;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>  @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  public boolean isInMaintenanceMode() {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    return false;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>  @Override<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  public long getLastMajorCompactionTimestamp(TableName table) throws IOException {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    return 0;<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  @Override<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  public long getLastMajorCompactionTimestampForRegion(byte[] regionName) throws IOException {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    return 0;<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>  @Override<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  public ClusterSchema getClusterSchema() {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    return null;<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 ClusterConnection getClusterConnection() {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    // TODO Auto-generated method stub<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    return null;<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 LoadBalancer getLoadBalancer() {<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><a name="line.370"></a>
-<span class="sourceLineNo">371</span>  @Override<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  public FavoredNodesManager getFavoredNodesManager() {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    return null;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  }<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>  @Override<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  public SnapshotManager getSnapshotManager() {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    return null;<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>  public MasterProcedureManagerHost getMasterProcedureManagerHost() {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    return null;<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>  public boolean isSplitOrMergeEnabled(MasterSwitchType switchType) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    return false;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  }<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>  @Override<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  public void addReplicationPeer(String peerId, ReplicationPeerConfig peerConfig)<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      throws ReplicationException {<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>  public void removeReplicationPeer(String peerId) throws ReplicationException {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  }<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>  @Override<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  public void enableReplicationPeer(String peerId) throws ReplicationException, IOException {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  }<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  @Override<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  public void disableReplicationPeer(String peerId) throws ReplicationException, IOException {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>  @Override<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  public void drainRegionServer(ServerName server) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  @Override<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  public List&lt;ServerName&gt; listDrainingRegionServers() {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    return null;<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  }<a name="line.416"></a>
-<span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>  @Override<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  public void removeDrainFromRegionServer(ServerName servers) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    return;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  }<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>  @Override<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  public ReplicationPeerConfig getReplicationPeerConfig(String peerId) throws ReplicationException,<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      IOException {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    return null;<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  }<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  @Override<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  public void updateReplicationPeerConfig(String peerId, ReplicationPeerConfig peerConfig)<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      throws ReplicationException, IOException {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  }<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>  @Override<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  public List&lt;ReplicationPeerDescription&gt; listReplicationPeers(String regex)<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      throws ReplicationException, IOException {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    return null;<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>  public LockManager getLockManager() {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    return null;<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 String getRegionServerVersion(ServerName sn) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    return null;<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 void checkIfShouldMoveSystemRegionAsync() {<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>  @Override<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  public ProcedureEvent getInitializedEvent() {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    // TODO Auto-generated method stub<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    return null;<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">190</span>  private boolean stopped = false;<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>  @Override<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  public void stop(String why) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    stopped = true;<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>  @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  public boolean isStopping() {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    return stopped;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  }<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>  @Override<a name="line.202"></a>
+<span class="sourceLineNo">203</span>  public boolean isStopped() {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    return stopped;<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>  @Override<a name="line.207"></a>
+<span class="sourceLineNo">208</span>  public TableDescriptors getTableDescriptors() {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    return null;<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>  public boolean isServerCrashProcessingEnabled() {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    return true;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>  @Override<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  public boolean registerService(Service instance) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    return false;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>  @Override<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  public boolean abortProcedure(final long procId, final boolean mayInterruptIfRunning)<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      throws IOException {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    return false;  //To change body of implemented methods use File | Settings | File Templates.<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>  @Override<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  public List&lt;ProcedureInfo&gt; listProcedures() throws IOException {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    return null;  //To change body of implemented methods use File | Settings | File Templates.<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>  @Override<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  public List&lt;LockInfo&gt; listLocks() throws IOException {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    return null;<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>  @Override<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  public List&lt;HTableDescriptor&gt; listTableDescriptorsByNamespace(String name) throws IOException {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    return null;  //To change body of implemented methods use File | Settings | File Templates.<a name="line.240"></a>
+<span class="sourceLineNo">241</span>  }<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>  @Override<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  public List&lt;TableName&gt; listTableNamesByNamespace(String name) throws IOException {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    return null;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  }<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>  @Override<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  public long deleteTable(<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      final TableName tableName,<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      final long nonceGroup,<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      final long nonce) throws IOException {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    return -1;<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>  @Override<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  public long truncateTable(<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      final TableName tableName,<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      final boolean preserveSplits,<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      final long nonceGroup,<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      final long nonce) throws IOException {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    return -1;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>  @Override<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  public long modifyTable(<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      final TableName tableName,<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      final HTableDescriptor descriptor,<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      final long nonceGroup,<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      final long nonce) throws IOException {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    return -1;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public long enableTable(<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      final TableName tableName,<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      final long nonceGroup,<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      final long nonce) throws IOException {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    return -1;<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>  @Override<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public long disableTable(<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      TableName tableName,<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      final long nonceGroup,<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      final long nonce) throws IOException {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    return -1;<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  }<a name="line.289"></a>
+<span class="sourceLineNo">290</span><a name="line.290"></a>
+<span class="sourceLineNo">291</span>  @Override<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  public long addColumn(final TableName tableName, final HColumnDescriptor columnDescriptor,<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      final long nonceGroup, final long nonce) throws IOException {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    return -1;<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  }<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public long modifyColumn(final TableName tableName, final HColumnDescriptor descriptor,<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      final long nonceGroup, final long nonce) throws IOException {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    return -1;<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>  @Override<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  public long deleteColumn(final TableName tableName, final byte[] columnName,<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      final long nonceGroup, final long nonce) throws IOException {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    return -1;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>  @Override<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  public long mergeRegions(<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      final HRegionInfo[] regionsToMerge,<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      final boolean forcible,<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      final long nonceGroup,<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      final long nonce) throws IOException {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    return -1;<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>  @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  public long splitRegion(<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      final HRegionInfo regionInfo,<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      final byte[] splitRow,<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      final long nonceGroup,<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      final long nonce) throws IOException {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    return -1;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  @Override<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  public TableStateManager getTableStateManager() {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    return mock(TableStateManager.class);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  }<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>  @Override<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  public boolean isActiveMaster() {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    return true;<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>  @Override<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  public boolean isInitialized() {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    return false;<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>  @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  public boolean isInMaintenanceMode() {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    return false;<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 long getLastMajorCompactionTimestamp(TableName table) throws IOException {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    return 0;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  }<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>  @Override<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  public long getLastMajorCompactionTimestampForRegion(byte[] regionName) throws IOException {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    return 0;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>  @Override<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  public ClusterSchema getClusterSchema() {<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><a name="line.361"></a>
+<span class="sourceLineNo">362</span>  @Override<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  public ClusterConnection getClusterConnection() {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    // TODO Auto-generated method stub<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    return null;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  }<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>  @Override<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  public LoadBalancer getLoadBalancer() {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    return null;<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>  public FavoredNodesManager getFavoredNodesManager() {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    return null;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  }<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>  @Override<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  public SnapshotManager getSnapshotManager() {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    return null;<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>  public MasterProcedureManagerHost getMasterProcedureManagerHost() {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    return null;<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>  public boolean isSplitOrMergeEnabled(MasterSwitchType switchType) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    return false;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  }<a name="line.391"></a>
+<span class="sourceLineNo">392</span><a name="line.392"></a>
+<span class="sourceLineNo">393</span>  @Override<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  public void addReplicationPeer(String peerId, ReplicationPeerConfig peerConfig)<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      throws ReplicationException {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>  }<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>  @Override<a name="line.398"></a>
+<span class="sourceLineNo">399</span>  public void removeReplicationPeer(String peerId) throws ReplicationException {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>  }<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>  @Override<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public void enableReplicationPeer(String peerId) throws ReplicationException, IOException {<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>  public void disableReplicationPeer(String peerId) throws ReplicationException, IOException {<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>  public void drainRegionServer(ServerName server) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    return;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  }<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>  @Override<a name="line.415"></a>
+<span class="sourceLineNo">416</span>  public List&lt;ServerName&gt; listDrainingRegionServers() {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    return null;<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 removeDrainFromRegionServer(ServerName servers) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    return;<a name="line.422"></a>
+<span class="sourceLineNo">423</span>  }<a name="line.423"></a>
+<span class="sourceLineNo">424</span><a name="line.424"></a>
+<span class="sourceLineNo">425</span>  @Override<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  public ReplicationPeerConfig getReplicationPeerConfig(String peerId) throws ReplicationException,<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      IOException {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    return null;<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>  @Override<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  public void updateReplicationPeerConfig(String peerId, ReplicationPeerConfig peerConfig)<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      throws ReplicationException, IOException {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  @Override<a name="line.436"></a>
+<span class="sourceLineNo">437</span>  public List&lt;ReplicationPeerDescription&gt; listReplicationPeers(String regex)<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      throws ReplicationException, IOException {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    return null;<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>  public LockManager getLockManager() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    return null;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>  @Override<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public String getRegionServerVersion(ServerName sn) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    return null;<a name="line.449"></a>
+<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>  @Override<a name="line.452"></a>
+<span class="sourceLineNo">453</span>  public void checkIfShouldMoveSystemRegionAsync() {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>  @Override<a name="line.456"></a>
+<span class="sourceLineNo">457</span>  public boolean recoverMeta() throws IOException {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    return false;<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>  @Override<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  public ProcedureEvent getInitializedEvent() {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    // TODO Auto-generated method stub<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    return null;<a name="line.464"></a>
+<span class="sourceLineNo">465</span>  }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>}<a name="line.466"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html
index 9ae594b..14eee8f 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html
@@ -280,7 +280,7 @@
 <span class="sourceLineNo">272</span>      MasterMetaBootstrap createMetaBootstrap(final HMaster master, final MonitoredTask status) {<a name="line.272"></a>
 <span class="sourceLineNo">273</span>        return new MasterMetaBootstrap(this, status) {<a name="line.273"></a>
 <span class="sourceLineNo">274</span>          @Override<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          protected void assignMeta(Set&lt;ServerName&gt; previouslyFailedMeatRSs, int replicaId) { }<a name="line.275"></a>
+<span class="sourceLineNo">275</span>          protected void assignMeta(int replicaId) { }<a name="line.275"></a>
 <span class="sourceLineNo">276</span>        };<a name="line.276"></a>
 <span class="sourceLineNo">277</span>      }<a name="line.277"></a>
 <span class="sourceLineNo">278</span><a name="line.278"></a>


[25/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html
index 3346dc7..e8d11b8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html
@@ -27,200 +27,153 @@
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.master;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.util.HashSet;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.List;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.Set;<a name="line.24"></a>
-<span class="sourceLineNo">025</span><a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.logging.Log;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.LogFactory;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HConstants;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.ServerName;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.TableName;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.zookeeper.KeeperException;<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>/**<a name="line.42"></a>
-<span class="sourceLineNo">043</span> * Used by the HMaster on startup to split meta logs and assign the meta table.<a name="line.43"></a>
-<span class="sourceLineNo">044</span> */<a name="line.44"></a>
-<span class="sourceLineNo">045</span>@InterfaceAudience.Private<a name="line.45"></a>
-<span class="sourceLineNo">046</span>public class MasterMetaBootstrap {<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private static final Log LOG = LogFactory.getLog(MasterMetaBootstrap.class);<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>  private final MonitoredTask status;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  private final HMaster master;<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  private Set&lt;ServerName&gt; previouslyFailedServers;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  private Set&lt;ServerName&gt; previouslyFailedMetaRSs;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>  public MasterMetaBootstrap(final HMaster master, final MonitoredTask status) {<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    this.master = master;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    this.status = status;<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 void splitMetaLogsBeforeAssignment() throws IOException, KeeperException {<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    // get a list for previously failed RS which need log splitting work<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    // we recover hbase:meta region servers inside master initialization and<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    // handle other failed servers in SSH in order to start up master node ASAP<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    previouslyFailedServers = master.getMasterWalManager().getFailedServersFromLogFolders();<a name="line.64"></a>
-<span class="sourceLineNo">065</span><a name="line.65"></a>
-<span class="sourceLineNo">066</span>    // log splitting for hbase:meta server<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    ServerName oldMetaServerLocation = master.getMetaTableLocator()<a name="line.67"></a>
-<span class="sourceLineNo">068</span>        .getMetaRegionLocation(master.getZooKeeper());<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    if (oldMetaServerLocation != null &amp;&amp; previouslyFailedServers.contains(oldMetaServerLocation)) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      splitMetaLogBeforeAssignment(oldMetaServerLocation);<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      // Note: we can't remove oldMetaServerLocation from previousFailedServers list because it<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      // may also host user regions<a name="line.72"></a>
+<span class="sourceLineNo">022</span>import java.util.List;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.Set;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.commons.logging.Log;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.logging.LogFactory;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.HConstants;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.ServerName;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.TableName;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.zookeeper.KeeperException;<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>/**<a name="line.41"></a>
+<span class="sourceLineNo">042</span> * Used by the HMaster on startup to split meta logs and assign the meta table.<a name="line.42"></a>
+<span class="sourceLineNo">043</span> */<a name="line.43"></a>
+<span class="sourceLineNo">044</span>@InterfaceAudience.Private<a name="line.44"></a>
+<span class="sourceLineNo">045</span>public class MasterMetaBootstrap {<a name="line.45"></a>
+<span class="sourceLineNo">046</span>  private static final Log LOG = LogFactory.getLog(MasterMetaBootstrap.class);<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>  private final MonitoredTask status;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private final HMaster master;<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  public MasterMetaBootstrap(final HMaster master, final MonitoredTask status) {<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    this.master = master;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    this.status = status;<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 void recoverMeta() throws InterruptedException, IOException {<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    master.recoverMeta();<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    master.getTableStateManager().start();<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    enableCrashedServerProcessing(false);<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 void processDeadServers() {<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    // get a list for previously failed RS which need log splitting work<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    // we recover hbase:meta region servers inside master initialization and<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    // handle other failed servers in SSH in order to start up master node ASAP<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    Set&lt;ServerName&gt; previouslyFailedServers =<a name="line.66"></a>
+<span class="sourceLineNo">067</span>        master.getMasterWalManager().getFailedServersFromLogFolders();<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>    // Master has recovered hbase:meta region server and we put<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    // other failed region servers in a queue to be handled later by SSH<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    for (ServerName tmpServer : previouslyFailedServers) {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      master.getServerManager().processDeadServer(tmpServer, true);<a name="line.72"></a>
 <span class="sourceLineNo">073</span>    }<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    previouslyFailedMetaRSs = getPreviouselyFailedMetaServersFromZK();<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    // need to use union of previouslyFailedMetaRSs recorded in ZK and previouslyFailedServers<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    // instead of previouslyFailedMetaRSs alone to address the following two situations:<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    // 1) the chained failure situation(recovery failed multiple times in a row).<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    // 2) master get killed right before it could delete the recovering hbase:meta from ZK while the<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    // same server still has non-meta wals to be replayed so that<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    // removeStaleRecoveringRegionsFromZK can't delete the stale hbase:meta region<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    // Passing more servers into splitMetaLog is all right. If a server doesn't have hbase:meta wal,<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    // there is no op for the server.<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    previouslyFailedMetaRSs.addAll(previouslyFailedServers);<a name="line.83"></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 void assignMetaReplicas()<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      throws IOException, InterruptedException, KeeperException {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    int numReplicas = master.getConfiguration().getInt(HConstants.META_REPLICAS_NUM,<a name="line.78"></a>
+<span class="sourceLineNo">079</span>           HConstants.DEFAULT_META_REPLICA_NUM);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    for (int i = 1; i &lt; numReplicas; i++) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      assignMeta(i);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    unassignExcessMetaReplica(numReplicas);<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 void assignMeta() throws InterruptedException, IOException, KeeperException {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    assignMeta(previouslyFailedMetaRSs, HRegionInfo.DEFAULT_REPLICA_ID);<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 void processDeadServers() throws IOException {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    // Master has recovered hbase:meta region server and we put<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    // other failed region servers in a queue to be handled later by SSH<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    for (ServerName tmpServer : previouslyFailedServers) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      master.getServerManager().processDeadServer(tmpServer, true);<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  public void assignMetaReplicas()<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      throws IOException, InterruptedException, KeeperException {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    int numReplicas = master.getConfiguration().getInt(HConstants.META_REPLICAS_NUM,<a name="line.100"></a>
-<span class="sourceLineNo">101</span>           HConstants.DEFAULT_META_REPLICA_NUM);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    final Set&lt;ServerName&gt; EMPTY_SET = new HashSet&lt;&gt;();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    for (int i = 1; i &lt; numReplicas; i++) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>      assignMeta(EMPTY_SET, i);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    }<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    unassignExcessMetaReplica(numReplicas);<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>  private void splitMetaLogBeforeAssignment(ServerName currentMetaServer) throws IOException {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    master.getMasterWalManager().splitMetaLog(currentMetaServer);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  }<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>  private void unassignExcessMetaReplica(int numMetaReplicasConfigured) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    final ZooKeeperWatcher zooKeeper = master.getZooKeeper();<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    // unassign the unneeded replicas (for e.g., if the previous master was configured<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    // with a replication of 3 and now it is 2, we need to unassign the 1 unneeded replica)<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    try {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      List&lt;String&gt; metaReplicaZnodes = zooKeeper.getMetaReplicaNodes();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      for (String metaReplicaZnode : metaReplicaZnodes) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        int replicaId = zooKeeper.znodePaths.getMetaReplicaIdFromZnode(metaReplicaZnode);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        if (replicaId &gt;= numMetaReplicasConfigured) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          RegionState r = MetaTableLocator.getMetaRegionState(zooKeeper, replicaId);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>          LOG.info("Closing excess replica of meta region " + r.getRegion());<a name="line.123"></a>
-<span class="sourceLineNo">124</span>          // send a close and wait for a max of 30 seconds<a name="line.124"></a>
-<span class="sourceLineNo">125</span>          ServerManager.closeRegionSilentlyAndWait(master.getClusterConnection(),<a name="line.125"></a>
-<span class="sourceLineNo">126</span>              r.getServerName(), r.getRegion(), 30000);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>          ZKUtil.deleteNode(zooKeeper, zooKeeper.znodePaths.getZNodeForReplica(replicaId));<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>    } catch (Exception ex) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      // ignore the exception since we don't want the master to be wedged due to potential<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      // issues in the cleanup of the extra regions. We can do that cleanup via hbck or manually<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      LOG.warn("Ignoring exception " + ex);<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    }<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  }<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>  /**<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * Check &lt;code&gt;hbase:meta&lt;/code&gt; is assigned. If not, assign it.<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  protected void assignMeta(Set&lt;ServerName&gt; previouslyFailedMetaRSs, int replicaId)<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      throws InterruptedException, IOException, KeeperException {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    final AssignmentManager assignmentManager = master.getAssignmentManager();<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>    // Work on meta region<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    int assigned = 0;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    // TODO: Unimplemented<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // long timeout =<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    //   master.getConfiguration().getLong("hbase.catalog.verification.timeout", 1000);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    if (replicaId == HRegionInfo.DEFAULT_REPLICA_ID) {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      status.setStatus("Assigning hbase:meta region");<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    } else {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      status.setStatus("Assigning hbase:meta region, replicaId " + replicaId);<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>    // Get current meta state from zk.<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    RegionState metaState = MetaTableLocator.getMetaRegionState(master.getZooKeeper(), replicaId);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    LOG.debug("meta state from zookeeper: " + metaState);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    HRegionInfo hri = RegionReplicaUtil.getRegionInfoForReplica(<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      HRegionInfo.FIRST_META_REGIONINFO, replicaId);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    assignmentManager.assignMeta(hri, metaState.getServerName());<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>    if (replicaId == HRegionInfo.DEFAULT_REPLICA_ID) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      // TODO: should we prevent from using state manager before meta was initialized?<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      // tableStateManager.start();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      master.getTableStateManager()<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        .setTableState(TableName.META_TABLE_NAME, TableState.State.ENABLED);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
-<span class="sourceLineNo">168</span><a name="line.168"></a>
-<span class="sourceLineNo">169</span>    master.getTableStateManager().start();<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>    // Make sure a hbase:meta location is set. We need to enable SSH here since<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    // if the meta region server is died at this time, we need it to be re-assigned<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    // by SSH so that system tables can be assigned.<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    // No need to wait for meta is assigned = 0 when meta is just verified.<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    if (replicaId == HRegionInfo.DEFAULT_REPLICA_ID) enableCrashedServerProcessing(assigned != 0);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    LOG.info("hbase:meta with replicaId " + replicaId + ", location="<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      + master.getMetaTableLocator().getMetaRegionLocation(master.getZooKeeper(), replicaId));<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    status.setStatus("META assigned.");<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  }<a name="line.179"></a>
-<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>  private void enableCrashedServerProcessing(final boolean waitForMeta)<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      throws IOException, InterruptedException {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    // If crashed server processing is disabled, we enable it and expire those dead but not expired<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    // servers. This is required so that if meta is assigning to a server which dies after<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    // assignMeta starts assignment, ServerCrashProcedure can re-assign it. Otherwise, we will be<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    // stuck here waiting forever if waitForMeta is specified.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    if (!master.isServerCrashProcessingEnabled()) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      master.setServerCrashProcessingEnabled(true);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      master.getServerManager().processQueuedDeadServers();<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>    if (waitForMeta) {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      master.getMetaTableLocator().waitMetaRegionLocation(master.getZooKeeper());<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>  }<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>  /**<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   * This function returns a set of region server names under hbase:meta recovering region ZK node<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   * @return Set of meta server names which were recorded in ZK<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   */<a name="line.200"></a>
-<span class="sourceLineNo">201</span>  private Set&lt;ServerName&gt; getPreviouselyFailedMetaServersFromZK() throws KeeperException {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    final ZooKeeperWatcher zooKeeper = master.getZooKeeper();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    Set&lt;ServerName&gt; result = new HashSet&lt;&gt;();<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    String metaRecoveringZNode = ZKUtil.joinZNode(zooKeeper.znodePaths.recoveringRegionsZNode,<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      HRegionInfo.FIRST_META_REGIONINFO.getEncodedName());<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    List&lt;String&gt; regionFailedServers = ZKUtil.listChildrenNoWatch(zooKeeper, metaRecoveringZNode);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    if (regionFailedServers == null) return result;<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    for (String failedServer : regionFailedServers) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      ServerName server = ServerName.parseServerName(failedServer);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      result.add(server);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    return result;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>}<a name="line.215"></a>
+<span class="sourceLineNo">086</span>  private void unassignExcessMetaReplica(int numMetaReplicasConfigured) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    final ZooKeeperWatcher zooKeeper = master.getZooKeeper();<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    // unassign the unneeded replicas (for e.g., if the previous master was configured<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    // with a replication of 3 and now it is 2, we need to unassign the 1 unneeded replica)<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    try {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      List&lt;String&gt; metaReplicaZnodes = zooKeeper.getMetaReplicaNodes();<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      for (String metaReplicaZnode : metaReplicaZnodes) {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        int replicaId = zooKeeper.znodePaths.getMetaReplicaIdFromZnode(metaReplicaZnode);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>        if (replicaId &gt;= numMetaReplicasConfigured) {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>          RegionState r = MetaTableLocator.getMetaRegionState(zooKeeper, replicaId);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>          LOG.info("Closing excess replica of meta region " + r.getRegion());<a name="line.96"></a>
+<span class="sourceLineNo">097</span>          // send a close and wait for a max of 30 seconds<a name="line.97"></a>
+<span class="sourceLineNo">098</span>          ServerManager.closeRegionSilentlyAndWait(master.getClusterConnection(),<a name="line.98"></a>
+<span class="sourceLineNo">099</span>              r.getServerName(), r.getRegion(), 30000);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>          ZKUtil.deleteNode(zooKeeper, zooKeeper.znodePaths.getZNodeForReplica(replicaId));<a name="line.100"></a>
+<span class="sourceLineNo">101</span>        }<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      }<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    } catch (Exception ex) {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      // ignore the exception since we don't want the master to be wedged due to potential<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      // issues in the cleanup of the extra regions. We can do that cleanup via hbck or manually<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      LOG.warn("Ignoring exception " + ex);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  /**<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * Check &lt;code&gt;hbase:meta&lt;/code&gt; is assigned. If not, assign it.<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  protected void assignMeta(int replicaId)<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      throws InterruptedException, IOException, KeeperException {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    final AssignmentManager assignmentManager = master.getAssignmentManager();<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>    // Work on meta region<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    // TODO: Unimplemented<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    // long timeout =<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    //   master.getConfiguration().getLong("hbase.catalog.verification.timeout", 1000);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    if (replicaId == HRegionInfo.DEFAULT_REPLICA_ID) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      status.setStatus("Assigning hbase:meta region");<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    } else {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      status.setStatus("Assigning hbase:meta region, replicaId " + replicaId);<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>    // Get current meta state from zk.<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    RegionState metaState = MetaTableLocator.getMetaRegionState(master.getZooKeeper(), replicaId);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    LOG.debug("meta state from zookeeper: " + metaState);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    HRegionInfo hri = RegionReplicaUtil.getRegionInfoForReplica(<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      HRegionInfo.FIRST_META_REGIONINFO, replicaId);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    assignmentManager.assignMeta(hri, metaState.getServerName());<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>    if (replicaId == HRegionInfo.DEFAULT_REPLICA_ID) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      // TODO: should we prevent from using state manager before meta was initialized?<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      // tableStateManager.start();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      master.getTableStateManager()<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        .setTableState(TableName.META_TABLE_NAME, TableState.State.ENABLED);<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>    master.getTableStateManager().start();<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    // Make sure a hbase:meta location is set. We need to enable SSH here since<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    // if the meta region server is died at this time, we need it to be re-assigned<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    // by SSH so that system tables can be assigned.<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    // No need to wait for meta is assigned = 0 when meta is just verified.<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    if (replicaId == HRegionInfo.DEFAULT_REPLICA_ID) enableCrashedServerProcessing(false);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    LOG.info("hbase:meta with replicaId " + replicaId + ", location="<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      + master.getMetaTableLocator().getMetaRegionLocation(master.getZooKeeper(), replicaId));<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    status.setStatus("META assigned.");<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private void enableCrashedServerProcessing(final boolean waitForMeta)<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      throws InterruptedException {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    // If crashed server processing is disabled, we enable it and expire those dead but not expired<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    // servers. This is required so that if meta is assigning to a server which dies after<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    // assignMeta starts assignment, ServerCrashProcedure can re-assign it. Otherwise, we will be<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    // stuck here waiting forever if waitForMeta is specified.<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    if (!master.isServerCrashProcessingEnabled()) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      master.setServerCrashProcessingEnabled(true);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      master.getServerManager().processQueuedDeadServers();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    if (waitForMeta) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      master.getMetaTableLocator().waitMetaRegionLocation(master.getZooKeeper());<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>}<a name="line.168"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterServices.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterServices.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterServices.html
index a6b5029..3333f28 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterServices.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterServices.html
@@ -508,7 +508,14 @@
 <span class="sourceLineNo">500</span>  public String getRegionServerVersion(final ServerName sn);<a name="line.500"></a>
 <span class="sourceLineNo">501</span><a name="line.501"></a>
 <span class="sourceLineNo">502</span>  public void checkIfShouldMoveSystemRegionAsync();<a name="line.502"></a>
-<span class="sourceLineNo">503</span>}<a name="line.503"></a>
+<span class="sourceLineNo">503</span><a name="line.503"></a>
+<span class="sourceLineNo">504</span>  /**<a name="line.504"></a>
+<span class="sourceLineNo">505</span>   * Recover meta table. Will result in no-op is meta is already initialized. Any code that has<a name="line.505"></a>
+<span class="sourceLineNo">506</span>   * access to master and requires to access meta during process initialization can call this<a name="line.506"></a>
+<span class="sourceLineNo">507</span>   * method to make sure meta is initialized.<a name="line.507"></a>
+<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
+<span class="sourceLineNo">509</span>  boolean recoverMeta() throws IOException;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>}<a name="line.510"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterWalManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterWalManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterWalManager.html
index a8044e9..7db1e82 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterWalManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterWalManager.html
@@ -159,7 +159,7 @@
 <span class="sourceLineNo">151</span>   * Inspect the log directory to find dead servers which need recovery work<a name="line.151"></a>
 <span class="sourceLineNo">152</span>   * @return A set of ServerNames which aren't running but still have WAL files left in file system<a name="line.152"></a>
 <span class="sourceLineNo">153</span>   */<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  Set&lt;ServerName&gt; getFailedServersFromLogFolders() {<a name="line.154"></a>
+<span class="sourceLineNo">154</span>  public Set&lt;ServerName&gt; getFailedServersFromLogFolders() {<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    boolean retrySplitting = !conf.getBoolean("hbase.hlog.split.skip.errors",<a name="line.155"></a>
 <span class="sourceLineNo">156</span>        WALSplitter.SPLIT_SKIP_ERRORS_DEFAULT);<a name="line.156"></a>
 <span class="sourceLineNo">157</span><a name="line.157"></a>


[09/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/checkstyle.html b/hbase-annotations/checkstyle.html
index 5f6e1ca..49625d4 100644
--- a/hbase-annotations/checkstyle.html
+++ b/hbase-annotations/checkstyle.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependencies.html b/hbase-annotations/dependencies.html
index ab4e6ab..6e02c5f 100644
--- a/hbase-annotations/dependencies.html
+++ b/hbase-annotations/dependencies.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-convergence.html b/hbase-annotations/dependency-convergence.html
index b95e812..49ede66 100644
--- a/hbase-annotations/dependency-convergence.html
+++ b/hbase-annotations/dependency-convergence.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-info.html b/hbase-annotations/dependency-info.html
index 72af473..63edcd9 100644
--- a/hbase-annotations/dependency-info.html
+++ b/hbase-annotations/dependency-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-management.html b/hbase-annotations/dependency-management.html
index 8f94a7e..d67a0a3 100644
--- a/hbase-annotations/dependency-management.html
+++ b/hbase-annotations/dependency-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/index.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/index.html b/hbase-annotations/index.html
index 9afc4e7..e990109 100644
--- a/hbase-annotations/index.html
+++ b/hbase-annotations/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/integration.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/integration.html b/hbase-annotations/integration.html
index fef82f4..6891bc8 100644
--- a/hbase-annotations/integration.html
+++ b/hbase-annotations/integration.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/issue-tracking.html b/hbase-annotations/issue-tracking.html
index 07c3c89..d8f0bcd 100644
--- a/hbase-annotations/issue-tracking.html
+++ b/hbase-annotations/issue-tracking.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/license.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/license.html b/hbase-annotations/license.html
index 3b916ac..fe776c6 100644
--- a/hbase-annotations/license.html
+++ b/hbase-annotations/license.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/mail-lists.html b/hbase-annotations/mail-lists.html
index 31fb7e8..c0fcf06 100644
--- a/hbase-annotations/mail-lists.html
+++ b/hbase-annotations/mail-lists.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugin-management.html b/hbase-annotations/plugin-management.html
index ea95201..1facadd 100644
--- a/hbase-annotations/plugin-management.html
+++ b/hbase-annotations/plugin-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugins.html b/hbase-annotations/plugins.html
index f02cdaa..626833b 100644
--- a/hbase-annotations/plugins.html
+++ b/hbase-annotations/plugins.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-info.html b/hbase-annotations/project-info.html
index 3c70b06..6c97d7f 100644
--- a/hbase-annotations/project-info.html
+++ b/hbase-annotations/project-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-reports.html b/hbase-annotations/project-reports.html
index 5ffa406..d74ffdb 100644
--- a/hbase-annotations/project-reports.html
+++ b/hbase-annotations/project-reports.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-summary.html b/hbase-annotations/project-summary.html
index b899fea..e5fbc3d 100644
--- a/hbase-annotations/project-summary.html
+++ b/hbase-annotations/project-summary.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/source-repository.html b/hbase-annotations/source-repository.html
index 32d97ca..05e6a46 100644
--- a/hbase-annotations/source-repository.html
+++ b/hbase-annotations/source-repository.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-annotations/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/team-list.html b/hbase-annotations/team-list.html
index 8655dc6..c62c133 100644
--- a/hbase-annotations/team-list.html
+++ b/hbase-annotations/team-list.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/dependencies.html b/hbase-archetypes/dependencies.html
index 05af7d3..708ace5 100644
--- a/hbase-archetypes/dependencies.html
+++ b/hbase-archetypes/dependencies.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/dependency-convergence.html b/hbase-archetypes/dependency-convergence.html
index d08aaf3..b26d3d4 100644
--- a/hbase-archetypes/dependency-convergence.html
+++ b/hbase-archetypes/dependency-convergence.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/dependency-info.html b/hbase-archetypes/dependency-info.html
index 7071505..7454410 100644
--- a/hbase-archetypes/dependency-info.html
+++ b/hbase-archetypes/dependency-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/dependency-management.html b/hbase-archetypes/dependency-management.html
index 45746a9..520ed90 100644
--- a/hbase-archetypes/dependency-management.html
+++ b/hbase-archetypes/dependency-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-archetype-builder/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/dependencies.html b/hbase-archetypes/hbase-archetype-builder/dependencies.html
index 50770d7..22b5c4a 100644
--- a/hbase-archetypes/hbase-archetype-builder/dependencies.html
+++ b/hbase-archetypes/hbase-archetype-builder/dependencies.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html b/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
index efffe80..9cca893 100644
--- a/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
+++ b/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-archetype-builder/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/dependency-info.html b/hbase-archetypes/hbase-archetype-builder/dependency-info.html
index 21ae699..a26e9d8 100644
--- a/hbase-archetypes/hbase-archetype-builder/dependency-info.html
+++ b/hbase-archetypes/hbase-archetype-builder/dependency-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-archetype-builder/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/dependency-management.html b/hbase-archetypes/hbase-archetype-builder/dependency-management.html
index b9b5dab..617db42 100644
--- a/hbase-archetypes/hbase-archetype-builder/dependency-management.html
+++ b/hbase-archetypes/hbase-archetype-builder/dependency-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-archetype-builder/index.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/index.html b/hbase-archetypes/hbase-archetype-builder/index.html
index e035042..9e1de4e 100644
--- a/hbase-archetypes/hbase-archetype-builder/index.html
+++ b/hbase-archetypes/hbase-archetype-builder/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-archetype-builder/integration.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/integration.html b/hbase-archetypes/hbase-archetype-builder/integration.html
index b1899f4..1260f3f 100644
--- a/hbase-archetypes/hbase-archetype-builder/integration.html
+++ b/hbase-archetypes/hbase-archetype-builder/integration.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/issue-tracking.html b/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
index f020333..f0e0056 100644
--- a/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
+++ b/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-archetype-builder/license.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/license.html b/hbase-archetypes/hbase-archetype-builder/license.html
index d966867..52e67c9 100644
--- a/hbase-archetypes/hbase-archetype-builder/license.html
+++ b/hbase-archetypes/hbase-archetype-builder/license.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-archetype-builder/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/mail-lists.html b/hbase-archetypes/hbase-archetype-builder/mail-lists.html
index 711775d..fd304df 100644
--- a/hbase-archetypes/hbase-archetype-builder/mail-lists.html
+++ b/hbase-archetypes/hbase-archetype-builder/mail-lists.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-archetype-builder/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/plugin-management.html b/hbase-archetypes/hbase-archetype-builder/plugin-management.html
index ca4a73d..1ceaa17 100644
--- a/hbase-archetypes/hbase-archetype-builder/plugin-management.html
+++ b/hbase-archetypes/hbase-archetype-builder/plugin-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-archetype-builder/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/plugins.html b/hbase-archetypes/hbase-archetype-builder/plugins.html
index dd0532a..b4bff3c 100644
--- a/hbase-archetypes/hbase-archetype-builder/plugins.html
+++ b/hbase-archetypes/hbase-archetype-builder/plugins.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-archetype-builder/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/project-info.html b/hbase-archetypes/hbase-archetype-builder/project-info.html
index 1dd359d..75f511c 100644
--- a/hbase-archetypes/hbase-archetype-builder/project-info.html
+++ b/hbase-archetypes/hbase-archetype-builder/project-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-archetype-builder/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/project-summary.html b/hbase-archetypes/hbase-archetype-builder/project-summary.html
index 679991a..5ec5143 100644
--- a/hbase-archetypes/hbase-archetype-builder/project-summary.html
+++ b/hbase-archetypes/hbase-archetype-builder/project-summary.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-archetype-builder/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/source-repository.html b/hbase-archetypes/hbase-archetype-builder/source-repository.html
index 193a4cd..60bec45 100644
--- a/hbase-archetypes/hbase-archetype-builder/source-repository.html
+++ b/hbase-archetypes/hbase-archetype-builder/source-repository.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-archetype-builder/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-archetype-builder/team-list.html b/hbase-archetypes/hbase-archetype-builder/team-list.html
index 6145d16..4805b46 100644
--- a/hbase-archetypes/hbase-archetype-builder/team-list.html
+++ b/hbase-archetypes/hbase-archetype-builder/team-list.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetype builder">Apache HBase - Archetype builder</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/checkstyle.html b/hbase-archetypes/hbase-client-project/checkstyle.html
index d44903e..7c0d628 100644
--- a/hbase-archetypes/hbase-client-project/checkstyle.html
+++ b/hbase-archetypes/hbase-client-project/checkstyle.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/dependencies.html b/hbase-archetypes/hbase-client-project/dependencies.html
index 16bacdb..368707d 100644
--- a/hbase-archetypes/hbase-client-project/dependencies.html
+++ b/hbase-archetypes/hbase-client-project/dependencies.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/dependency-convergence.html b/hbase-archetypes/hbase-client-project/dependency-convergence.html
index 0ef9eb6..317f2e8 100644
--- a/hbase-archetypes/hbase-client-project/dependency-convergence.html
+++ b/hbase-archetypes/hbase-client-project/dependency-convergence.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/dependency-info.html b/hbase-archetypes/hbase-client-project/dependency-info.html
index a0656af..4fc3607 100644
--- a/hbase-archetypes/hbase-client-project/dependency-info.html
+++ b/hbase-archetypes/hbase-client-project/dependency-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/dependency-management.html b/hbase-archetypes/hbase-client-project/dependency-management.html
index 5f9a5cf..4568b63 100644
--- a/hbase-archetypes/hbase-client-project/dependency-management.html
+++ b/hbase-archetypes/hbase-client-project/dependency-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/index.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/index.html b/hbase-archetypes/hbase-client-project/index.html
index 554dd90..cf063d6 100644
--- a/hbase-archetypes/hbase-client-project/index.html
+++ b/hbase-archetypes/hbase-client-project/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/integration.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/integration.html b/hbase-archetypes/hbase-client-project/integration.html
index 70a4962..0d54e06 100644
--- a/hbase-archetypes/hbase-client-project/integration.html
+++ b/hbase-archetypes/hbase-client-project/integration.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/issue-tracking.html b/hbase-archetypes/hbase-client-project/issue-tracking.html
index fd74787..e8a22d9 100644
--- a/hbase-archetypes/hbase-client-project/issue-tracking.html
+++ b/hbase-archetypes/hbase-client-project/issue-tracking.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/license.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/license.html b/hbase-archetypes/hbase-client-project/license.html
index c41e745..8fc671e 100644
--- a/hbase-archetypes/hbase-client-project/license.html
+++ b/hbase-archetypes/hbase-client-project/license.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/mail-lists.html b/hbase-archetypes/hbase-client-project/mail-lists.html
index 9bb27e8..08d2c6a 100644
--- a/hbase-archetypes/hbase-client-project/mail-lists.html
+++ b/hbase-archetypes/hbase-client-project/mail-lists.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/plugin-management.html b/hbase-archetypes/hbase-client-project/plugin-management.html
index e89d8ab..eac2ae5 100644
--- a/hbase-archetypes/hbase-client-project/plugin-management.html
+++ b/hbase-archetypes/hbase-client-project/plugin-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/plugins.html b/hbase-archetypes/hbase-client-project/plugins.html
index b45f238..0270fdf 100644
--- a/hbase-archetypes/hbase-client-project/plugins.html
+++ b/hbase-archetypes/hbase-client-project/plugins.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/project-info.html b/hbase-archetypes/hbase-client-project/project-info.html
index 949969b..88e3f2c 100644
--- a/hbase-archetypes/hbase-client-project/project-info.html
+++ b/hbase-archetypes/hbase-client-project/project-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/project-reports.html b/hbase-archetypes/hbase-client-project/project-reports.html
index 321a896..4769ab4 100644
--- a/hbase-archetypes/hbase-client-project/project-reports.html
+++ b/hbase-archetypes/hbase-client-project/project-reports.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/project-summary.html b/hbase-archetypes/hbase-client-project/project-summary.html
index 19e9fe8..b16e7a0 100644
--- a/hbase-archetypes/hbase-client-project/project-summary.html
+++ b/hbase-archetypes/hbase-client-project/project-summary.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>


[23/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
index 596b800..681f621 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
@@ -1456,364 +1456,366 @@
 <span class="sourceLineNo">1448</span>    synchronized (regionNode) {<a name="line.1448"></a>
 <span class="sourceLineNo">1449</span>      State state = regionNode.transitionState(State.OPEN, RegionStates.STATES_EXPECTED_ON_OPEN);<a name="line.1449"></a>
 <span class="sourceLineNo">1450</span>      if (isMetaRegion(hri)) {<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>        setMetaInitialized(hri, true);<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>      }<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>      regionStates.addRegionToServer(regionNode.getRegionLocation(), regionNode);<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>      // TODO: OPENING Updates hbase:meta too... we need to do both here and there?<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>      // That is a lot of hbase:meta writing.<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>        regionNode.getRegionLocation(), regionNode.getLastHost(), regionNode.getOpenSeqNum(),<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>        regionNode.getProcedure().getProcId());<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>      sendRegionOpenedNotification(hri, regionNode.getRegionLocation());<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>    }<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span>  }<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span><a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>  public void markRegionAsClosing(final RegionStateNode regionNode) throws IOException {<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>    final HRegionInfo hri = regionNode.getRegionInfo();<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>    synchronized (regionNode) {<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>      State state = regionNode.transitionState(State.CLOSING, RegionStates.STATES_EXPECTED_ON_CLOSE);<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>      // Set meta has not initialized early. so people trying to create/edit tables will wait<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>      if (isMetaRegion(hri)) {<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>        setMetaInitialized(hri, false);<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>      }<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>      regionStates.addRegionToServer(regionNode.getRegionLocation(), regionNode);<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>        regionNode.getRegionLocation(), regionNode.getLastHost(), HConstants.NO_SEQNUM,<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>        regionNode.getProcedure().getProcId());<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>    }<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span><a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>    // update the operation count metrics<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>    metrics.incrementOperationCounter();<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>  }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>  public void undoRegionAsClosing(final RegionStateNode regionNode) {<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>    // TODO: Metrics. Do opposite of metrics.incrementOperationCounter();<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>    // There is nothing to undo?<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>  }<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span><a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>  public void markRegionAsClosed(final RegionStateNode regionNode) throws IOException {<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>    final HRegionInfo hri = regionNode.getRegionInfo();<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>    synchronized (regionNode) {<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>      State state = regionNode.transitionState(State.CLOSED, RegionStates.STATES_EXPECTED_ON_CLOSE);<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>      regionStates.removeRegionFromServer(regionNode.getRegionLocation(), regionNode);<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>      regionNode.setLastHost(regionNode.getRegionLocation());<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>      regionNode.setRegionLocation(null);<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>        regionNode.getRegionLocation()/*null*/, regionNode.getLastHost(),<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>        HConstants.NO_SEQNUM, regionNode.getProcedure().getProcId());<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span>      sendRegionClosedNotification(hri);<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>    }<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>  }<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span><a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>  public void markRegionAsSplit(final HRegionInfo parent, final ServerName serverName,<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>      final HRegionInfo daughterA, final HRegionInfo daughterB)<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>  throws IOException {<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>    // Update hbase:meta. Parent will be marked offline and split up in hbase:meta.<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span>    // The parent stays in regionStates until cleared when removed by CatalogJanitor.<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>    // Update its state in regionStates to it shows as offline and split when read<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>    // later figuring what regions are in a table and what are not: see<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>    // regionStates#getRegionsOfTable<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>    final RegionStateNode node = regionStates.getOrCreateRegionNode(parent);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>    node.setState(State.SPLIT);<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>    regionStateStore.splitRegion(parent, daughterA, daughterB, serverName);<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>    if (shouldAssignFavoredNodes(parent)) {<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>      List&lt;ServerName&gt; onlineServers = this.master.getServerManager().getOnlineServersList();<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span>          generateFavoredNodesForDaughter(onlineServers, parent, daughterA, daughterB);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>    }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>  }<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span><a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>  /**<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>   * When called here, the merge has happened. The two merged regions have been<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>   * unassigned and the above markRegionClosed has been called on each so they have been<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>   * disassociated from a hosting Server. The merged region will be open after this call. The<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>   * merged regions are removed from hbase:meta below&gt; Later they are deleted from the filesystem<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>   * by the catalog janitor running against hbase:meta. It notices when the merged region no<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>   * longer holds references to the old regions.<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span>   */<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>  public void markRegionAsMerged(final HRegionInfo child, final ServerName serverName,<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>      final HRegionInfo mother, final HRegionInfo father) throws IOException {<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>    final RegionStateNode node = regionStates.getOrCreateRegionNode(child);<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>    node.setState(State.MERGED);<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>    regionStates.deleteRegion(mother);<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>    regionStates.deleteRegion(father);<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>    regionStateStore.mergeRegions(child, mother, father, serverName);<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>    if (shouldAssignFavoredNodes(child)) {<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>        generateFavoredNodesForMergedRegion(child, mother, father);<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>    }<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>  }<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span><a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>  /*<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>   * Favored nodes should be applied only when FavoredNodes balancer is configured and the region<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>   * belongs to a non-system table.<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>   */<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>  private boolean shouldAssignFavoredNodes(HRegionInfo region) {<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>    return this.shouldAssignRegionsWithFavoredNodes &amp;&amp;<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>        FavoredNodesManager.isFavoredNodeApplicable(region);<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>  }<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span><a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>  // ============================================================================================<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>  //  Assign Queue (Assign/Balance)<a name="line.1549"></a>
+<span class="sourceLineNo">1451</span>        master.getTableStateManager().setTableState(TableName.META_TABLE_NAME,<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>            TableState.State.ENABLED);<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>        setMetaInitialized(hri, true);<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>      }<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>      regionStates.addRegionToServer(regionNode.getRegionLocation(), regionNode);<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>      // TODO: OPENING Updates hbase:meta too... we need to do both here and there?<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span>      // That is a lot of hbase:meta writing.<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span>        regionNode.getRegionLocation(), regionNode.getLastHost(), regionNode.getOpenSeqNum(),<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>        regionNode.getProcedure().getProcId());<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>      sendRegionOpenedNotification(hri, regionNode.getRegionLocation());<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span>    }<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>  }<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span><a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>  public void markRegionAsClosing(final RegionStateNode regionNode) throws IOException {<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>    final HRegionInfo hri = regionNode.getRegionInfo();<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>    synchronized (regionNode) {<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>      State state = regionNode.transitionState(State.CLOSING, RegionStates.STATES_EXPECTED_ON_CLOSE);<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>      // Set meta has not initialized early. so people trying to create/edit tables will wait<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>      if (isMetaRegion(hri)) {<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>        setMetaInitialized(hri, false);<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>      }<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>      regionStates.addRegionToServer(regionNode.getRegionLocation(), regionNode);<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>        regionNode.getRegionLocation(), regionNode.getLastHost(), HConstants.NO_SEQNUM,<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>        regionNode.getProcedure().getProcId());<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span>    }<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span><a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>    // update the operation count metrics<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>    metrics.incrementOperationCounter();<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span>  }<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span><a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>  public void undoRegionAsClosing(final RegionStateNode regionNode) {<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>    // TODO: Metrics. Do opposite of metrics.incrementOperationCounter();<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span>    // There is nothing to undo?<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>  }<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span><a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>  public void markRegionAsClosed(final RegionStateNode regionNode) throws IOException {<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>    final HRegionInfo hri = regionNode.getRegionInfo();<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>    synchronized (regionNode) {<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>      State state = regionNode.transitionState(State.CLOSED, RegionStates.STATES_EXPECTED_ON_CLOSE);<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>      regionStates.removeRegionFromServer(regionNode.getRegionLocation(), regionNode);<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>      regionNode.setLastHost(regionNode.getRegionLocation());<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>      regionNode.setRegionLocation(null);<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>        regionNode.getRegionLocation()/*null*/, regionNode.getLastHost(),<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span>        HConstants.NO_SEQNUM, regionNode.getProcedure().getProcId());<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span>      sendRegionClosedNotification(hri);<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>    }<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>  }<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span><a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>  public void markRegionAsSplit(final HRegionInfo parent, final ServerName serverName,<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>      final HRegionInfo daughterA, final HRegionInfo daughterB)<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>  throws IOException {<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span>    // Update hbase:meta. Parent will be marked offline and split up in hbase:meta.<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>    // The parent stays in regionStates until cleared when removed by CatalogJanitor.<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>    // Update its state in regionStates to it shows as offline and split when read<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>    // later figuring what regions are in a table and what are not: see<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>    // regionStates#getRegionsOfTable<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>    final RegionStateNode node = regionStates.getOrCreateRegionNode(parent);<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>    node.setState(State.SPLIT);<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>    regionStateStore.splitRegion(parent, daughterA, daughterB, serverName);<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span>    if (shouldAssignFavoredNodes(parent)) {<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>      List&lt;ServerName&gt; onlineServers = this.master.getServerManager().getOnlineServersList();<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>          generateFavoredNodesForDaughter(onlineServers, parent, daughterA, daughterB);<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>    }<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span>  }<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span><a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>  /**<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>   * When called here, the merge has happened. The two merged regions have been<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>   * unassigned and the above markRegionClosed has been called on each so they have been<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>   * disassociated from a hosting Server. The merged region will be open after this call. The<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>   * merged regions are removed from hbase:meta below&gt; Later they are deleted from the filesystem<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span>   * by the catalog janitor running against hbase:meta. It notices when the merged region no<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span>   * longer holds references to the old regions.<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>   */<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>  public void markRegionAsMerged(final HRegionInfo child, final ServerName serverName,<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>      final HRegionInfo mother, final HRegionInfo father) throws IOException {<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>    final RegionStateNode node = regionStates.getOrCreateRegionNode(child);<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>    node.setState(State.MERGED);<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>    regionStates.deleteRegion(mother);<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>    regionStates.deleteRegion(father);<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>    regionStateStore.mergeRegions(child, mother, father, serverName);<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>    if (shouldAssignFavoredNodes(child)) {<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>        generateFavoredNodesForMergedRegion(child, mother, father);<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span>    }<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>  }<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span><a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>  /*<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>   * Favored nodes should be applied only when FavoredNodes balancer is configured and the region<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>   * belongs to a non-system table.<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>   */<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>  private boolean shouldAssignFavoredNodes(HRegionInfo region) {<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>    return this.shouldAssignRegionsWithFavoredNodes &amp;&amp;<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>        FavoredNodesManager.isFavoredNodeApplicable(region);<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>  }<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span><a name="line.1549"></a>
 <span class="sourceLineNo">1550</span>  // ============================================================================================<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>  private final ArrayList&lt;RegionStateNode&gt; pendingAssignQueue = new ArrayList&lt;RegionStateNode&gt;();<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>  private final ReentrantLock assignQueueLock = new ReentrantLock();<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>  private final Condition assignQueueFullCond = assignQueueLock.newCondition();<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span><a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>  /**<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>   * Add the assign operation to the assignment queue.<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>   * The pending assignment operation will be processed,<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>   * and each region will be assigned by a server using the balancer.<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>   */<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>  protected void queueAssign(final RegionStateNode regionNode) {<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span>    getProcedureScheduler().suspendEvent(regionNode.getProcedureEvent());<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span><a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>    // TODO: quick-start for meta and the other sys-tables?<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>    assignQueueLock.lock();<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>    try {<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>      pendingAssignQueue.add(regionNode);<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>      if (regionNode.isSystemTable() ||<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>          pendingAssignQueue.size() == 1 ||<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>          pendingAssignQueue.size() &gt;= assignDispatchWaitQueueMaxSize) {<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>        assignQueueFullCond.signal();<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>      }<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>    } finally {<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>      assignQueueLock.unlock();<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>    }<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>  }<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span><a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>  private void startAssignmentThread() {<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>    assignThread = new Thread("AssignmentThread") {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>      @Override<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>      public void run() {<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>        while (isRunning()) {<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>          processAssignQueue();<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>        }<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>        pendingAssignQueue.clear();<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>      }<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>    };<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>    assignThread.start();<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>  }<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span><a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>  private void stopAssignmentThread() {<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>    assignQueueSignal();<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>    try {<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>      while (assignThread.isAlive()) {<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>        assignQueueSignal();<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>        assignThread.join(250);<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>      }<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>    } catch (InterruptedException e) {<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>      LOG.warn("join interrupted", e);<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>      Thread.currentThread().interrupt();<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>    }<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>  }<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span><a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>  private void assignQueueSignal() {<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>    assignQueueLock.lock();<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>    try {<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>      assignQueueFullCond.signal();<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>    } finally {<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span>      assignQueueLock.unlock();<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>    }<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>  }<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span><a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings("WA_AWAIT_NOT_IN_LOOP")<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>  private HashMap&lt;HRegionInfo, RegionStateNode&gt; waitOnAssignQueue() {<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>    HashMap&lt;HRegionInfo, RegionStateNode&gt; regions = null;<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span><a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>    assignQueueLock.lock();<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>    try {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>      if (pendingAssignQueue.isEmpty() &amp;&amp; isRunning()) {<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        assignQueueFullCond.await();<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>      }<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span><a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>      if (!isRunning()) return null;<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>      assignQueueFullCond.await(assignDispatchWaitMillis, TimeUnit.MILLISECONDS);<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>      regions = new HashMap&lt;HRegionInfo, RegionStateNode&gt;(pendingAssignQueue.size());<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>      for (RegionStateNode regionNode: pendingAssignQueue) {<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>        regions.put(regionNode.getRegionInfo(), regionNode);<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>      }<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>      pendingAssignQueue.clear();<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>    } catch (InterruptedException e) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>      LOG.warn("got interrupted ", e);<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>      Thread.currentThread().interrupt();<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>    } finally {<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>      assignQueueLock.unlock();<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>    }<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>    return regions;<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>  }<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span><a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>  private void processAssignQueue() {<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>    final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions = waitOnAssignQueue();<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>    if (regions == null || regions.size() == 0 || !isRunning()) {<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>      return;<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>    }<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span><a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>    if (LOG.isTraceEnabled()) {<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>      LOG.trace("PROCESS ASSIGN QUEUE regionCount=" + regions.size());<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span>    }<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span><a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>    // TODO: Optimize balancer. pass a RegionPlan?<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span>    final HashMap&lt;HRegionInfo, ServerName&gt; retainMap = new HashMap&lt;HRegionInfo, ServerName&gt;();<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span>    final List&lt;HRegionInfo&gt; rrList = new ArrayList&lt;HRegionInfo&gt;();<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span>    for (RegionStateNode regionNode: regions.values()) {<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>      if (regionNode.getRegionLocation() != null) {<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>        retainMap.put(regionNode.getRegionInfo(), regionNode.getRegionLocation());<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>      } else {<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>        rrList.add(regionNode.getRegionInfo());<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span>      }<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>    }<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span><a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>    // TODO: connect with the listener to invalidate the cache<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>    final LoadBalancer balancer = getBalancer();<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span><a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>    // TODO use events<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>    List&lt;ServerName&gt; servers = master.getServerManager().createDestinationServersList();<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>    for (int i = 0; servers.size() &lt; 1; ++i) {<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>      if (i % 4 == 0) {<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>        LOG.warn("no server available, unable to find a location for " + regions.size() +<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span>            " unassigned regions. waiting");<a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>      }<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span><a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>      // the was AM killed<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>      if (!isRunning()) {<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>        LOG.debug("aborting assignment-queue with " + regions.size() + " not assigned");<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>        return;<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>      }<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span><a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>      Threads.sleep(250);<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>      servers = master.getServerManager().createDestinationServersList();<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>    }<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span><a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>    final boolean isTraceEnabled = LOG.isTraceEnabled();<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span>    if (isTraceEnabled) {<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>      LOG.trace("available servers count=" + servers.size() + ": " + servers);<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>    }<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span><a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>    // ask the balancer where to place regions<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>    if (!retainMap.isEmpty()) {<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>      if (isTraceEnabled) {<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>        LOG.trace("retain assign regions=" + retainMap);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>      }<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>      try {<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span>        acceptPlan(regions, balancer.retainAssignment(retainMap, servers));<a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>      } catch (HBaseIOException e) {<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>        LOG.warn("unable to retain assignment", e);<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>        addToPendingAssignment(regions, retainMap.keySet());<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span>      }<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>    }<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span><a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>    // TODO: Do we need to split retain and round-robin?<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span>    // the retain seems to fallback to round-robin/random if the region is not in the map.<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span>    if (!rrList.isEmpty()) {<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>      Collections.sort(rrList);<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>      if (isTraceEnabled) {<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>        LOG.trace("round robin regions=" + rrList);<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>      }<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>      try {<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span>        acceptPlan(regions, balancer.roundRobinAssignment(rrList, servers));<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>      } catch (HBaseIOException e) {<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span>        LOG.warn("unable to round-robin assignment", e);<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>        addToPendingAssignment(regions, rrList);<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>      }<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>    }<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>  }<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span><a name="line.1713"></a>
-<span class="sourceLineNo">1714</span>  private void acceptPlan(final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions,<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      final Map&lt;ServerName, List&lt;HRegionInfo&gt;&gt; plan) throws HBaseIOException {<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>    final ProcedureEvent[] events = new ProcedureEvent[regions.size()];<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>    final long st = System.currentTimeMillis();<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span><a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>    if (plan == null) {<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span>      throw new HBaseIOException("unable to compute plans for regions=" + regions.size());<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>    }<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span><a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    if (plan.isEmpty()) return;<a name="line.1723"></a>
+<span class="sourceLineNo">1551</span>  //  Assign Queue (Assign/Balance)<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>  // ============================================================================================<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>  private final ArrayList&lt;RegionStateNode&gt; pendingAssignQueue = new ArrayList&lt;RegionStateNode&gt;();<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>  private final ReentrantLock assignQueueLock = new ReentrantLock();<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span>  private final Condition assignQueueFullCond = assignQueueLock.newCondition();<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span><a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>  /**<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>   * Add the assign operation to the assignment queue.<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>   * The pending assignment operation will be processed,<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>   * and each region will be assigned by a server using the balancer.<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>   */<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>  protected void queueAssign(final RegionStateNode regionNode) {<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>    getProcedureScheduler().suspendEvent(regionNode.getProcedureEvent());<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span><a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>    // TODO: quick-start for meta and the other sys-tables?<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>    assignQueueLock.lock();<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>    try {<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>      pendingAssignQueue.add(regionNode);<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>      if (regionNode.isSystemTable() ||<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>          pendingAssignQueue.size() == 1 ||<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>          pendingAssignQueue.size() &gt;= assignDispatchWaitQueueMaxSize) {<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>        assignQueueFullCond.signal();<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>      }<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>    } finally {<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>      assignQueueLock.unlock();<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    }<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>  }<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span><a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>  private void startAssignmentThread() {<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>    assignThread = new Thread("AssignmentThread") {<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>      @Override<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>      public void run() {<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>        while (isRunning()) {<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>          processAssignQueue();<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>        }<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>        pendingAssignQueue.clear();<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>      }<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>    };<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>    assignThread.start();<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span>  }<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span><a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>  private void stopAssignmentThread() {<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>    assignQueueSignal();<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>    try {<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>      while (assignThread.isAlive()) {<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>        assignQueueSignal();<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>        assignThread.join(250);<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>      }<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span>    } catch (InterruptedException e) {<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>      LOG.warn("join interrupted", e);<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>      Thread.currentThread().interrupt();<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>    }<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>  }<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span><a name="line.1604"></a>
+<span class="sourceLineNo">1605</span>  private void assignQueueSignal() {<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span>    assignQueueLock.lock();<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>    try {<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>      assignQueueFullCond.signal();<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>    } finally {<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>      assignQueueLock.unlock();<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>    }<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>  }<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span><a name="line.1613"></a>
+<span class="sourceLineNo">1614</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings("WA_AWAIT_NOT_IN_LOOP")<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span>  private HashMap&lt;HRegionInfo, RegionStateNode&gt; waitOnAssignQueue() {<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span>    HashMap&lt;HRegionInfo, RegionStateNode&gt; regions = null;<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span><a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>    assignQueueLock.lock();<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>    try {<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>      if (pendingAssignQueue.isEmpty() &amp;&amp; isRunning()) {<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>        assignQueueFullCond.await();<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>      }<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span><a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>      if (!isRunning()) return null;<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>      assignQueueFullCond.await(assignDispatchWaitMillis, TimeUnit.MILLISECONDS);<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span>      regions = new HashMap&lt;HRegionInfo, RegionStateNode&gt;(pendingAssignQueue.size());<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>      for (RegionStateNode regionNode: pendingAssignQueue) {<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span>        regions.put(regionNode.getRegionInfo(), regionNode);<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span>      }<a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>      pendingAssignQueue.clear();<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>    } catch (InterruptedException e) {<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span>      LOG.warn("got interrupted ", e);<a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>      Thread.currentThread().interrupt();<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>    } finally {<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>      assignQueueLock.unlock();<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span>    }<a name="line.1636"></a>
+<span class="sourceLineNo">1637</span>    return regions;<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span>  }<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span><a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>  private void processAssignQueue() {<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span>    final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions = waitOnAssignQueue();<a name="line.1641"></a>
+<span class="sourceLineNo">1642</span>    if (regions == null || regions.size() == 0 || !isRunning()) {<a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>      return;<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>    }<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span><a name="line.1645"></a>
+<span class="sourceLineNo">1646</span>    if (LOG.isTraceEnabled()) {<a name="line.1646"></a>
+<span class="sourceLineNo">1647</span>      LOG.trace("PROCESS ASSIGN QUEUE regionCount=" + regions.size());<a name="line.1647"></a>
+<span class="sourceLineNo">1648</span>    }<a name="line.1648"></a>
+<span class="sourceLineNo">1649</span><a name="line.1649"></a>
+<span class="sourceLineNo">1650</span>    // TODO: Optimize balancer. pass a RegionPlan?<a name="line.1650"></a>
+<span class="sourceLineNo">1651</span>    final HashMap&lt;HRegionInfo, ServerName&gt; retainMap = new HashMap&lt;HRegionInfo, ServerName&gt;();<a name="line.1651"></a>
+<span class="sourceLineNo">1652</span>    final List&lt;HRegionInfo&gt; rrList = new ArrayList&lt;HRegionInfo&gt;();<a name="line.1652"></a>
+<span class="sourceLineNo">1653</span>    for (RegionStateNode regionNode: regions.values()) {<a name="line.1653"></a>
+<span class="sourceLineNo">1654</span>      if (regionNode.getRegionLocation() != null) {<a name="line.1654"></a>
+<span class="sourceLineNo">1655</span>        retainMap.put(regionNode.getRegionInfo(), regionNode.getRegionLocation());<a name="line.1655"></a>
+<span class="sourceLineNo">1656</span>      } else {<a name="line.1656"></a>
+<span class="sourceLineNo">1657</span>        rrList.add(regionNode.getRegionInfo());<a name="line.1657"></a>
+<span class="sourceLineNo">1658</span>      }<a name="line.1658"></a>
+<span class="sourceLineNo">1659</span>    }<a name="line.1659"></a>
+<span class="sourceLineNo">1660</span><a name="line.1660"></a>
+<span class="sourceLineNo">1661</span>    // TODO: connect with the listener to invalidate the cache<a name="line.1661"></a>
+<span class="sourceLineNo">1662</span>    final LoadBalancer balancer = getBalancer();<a name="line.1662"></a>
+<span class="sourceLineNo">1663</span><a name="line.1663"></a>
+<span class="sourceLineNo">1664</span>    // TODO use events<a name="line.1664"></a>
+<span class="sourceLineNo">1665</span>    List&lt;ServerName&gt; servers = master.getServerManager().createDestinationServersList();<a name="line.1665"></a>
+<span class="sourceLineNo">1666</span>    for (int i = 0; servers.size() &lt; 1; ++i) {<a name="line.1666"></a>
+<span class="sourceLineNo">1667</span>      if (i % 4 == 0) {<a name="line.1667"></a>
+<span class="sourceLineNo">1668</span>        LOG.warn("no server available, unable to find a location for " + regions.size() +<a name="line.1668"></a>
+<span class="sourceLineNo">1669</span>            " unassigned regions. waiting");<a name="line.1669"></a>
+<span class="sourceLineNo">1670</span>      }<a name="line.1670"></a>
+<span class="sourceLineNo">1671</span><a name="line.1671"></a>
+<span class="sourceLineNo">1672</span>      // the was AM killed<a name="line.1672"></a>
+<span class="sourceLineNo">1673</span>      if (!isRunning()) {<a name="line.1673"></a>
+<span class="sourceLineNo">1674</span>        LOG.debug("aborting assignment-queue with " + regions.size() + " not assigned");<a name="line.1674"></a>
+<span class="sourceLineNo">1675</span>        return;<a name="line.1675"></a>
+<span class="sourceLineNo">1676</span>      }<a name="line.1676"></a>
+<span class="sourceLineNo">1677</span><a name="line.1677"></a>
+<span class="sourceLineNo">1678</span>      Threads.sleep(250);<a name="line.1678"></a>
+<span class="sourceLineNo">1679</span>      servers = master.getServerManager().createDestinationServersList();<a name="line.1679"></a>
+<span class="sourceLineNo">1680</span>    }<a name="line.1680"></a>
+<span class="sourceLineNo">1681</span><a name="line.1681"></a>
+<span class="sourceLineNo">1682</span>    final boolean isTraceEnabled = LOG.isTraceEnabled();<a name="line.1682"></a>
+<span class="sourceLineNo">1683</span>    if (isTraceEnabled) {<a name="line.1683"></a>
+<span class="sourceLineNo">1684</span>      LOG.trace("available servers count=" + servers.size() + ": " + servers);<a name="line.1684"></a>
+<span class="sourceLineNo">1685</span>    }<a name="line.1685"></a>
+<span class="sourceLineNo">1686</span><a name="line.1686"></a>
+<span class="sourceLineNo">1687</span>    // ask the balancer where to place regions<a name="line.1687"></a>
+<span class="sourceLineNo">1688</span>    if (!retainMap.isEmpty()) {<a name="line.1688"></a>
+<span class="sourceLineNo">1689</span>      if (isTraceEnabled) {<a name="line.1689"></a>
+<span class="sourceLineNo">1690</span>        LOG.trace("retain assign regions=" + retainMap);<a name="line.1690"></a>
+<span class="sourceLineNo">1691</span>      }<a name="line.1691"></a>
+<span class="sourceLineNo">1692</span>      try {<a name="line.1692"></a>
+<span class="sourceLineNo">1693</span>        acceptPlan(regions, balancer.retainAssignment(retainMap, servers));<a name="line.1693"></a>
+<span class="sourceLineNo">1694</span>      } catch (HBaseIOException e) {<a name="line.1694"></a>
+<span class="sourceLineNo">1695</span>        LOG.warn("unable to retain assignment", e);<a name="line.1695"></a>
+<span class="sourceLineNo">1696</span>        addToPendingAssignment(regions, retainMap.keySet());<a name="line.1696"></a>
+<span class="sourceLineNo">1697</span>      }<a name="line.1697"></a>
+<span class="sourceLineNo">1698</span>    }<a name="line.1698"></a>
+<span class="sourceLineNo">1699</span><a name="line.1699"></a>
+<span class="sourceLineNo">1700</span>    // TODO: Do we need to split retain and round-robin?<a name="line.1700"></a>
+<span class="sourceLineNo">1701</span>    // the retain seems to fallback to round-robin/random if the region is not in the map.<a name="line.1701"></a>
+<span class="sourceLineNo">1702</span>    if (!rrList.isEmpty()) {<a name="line.1702"></a>
+<span class="sourceLineNo">1703</span>      Collections.sort(rrList);<a name="line.1703"></a>
+<span class="sourceLineNo">1704</span>      if (isTraceEnabled) {<a name="line.1704"></a>
+<span class="sourceLineNo">1705</span>        LOG.trace("round robin regions=" + rrList);<a name="line.1705"></a>
+<span class="sourceLineNo">1706</span>      }<a name="line.1706"></a>
+<span class="sourceLineNo">1707</span>      try {<a name="line.1707"></a>
+<span class="sourceLineNo">1708</span>        acceptPlan(regions, balancer.roundRobinAssignment(rrList, servers));<a name="line.1708"></a>
+<span class="sourceLineNo">1709</span>      } catch (HBaseIOException e) {<a name="line.1709"></a>
+<span class="sourceLineNo">1710</span>        LOG.warn("unable to round-robin assignment", e);<a name="line.1710"></a>
+<span class="sourceLineNo">1711</span>        addToPendingAssignment(regions, rrList);<a name="line.1711"></a>
+<span class="sourceLineNo">1712</span>      }<a name="line.1712"></a>
+<span class="sourceLineNo">1713</span>    }<a name="line.1713"></a>
+<span class="sourceLineNo">1714</span>  }<a name="line.1714"></a>
+<span class="sourceLineNo">1715</span><a name="line.1715"></a>
+<span class="sourceLineNo">1716</span>  private void acceptPlan(final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions,<a name="line.1716"></a>
+<span class="sourceLineNo">1717</span>      final Map&lt;ServerName, List&lt;HRegionInfo&gt;&gt; plan) throws HBaseIOException {<a name="line.1717"></a>
+<span class="sourceLineNo">1718</span>    final ProcedureEvent[] events = new ProcedureEvent[regions.size()];<a name="line.1718"></a>
+<span class="sourceLineNo">1719</span>    final long st = System.currentTimeMillis();<a name="line.1719"></a>
+<span class="sourceLineNo">1720</span><a name="line.1720"></a>
+<span class="sourceLineNo">1721</span>    if (plan == null) {<a name="line.1721"></a>
+<span class="sourceLineNo">1722</span>      throw new HBaseIOException("unable to compute plans for regions=" + regions.size());<a name="line.1722"></a>
+<span class="sourceLineNo">1723</span>    }<a name="line.1723"></a>
 <span class="sourceLineNo">1724</span><a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>    int evcount = 0;<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span>    for (Map.Entry&lt;ServerName, List&lt;HRegionInfo&gt;&gt; entry: plan.entrySet()) {<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>      final ServerName server = entry.getKey();<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span>      for (HRegionInfo hri: entry.getValue()) {<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>        final RegionStateNode regionNode = regions.get(hri);<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>        regionNode.setRegionLocation(server);<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>        events[evcount++] = regionNode.getProcedureEvent();<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>      }<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span>    }<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>    getProcedureScheduler().wakeEvents(evcount, events);<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span><a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>    final long et = System.currentTimeMillis();<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    if (LOG.isTraceEnabled()) {<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span>      LOG.trace("ASSIGN ACCEPT " + events.length + " -&gt; " +<a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>          StringUtils.humanTimeDiff(et - st));<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>    }<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>  }<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span><a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>  private void addToPendingAssignment(final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions,<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>      final Collection&lt;HRegionInfo&gt; pendingRegions) {<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>    assignQueueLock.lock();<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>    try {<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>      for (HRegionInfo hri: pendingRegions) {<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>        pendingAssignQueue.add(regions.get(hri));<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span>      }<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>    } finally {<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span>      assignQueueLock.unlock();<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>    }<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>  }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>  /**<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>   * Get a list of servers that this region can not assign to.<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>   * For system table, we must assign them to a server with highest version.<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>   */<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>  public List&lt;ServerName&gt; getExcludedServersForSystemTable() {<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span>    List&lt;Pair&lt;ServerName, String&gt;&gt; serverList = master.getServerManager().getOnlineServersList()<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>        .stream()<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>        .map((s)-&gt;new Pair&lt;&gt;(s, master.getRegionServerVersion(s)))<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>        .collect(Collectors.toList());<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>    if (serverList.isEmpty()) {<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span>      return new ArrayList&lt;&gt;();<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>    }<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>    String highestVersion = Collections.max(serverList,<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>        (o1, o2) -&gt; VersionInfo.compareVersion(o1.getSecond(), o2.getSecond())).getSecond();<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>    return serverList.stream()<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span>        .filter((p)-&gt;!p.getSecond().equals(highestVersion))<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>        .map(Pair::getFirst)<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>        .collect(Collectors.toList());<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>  }<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span><a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>  // ============================================================================================<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span>  //  Server Helpers<a name="line.1776"></a>
+<span class="sourceLineNo">1725</span>    if (plan.isEmpty()) return;<a name="line.1725"></a>
+<span class="sourceLineNo">1726</span><a name="line.1726"></a>
+<span class="sourceLineNo">1727</span>    int evcount = 0;<a name="line.1727"></a>
+<span class="sourceLineNo">1728</span>    for (Map.Entry&lt;ServerName, List&lt;HRegionInfo&gt;&gt; entry: plan.entrySet()) {<a name="line.1728"></a>
+<span class="sourceLineNo">1729</span>      final ServerName server = entry.getKey();<a name="line.1729"></a>
+<span class="sourceLineNo">1730</span>      for (HRegionInfo hri: entry.getValue()) {<a name="line.1730"></a>
+<span class="sourceLineNo">1731</span>        final RegionStateNode regionNode = regions.get(hri);<a name="line.1731"></a>
+<span class="sourceLineNo">1732</span>        regionNode.setRegionLocation(server);<a name="line.1732"></a>
+<span class="sourceLineNo">1733</span>        events[evcount++] = regionNode.getProcedureEvent();<a name="line.1733"></a>
+<span class="sourceLineNo">1734</span>      }<a name="line.1734"></a>
+<span class="sourceLineNo">1735</span>    }<a name="line.1735"></a>
+<span class="sourceLineNo">1736</span>    getProcedureScheduler().wakeEvents(evcount, events);<a name="line.1736"></a>
+<span class="sourceLineNo">1737</span><a name="line.1737"></a>
+<span class="sourceLineNo">1738</span>    final long et = System.currentTimeMillis();<a name="line.1738"></a>
+<span class="sourceLineNo">1739</span>    if (LOG.isTraceEnabled()) {<a name="line.1739"></a>
+<span class="sourceLineNo">1740</span>      LOG.trace("ASSIGN ACCEPT " + events.length + " -&gt; " +<a name="line.1740"></a>
+<span class="sourceLineNo">1741</span>          StringUtils.humanTimeDiff(et - st));<a name="line.1741"></a>
+<span class="sourceLineNo">1742</span>    }<a name="line.1742"></a>
+<span class="sourceLineNo">1743</span>  }<a name="line.1743"></a>
+<span class="sourceLineNo">1744</span><a name="line.1744"></a>
+<span class="sourceLineNo">1745</span>  private void addToPendingAssignment(final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions,<a name="line.1745"></a>
+<span class="sourceLineNo">1746</span>      final Collection&lt;HRegionInfo&gt; pendingRegions) {<a name="line.1746"></a>
+<span class="sourceLineNo">1747</span>    assignQueueLock.lock();<a name="line.1747"></a>
+<span class="sourceLineNo">1748</span>    try {<a name="line.1748"></a>
+<span class="sourceLineNo">1749</span>      for (HRegionInfo hri: pendingRegions) {<a name="line.1749"></a>
+<span class="sourceLineNo">1750</span>        pendingAssignQueue.add(regions.get(hri));<a name="line.1750"></a>
+<span class="sourceLineNo">1751</span>      }<a name="line.1751"></a>
+<span class="sourceLineNo">1752</span>    } finally {<a name="line.1752"></a>
+<span class="sourceLineNo">1753</span>      assignQueueLock.unlock();<a name="line.1753"></a>
+<span class="sourceLineNo">1754</span>    }<a name="line.1754"></a>
+<span class="sourceLineNo">1755</span>  }<a name="line.1755"></a>
+<span class="sourceLineNo">1756</span><a name="line.1756"></a>
+<span class="sourceLineNo">1757</span>  /**<a name="line.1757"></a>
+<span class="sourceLineNo">1758</span>   * Get a list of servers that this region can not assign to.<a name="line.1758"></a>
+<span class="sourceLineNo">1759</span>   * For system table, we must assign them to a server with highest version.<a name="line.1759"></a>
+<span class="sourceLineNo">1760</span>   */<a name="line.1760"></a>
+<span class="sourceLineNo">1761</span>  public List&lt;ServerName&gt; getExcludedServersForSystemTable() {<a name="line.1761"></a>
+<span class="sourceLineNo">1762</span>    List&lt;Pair&lt;ServerName, String&gt;&gt; serverList = master.getServerManager().getOnlineServersList()<a name="line.1762"></a>
+<span class="sourceLineNo">1763</span>        .stream()<a name="line.1763"></a>
+<span class="sourceLineNo">1764</span>        .map((s)-&gt;new Pair&lt;&gt;(s, master.getRegionServerVersion(s)))<a name="line.1764"></a>
+<span class="sourceLineNo">1765</span>        .collect(Collectors.toList());<a name="line.1765"></a>
+<span class="sourceLineNo">1766</span>    if (serverList.isEmpty()) {<a name="line.1766"></a>
+<span class="sourceLineNo">1767</span>      return new ArrayList&lt;&gt;();<a name="line.1767"></a>
+<span class="sourceLineNo">1768</span>    }<a name="line.1768"></a>
+<span class="sourceLineNo">1769</span>    String highestVersion = Collections.max(serverList,<a name="line.1769"></a>
+<span class="sourceLineNo">1770</span>        (o1, o2) -&gt; VersionInfo.compareVersion(o1.getSecond(), o2.getSecond())).getSecond();<a name="line.1770"></a>
+<span class="sourceLineNo">1771</span>    return serverList.stream()<a name="line.1771"></a>
+<span class="sourceLineNo">1772</span>        .filter((p)-&gt;!p.getSecond().equals(highestVersion))<a name="line.1772"></a>
+<span class="sourceLineNo">1773</span>        .map(Pair::getFirst)<a name="line.1773"></a>
+<span class="sourceLineNo">1774</span>        .collect(Collectors.toList());<a name="line.1774"></a>
+<span class="sourceLineNo">1775</span>  }<a name="line.1775"></a>
+<span class="sourceLineNo">1776</span><a name="line.1776"></a>
 <span class="sourceLineNo">1777</span>  // ============================================================================================<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>  @Override<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>  public void serverAdded(final ServerName serverName) {<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span>  }<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span><a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>  @Override<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>  public void serverRemoved(final ServerName serverName) {<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span>    final ServerStateNode serverNode = regionStates.getServerNode(serverName);<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>    if (serverNode == null) return;<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span><a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>    // just in case, wake procedures waiting for this server report<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>    wakeServerReportEvent(serverNode);<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span>  }<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span><a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>  public int getServerVersion(final ServerName serverName) {<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span>    final ServerStateNode node = regionStates.getServerNode(serverName);<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>    return node != null ? node.getVersionNumber() : 0;<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>  }<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span><a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>  public void killRegionServer(final ServerName serverName) {<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>    final ServerStateNode serverNode = regionStates.getServerNode(serverName);<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>    killRegionServer(serverNode);<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>  }<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span><a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>  public void killRegionServer(final ServerStateNode serverNode) {<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span>    /** Don't do this. Messes up accounting. Let ServerCrashProcedure do this.<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span>    for (RegionStateNode regionNode: serverNode.getRegions()) {<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>      regionNode.offline();<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>    }*/<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>    master.getServerManager().expireServer(serverNode.getServerName());<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>  }<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span>}<a name="line.1808"></a>
+<span class="sourceLineNo">1778</span>  //  Server Helpers<a name="line.1778"></a>
+<span class="sourceLineNo">1779</span>  // ============================================================================================<a name="line.1779"></a>
+<span class="sourceLineNo">1780</span>  @Override<a name="line.1780"></a>
+<span class="sourceLineNo">1781</span>  public void serverAdded(final ServerName serverName) {<a name="line.1781"></a>
+<span class="sourceLineNo">1782</span>  }<a name="line.1782"></a>
+<span class="sourceLineNo">1783</span><a name="line.1783"></a>
+<span class="sourceLineNo">1784</span>  @Override<a name="line.1784"></a>
+<span class="sourceLineNo">1785</span>  public void serverRemoved(final ServerName serverName) {<a name="line.1785"></a>
+<span class="sourceLineNo">1786</span>    final ServerStateNode serverNode = regionStates.getServerNode(serverName);<a name="line.1786"></a>
+<span class="sourceLineNo">1787</span>    if (serverNode == null) return;<a name="line.1787"></a>
+<span class="sourceLineNo">1788</span><a name="line.1788"></a>
+<span class="sourceLineNo">1789</span>    // just in case, wake procedures waiting for this server report<a name="line.1789"></a>
+<span class="sourceLineNo">1790</span>    wakeServerReportEvent(serverNode);<a name="line.1790"></a>
+<span class="sourceLineNo">1791</span>  }<a name="line.1791"></a>
+<span class="sourceLineNo">1792</span><a name="line.1792"></a>
+<span class="sourceLineNo">1793</span>  public int getServerVersion(final ServerName serverName) {<a name="line.1793"></a>
+<span class="sourceLineNo">1794</span>    final ServerStateNode node = regionStates.getServerNode(serverName);<a name="line.1794"></a>
+<span class="sourceLineNo">1795</span>    return node != null ? node.getVersionNumber() : 0;<a name="line.1795"></a>
+<span class="sourceLineNo">1796</span>  }<a name="line.1796"></a>
+<span class="sourceLineNo">1797</span><a name="line.1797"></a>
+<span class="sourceLineNo">1798</span>  public void killRegionServer(final ServerName serverName) {<a name="line.1798"></a>
+<span class="sourceLineNo">1799</span>    final ServerStateNode serverNode = regionStates.getServerNode(serverName);<a name="line.1799"></a>
+<span class="sourceLineNo">1800</span>    killRegionServer(serverNode);<a name="line.1800"></a>
+<span class="sourceLineNo">1801</span>  }<a name="line.1801"></a>
+<span class="sourceLineNo">1802</span><a name="line.1802"></a>
+<span class="sourceLineNo">1803</span>  public void killRegionServer(final ServerStateNode serverNode) {<a name="line.1803"></a>
+<span class="sourceLineNo">1804</span>    /** Don't do this. Messes up accounting. Let ServerCrashProcedure do this.<a name="line.1804"></a>
+<span class="sourceLineNo">1805</span>    for (RegionStateNode regionNode: serverNode.getRegions()) {<a name="line.1805"></a>
+<span class="sourceLineNo">1806</span>      regionNode.offline();<a name="line.1806"></a>
+<span class="sourceLineNo">1807</span>    }*/<a name="line.1807"></a>
+<span class="sourceLineNo">1808</span>    master.getServerManager().expireServer(serverNode.getServerName());<a name="line.1808"></a>
+<span class="sourceLineNo">1809</span>  }<a name="line.1809"></a>
+<span class="sourceLineNo">1810</span>}<a name="line.1810"></a>
 
 
 


[31/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/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 9e50a7f..0435aa0 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
@@ -934,12 +934,16 @@
 <td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</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">
+<td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a></code></td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</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">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">CloneSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html#addRegionsToMeta-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">addRegionsToMeta</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 regions to hbase:meta table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><span class="typeNameLabel">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#addRegionsToMeta-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.HTableDescriptor-java.util.List-">addRegionsToMeta</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/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;hTableDescriptor,
@@ -947,7 +951,7 @@
 <div class="block">Add the specified set of regions to the hbase:meta table.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#addReplicas-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.HTableDescriptor-java.util.List-">addReplicas</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/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;hTableDescriptor,
@@ -956,35 +960,35 @@
  already created is passed to the method)</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#addTableToMeta-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.HTableDescriptor-java.util.List-">addTableToMeta</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/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;hTableDescriptor,
               <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&nbsp;regions)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionRequest</code></td>
 <td class="colLast"><span class="typeNameLabel">RSProcedureDispatcher.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html#buildOpenRegionRequest-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-java.util.List-">buildOpenRegionRequest</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="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOpenOperation.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher.RegionOpenOperation</a>&gt;&nbsp;operations)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionRequest.RegionOpenInfo</code></td>
 <td class="colLast"><span class="typeNameLabel">RSProcedureDispatcher.RegionOpenOperation.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOpenOperation.html#buildRegionOpenInfoRequest-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">buildRegionOpenInfoRequest</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">AbstractStateMachineRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html#checkTableModifiable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">checkTableModifiable</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 a table is modifiable - exists and either offline or online with config set</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractStateMachineTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#checkTableModifiable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">checkTableModifiable</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 a table is modifiable - exists and either offline or online with config set</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><span class="typeNameLabel">DeleteTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html#cleanAnyRemainingRows-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.TableName-">cleanAnyRemainingRows</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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
@@ -992,18 +996,22 @@
  info:regioninfo column was empty because of some write error.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup</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">AddColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup</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 void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup</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">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup</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">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup</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>
@@ -1214,80 +1222,85 @@
 </tr>
 <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">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">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.RecoverMetaState&nbsp;state)</code>&nbsp;</td>
+</tr>
+<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">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RestoreSnapshotState-">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.RestoreSnapshotState&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">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState-">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.ServerCrashState&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">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.TruncateTableState-">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.TruncateTableState&nbsp;state)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../../../org/apache/hadoop/hbase/quotas/MasterQuotaManager.html" title="class in org.apache.hadoop.hbase.quotas">MasterQuotaManager</a></code></td>
 <td class="colLast"><span class="typeNameLabel">ProcedureSyncWait.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.html#getMasterQuotaManager-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getMasterQuotaManager</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">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.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>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">AddColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.html#getRegionInfoList-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getRegionInfoList</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="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#getRegionInfoList-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getRegionInfoList</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 <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">DeleteColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.html#getRegionInfoList-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getRegionInfoList</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 static <a href="../../../../../../../org/apache/hadoop/hbase/master/TableNamespaceManager.html" title="class in org.apache.hadoop.hbase.master">TableNamespaceManager</a></code></td>
 <td class="colLast"><span class="typeNameLabel">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#getTableNamespaceManager-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getTableNamespaceManager</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 static <a href="../../../../../../../org/apache/hadoop/hbase/master/TableNamespaceManager.html" title="class in org.apache.hadoop.hbase.master">TableNamespaceManager</a></code></td>
 <td class="colLast"><span class="typeNameLabel">CreateNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html#getTableNamespaceManager-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getTableNamespaceManager</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/master/TableNamespaceManager.html" title="class in org.apache.hadoop.hbase.master">TableNamespaceManager</a></code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#getTableNamespaceManager-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getTableNamespaceManager</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">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#handleRIT-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-java.util.List-">handleRIT</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="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&nbsp;regions)</code>
 <div class="block">Handle any outstanding RIT that are up against this.serverName, the crashed server.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractStateMachineRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html#hasLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">hasLock</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">AbstractStateMachineRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.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 void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#insertIntoNSTable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">insertIntoNSTable</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">Insert/update the row into namespace table</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static void</code></td>
 <td class="colLast"><span class="typeNameLabel">CreateNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html#insertIntoNSTable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.NamespaceDescriptor-">insertIntoNSTable</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/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&nbsp;nsDescriptor)</code>
 <div class="block">Insert the row into ns table</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#isYieldBeforeExecuteFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState-">isYieldBeforeExecuteFromState</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.ServerCrashState&nbsp;state)</code>
@@ -1296,128 +1309,134 @@
  before we move to the next.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static void</code></td>
 <td class="colLast"><span class="typeNameLabel">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#moveTempDirectoryToHBaseRoot-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.HTableDescriptor-org.apache.hadoop.fs.Path-">moveTempDirectoryToHBaseRoot</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/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;hTableDescriptor,
                             org.apache.hadoop.fs.Path&nbsp;tempTableDir)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">AddColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.html#postAdd-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.AddColumnFamilyState-">postAdd</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.AddColumnFamilyState&nbsp;state)</code>
 <div class="block">Action after adding column family.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">CloneSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html#postCloneSnapshot-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postCloneSnapshot</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 cloning from snapshot.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#postCreate-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postCreate</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">DeleteTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html#postDelete-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postDelete</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">DeleteColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.html#postDelete-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DeleteColumnFamilyState-">postDelete</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.DeleteColumnFamilyState&nbsp;state)</code>
 <div class="block">Action after deleting column family.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">DisableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html#postDisable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DisableTableState-">postDisable</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.DisableTableState&nbsp;state)</code>
 <div class="block">Action after disabling table.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">EnableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html#postEnable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.EnableTableState-">postEnable</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.EnableTableState&nbsp;state)</code>
 <div class="block">Action after enabling table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.html#postModify-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyColumnFamilyState-">postModify</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.ModifyColumnFamilyState&nbsp;state)</code>
 <div class="block">Action after modifying column family.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#postModify-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyTableState-">postModify</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.ModifyTableState&nbsp;state)</code>
 <div class="block">Action after modifying table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#postTruncate-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postTruncate</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">AddColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.html#preAdd-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.AddColumnFamilyState-">preAdd</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.AddColumnFamilyState&nbsp;state)</code>
 <div class="block">Action before adding column family.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">CloneSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html#preCloneSnapshot-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">preCloneSnapshot</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 cloning from snapshot.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#preCreate-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">preCreate</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 boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">DeleteTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html#preDelete-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">preDelete</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">DeleteColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.html#preDelete-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DeleteColumnFamilyState-">preDelete</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.DeleteColumnFamilyState&nbsp;state)</code>
 <div class="block">Action before deleting column family.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">DisableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html#preDisable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DisableTableState-">preDisable</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.DisableTableState&nbsp;state)</code>
 <div class="block">Action before disabling table.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">EnableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html#preEnable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.EnableTableState-">preEnable</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.EnableTableState&nbsp;state)</code>
 <div class="block">Action before enabling table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.html#preModify-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyColumnFamilyState-">preModify</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.ModifyColumnFamilyState&nbsp;state)</code>
 <div class="block">Action before modifying column family.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#preModify-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyTableState-">preModify</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.ModifyTableState&nbsp;state)</code>
 <div class="block">Action before modifying table.</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#prepare-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepare</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 for execution</div>
+</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">AddColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.html#prepareAdd-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepareAdd</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>
@@ -1521,159 +1540,168 @@
 <td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.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">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.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">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">RSProcedureDispatcher.CloseRegionRemoteCall.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.CloseRegionRemoteCall.html#remoteCallCompleted-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CloseRegionResponse-">remoteCallCompleted</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.AdminProtos.CloseRegionResponse&nbsp;response)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">RSProcedureDispatcher.ExecuteProceduresRemoteCall.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ExecuteProceduresRemoteCall.html#remoteCallCompleted-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ExecuteProceduresResponse-">remoteCallCompleted</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.AdminProtos.ExecuteProceduresResponse&nbsp;response)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">RSProcedureDispatcher.OpenRegionRemoteCall.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.OpenRegionRemoteCall.html#remoteCallCompleted-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionResponse-">remoteCallCompleted</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.AdminProtos.OpenRegionResponse&nbsp;response)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">RSProcedureDispatcher.ExecuteProceduresRemoteCall.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ExecuteProceduresRemoteCall.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-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="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;e)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">RSProcedureDispatcher.OpenRegionRemoteCall.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.OpenRegionRemoteCall.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-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="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;e)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">RSProcedureDispatcher.CloseRegionRemoteCall.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.CloseRegionRemoteCall.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-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="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;e)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static void</code></td>
 <td class="colLast"><span class="typeNameLabel">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#removeFromZKNamespaceManager-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-java.lang.String-">removeFromZKNamespaceManager</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="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespaceName)</code>
 <div class="block">remove from ZooKeeper.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static void</code></td>
 <td class="colLast"><span class="typeNameLabel">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#removeNamespaceQuota-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-java.lang.String-">removeNamespaceQuota</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="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespaceName)</code>
 <div class="block">remove quota for the namespace</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#restoreSnapshot-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">restoreSnapshot</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">Execute the on-disk Restore</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">CloneSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html#restoreSnapshotAcl-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">restoreSnapshotAcl</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">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#restoreSnapshotAcl-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">restoreSnapshotAcl</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">ModifyColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.html#restoreTableDescriptor-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">restoreTableDescriptor</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">Restore back to the old descriptor</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">AddColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.html#restoreTableDescriptor-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">restoreTableDescriptor</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">Restore the table descriptor back to pre-add</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#restoreTableDescriptor-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">restoreTableDescriptor</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">Undo the descriptor change (for rollback)</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">DeleteColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.html#restoreTableDescriptor-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">restoreTableDescriptor</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">Restore back to the old descriptor</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#rollbackDeleteDirectory-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">rollbackDeleteDirectory</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">undo delete directory</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">CreateNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html#rollbackSetNamespaceQuota-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">rollbackSetNamespaceQuota</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">remove quota for the namespace if exists</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">AddColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.AddColumnFamilyState-">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.AddColumnFamilyState&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">CloneSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.CloneSnapshotState-">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.CloneSnapshotState&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">CreateNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.CreateNamespaceState-">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.CreateNamespaceState&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">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.CreateTableState-">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.CreateTableState&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">DeleteColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DeleteColumnFamilyState-">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.DeleteColumnFamilyState&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">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DeleteNamespaceState-">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.DeleteNamespaceState&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">DeleteTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DeleteTableState-">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.DeleteTableState&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">DisableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DisableTableState-">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.DisableTableState&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">EnableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.EnableTableState-">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.EnableTableState&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">ModifyColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyColumnFamilyState-">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.ModifyColumnFamilyState&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">ModifyNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyNamespaceState-">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.ModifyNamespaceState&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">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyTableState-">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.ModifyTableState&nbsp;state)</code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">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.RecoverMetaState&nbsp;recoverMetaState)</code>&nbsp;</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RestoreSnapshotState-">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,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/ProcedurePrepareLatch.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/ProcedurePrepareLatch.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/ProcedurePrepareLatch.html
index c84383c..f48c31d 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/ProcedurePrepareLatch.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/ProcedurePrepareLatch.html
@@ -123,6 +123,10 @@
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractStateMachineTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#syncLatch">syncLatch</a></span></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a></code></td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#syncLatch">syncLatch</a></span></code>&nbsp;</td>
+</tr>
 </tbody>
 </table>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
@@ -222,6 +226,13 @@
                     <a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a>&nbsp;latch)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#RecoverMetaProcedure-org.apache.hadoop.hbase.ServerName-boolean-org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch-">RecoverMetaProcedure</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;failedMetaServer,
+                    boolean&nbsp;shouldSplitLog,
+                    <a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a>&nbsp;latch)</code>
+<div class="block">Constructor with latch, for blocking/ sync usage</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#TruncateTableProcedure-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.TableName-boolean-org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch-">TruncateTableProcedure</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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                       boolean&nbsp;preserveSplits,

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.TableOperationType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.TableOperationType.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.TableOperationType.html
index 66bc978..70953a4 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.TableOperationType.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.TableOperationType.html
@@ -247,23 +247,27 @@
 </tr>
 <tr 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"><span class="typeNameLabel">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#getTableOperationType--">getTableOperationType</a></span>()</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#getTableOperationType--">getTableOperationType</a></span>()</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <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"><span class="typeNameLabel">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#getTableOperationType--">getTableOperationType</a></span>()</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#getTableOperationType--">getTableOperationType</a></span>()</code>&nbsp;</td>
 </tr>
 <tr 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"><span class="typeNameLabel">DeleteColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.html#getTableOperationType--">getTableOperationType</a></span>()</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#getTableOperationType--">getTableOperationType</a></span>()</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<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"><span class="typeNameLabel">DeleteColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.html#getTableOperationType--">getTableOperationType</a></span>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>static <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"><span class="typeNameLabel">TableProcedureInterface.TableOperationType.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html#valueOf-java.lang.String-">valueOf</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Returns the enum constant of this type with the specified name.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <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"><span class="typeNameLabel">TableProcedureInterface.TableOperationType.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html#values--">values</a></span>()</code>
 <div class="block">Returns an array containing the constants of this enum type, in

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.html
index 5f2a461..4baa07d 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.html
@@ -273,10 +273,17 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></span></code>
+<div class="block">This procedure recovers meta from prior shutdown/ crash of a server, and brings meta online by
+ assigning meta region/s.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a></span></code>&nbsp;</td>
 </tr>
 </tbody>


[28/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
index b3d1843..2e9004e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
@@ -131,3324 +131,3321 @@
 <span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.procedure.ModifyColumnFamilyProcedure;<a name="line.123"></a>
 <span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.124"></a>
 <span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.replication.ReplicationManager;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.procedure2.LockInfo;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.procedure2.ProcedureUtil;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.replication.ReplicationFactory;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.replication.ReplicationQueuesZKImpl;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.replication.master.TableCFsUpdater;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.replication.regionserver.Replication;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.ZKDataMigrator;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.zookeeper.DrainingServerTracker;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.zookeeper.RegionServerTracker;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.zookeeper.SplitOrMergeTracker;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.zookeeper.KeeperException;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.eclipse.jetty.server.Server;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Lists;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Maps;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import com.google.protobuf.Descriptors;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import com.google.protobuf.Service;<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>/**<a name="line.207"></a>
-<span class="sourceLineNo">208</span> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.208"></a>
-<span class="sourceLineNo">209</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.209"></a>
-<span class="sourceLineNo">210</span> * run the cluster.  All others park themselves in their constructor until<a name="line.210"></a>
-<span class="sourceLineNo">211</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.211"></a>
-<span class="sourceLineNo">212</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.212"></a>
-<span class="sourceLineNo">213</span> *<a name="line.213"></a>
-<span class="sourceLineNo">214</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.214"></a>
-<span class="sourceLineNo">215</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.215"></a>
-<span class="sourceLineNo">216</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.216"></a>
-<span class="sourceLineNo">217</span> *<a name="line.217"></a>
-<span class="sourceLineNo">218</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.218"></a>
-<span class="sourceLineNo">219</span> *<a name="line.219"></a>
-<span class="sourceLineNo">220</span> * @see org.apache.zookeeper.Watcher<a name="line.220"></a>
-<span class="sourceLineNo">221</span> */<a name="line.221"></a>
-<span class="sourceLineNo">222</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.222"></a>
-<span class="sourceLineNo">223</span>@SuppressWarnings("deprecation")<a name="line.223"></a>
-<span class="sourceLineNo">224</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private static final Log LOG = LogFactory.getLog(HMaster.class.getName());<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   */<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  private static class InitializationMonitor extends HasThread {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.237"></a>
-<span class="sourceLineNo">238</span>     * true, do nothing otherwise.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>     */<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    public static final boolean HALT_DEFAULT = false;<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>    private final HMaster master;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    private final long timeout;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    private final boolean haltOnTimeout;<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    InitializationMonitor(HMaster master) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      super("MasterInitializationMonitor");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      this.master = master;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      this.setDaemon(true);<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>    @Override<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    public void run() {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      try {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>          Thread.sleep(timeout);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          if (master.isInitialized()) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          } else {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.264"></a>
-<span class="sourceLineNo">265</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.265"></a>
-<span class="sourceLineNo">266</span>            if (haltOnTimeout) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.267"></a>
-<span class="sourceLineNo">268</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.268"></a>
-<span class="sourceLineNo">269</span>              System.exit(-1);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>            }<a name="line.270"></a>
-<span class="sourceLineNo">271</span>          }<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        }<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      } catch (InterruptedException ie) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  //instance into web context.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  public static final String MASTER = "master";<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  // Manager and zk listener for master election<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  private final ActiveMasterManager activeMasterManager;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  // Region server tracker<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  RegionServerTracker regionServerTracker;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  // Draining region server tracker<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  private DrainingServerTracker drainingServerTracker;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  // Tracker for load balancer state<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>  // Tracker for split and merge state<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // Tracker for region normalizer state<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>  //Tracker for master maintenance mode setting<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>  private ClusterSchemaService clusterSchemaService;<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  // Metrics for the HMaster<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  final MetricsMaster metricsMaster;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  // file system manager for the master FS operations<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  private MasterFileSystem fileSystemManager;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  private MasterWalManager walManager;<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  // server manager to deal with region server info<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  private volatile ServerManager serverManager;<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  // manager of assignment nodes in zookeeper<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private AssignmentManager assignmentManager;<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  // manager of replication<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  private ReplicationManager replicationManager;<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  // buffer for "fatal error" notices from region servers<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  // in the cluster. This is only used for assisting<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  // operations/debugging.<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  // flag set after we become the active master (used for testing)<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  private volatile boolean activeMaster = false;<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>  // flag set after we complete initialization once active,<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  // it is not private since it's used in unit tests<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  private final ProcedureEvent initialized = new ProcedureEvent("master initialized");<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>  // flag set after master services are started,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // initialization may have not completed yet.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  volatile boolean serviceStarted = false;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  // flag set after we complete assignMeta.<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  private final ProcedureEvent serverCrashProcessingEnabled =<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    new ProcedureEvent("server crash processing");<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>  // Maximum time we should run balancer for<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  private final int maxBlancingTime;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  // Maximum percent of regions in transition when balancing<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  private final double maxRitPercent;<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private final LockManager lockManager = new LockManager(this);<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>  private LoadBalancer balancer;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  private RegionNormalizer normalizer;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private BalancerChore balancerChore;<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  private RegionNormalizerChore normalizerChore;<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  private ClusterStatusChore clusterStatusChore;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  CatalogJanitor catalogJanitorChore;<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  private ReplicationMetaCleaner replicationMetaCleaner;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private ReplicationZKNodeCleanerChore replicationZKNodeCleanerChore;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  private LogCleaner logCleaner;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  private HFileCleaner hfileCleaner;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  private MobCompactionChore mobCompactChore;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  // used to synchronize the mobCompactionStates<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // save the information of mob compactions in tables.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.364"></a>
-<span class="sourceLineNo">365</span><a name="line.365"></a>
-<span class="sourceLineNo">366</span>  MasterCoprocessorHost cpHost;<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private final boolean preLoadTableDescriptors;<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  // Time stamps for when a hmaster became active<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  private long masterActiveTime;<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private final boolean masterCheckCompression;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>  //should we check encryption settings at master side, default true<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private final boolean masterCheckEncryption;<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>  // monitor for snapshot of hbase tables<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  SnapshotManager snapshotManager;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  // monitor for distributed procedures<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  private MasterProcedureManagerHost mpmHost;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private volatile MasterQuotaManager quotaManager;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private QuotaObserverChore quotaObserverChore;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  private WALProcedureStore procedureStore;<a name="line.393"></a>
-<span class="sourceLineNo">394</span><a name="line.394"></a>
-<span class="sourceLineNo">395</span>  // handle table states<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  private TableStateManager tableStateManager;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  private long splitPlanCount;<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  private long mergePlanCount;<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>  /** flag used in test cases in order to simulate RS failures during master initialization */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  private volatile boolean initializationBeforeMetaAssignment = false;<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  /* Handle favored nodes information */<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  private FavoredNodesManager favoredNodesManager;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  private Server masterJettyServer;<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>  public static class RedirectServlet extends HttpServlet {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    private final int regionServerInfoPort;<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    private final String regionServerHostname;<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>    /**<a name="line.415"></a>
-<span class="sourceLineNo">416</span>     * @param infoServer that we're trying to send all requests to<a name="line.416"></a>
-<span class="sourceLineNo">417</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>     */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>       regionServerInfoPort = infoServer.getPort();<a name="line.420"></a>
-<span class="sourceLineNo">421</span>       regionServerHostname = hostname;<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 doGet(HttpServletRequest request,<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      String redirectHost = regionServerHostname;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      if(redirectHost == null) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        redirectHost = request.getServerName();<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.431"></a>
-<span class="sourceLineNo">432</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.432"></a>
-<span class="sourceLineNo">433</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.433"></a>
-<span class="sourceLineNo">434</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.434"></a>
-<span class="sourceLineNo">435</span>              "to an appropriate hostname.");<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.437"></a>
-<span class="sourceLineNo">438</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.438"></a>
-<span class="sourceLineNo">439</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          return;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      String redirectUrl = request.getScheme() + "://"<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        + request.getRequestURI();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      response.sendRedirect(redirectUrl);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  /**<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * Initializes the HMaster. The steps are as follows:<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * &lt;p&gt;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   * &lt;ol&gt;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * &lt;/ol&gt;<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * &lt;p&gt;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * Remaining steps of initialization occur in<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * the master becomes the active one.<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   */<a name="line.463"></a>
-<span class="sourceLineNo">464</span>  public HMaster(final Configuration conf, CoordinatedStateManager csm)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      throws IOException, KeeperException {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    super(conf, csm);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      conf.getLong("hbase.master.buffer.for.rs.fatals", 1*1024*1024));<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>    LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // Disable usage of meta replicas in the master<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.474"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.replication.ReplicationManager;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.procedure2.LockInfo;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.procedure2.ProcedureUtil;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.replication.ReplicationFactory;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.replication.ReplicationQueuesZKImpl;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.replication.master.TableCFsUpdater;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.replication.regionserver.Replication;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.ZKDataMigrator;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.zookeeper.DrainingServerTracker;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.zookeeper.RegionServerTracker;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.SplitOrMergeTracker;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.zookeeper.KeeperException;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.eclipse.jetty.server.Server;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Lists;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Maps;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import com.google.protobuf.Descriptors;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import com.google.protobuf.Service;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.209"></a>
+<span class="sourceLineNo">210</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.210"></a>
+<span class="sourceLineNo">211</span> * run the cluster.  All others park themselves in their constructor until<a name="line.211"></a>
+<span class="sourceLineNo">212</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.212"></a>
+<span class="sourceLineNo">213</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.213"></a>
+<span class="sourceLineNo">214</span> *<a name="line.214"></a>
+<span class="sourceLineNo">215</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.215"></a>
+<span class="sourceLineNo">216</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.216"></a>
+<span class="sourceLineNo">217</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.217"></a>
+<span class="sourceLineNo">218</span> *<a name="line.218"></a>
+<span class="sourceLineNo">219</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.219"></a>
+<span class="sourceLineNo">220</span> *<a name="line.220"></a>
+<span class="sourceLineNo">221</span> * @see org.apache.zookeeper.Watcher<a name="line.221"></a>
+<span class="sourceLineNo">222</span> */<a name="line.222"></a>
+<span class="sourceLineNo">223</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.223"></a>
+<span class="sourceLineNo">224</span>@SuppressWarnings("deprecation")<a name="line.224"></a>
+<span class="sourceLineNo">225</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  private static final Log LOG = LogFactory.getLog(HMaster.class.getName());<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   */<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  private static class InitializationMonitor extends HasThread {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.238"></a>
+<span class="sourceLineNo">239</span>     * true, do nothing otherwise.<a name="line.239"></a>
+<span class="sourceLineNo">240</span>     */<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public static final boolean HALT_DEFAULT = false;<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>    private final HMaster master;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    private final long timeout;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    private final boolean haltOnTimeout;<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    InitializationMonitor(HMaster master) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      super("MasterInitializationMonitor");<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      this.master = master;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      this.setDaemon(true);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    @Override<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    public void run() {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      try {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          Thread.sleep(timeout);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          if (master.isInitialized()) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          } else {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.265"></a>
+<span class="sourceLineNo">266</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.266"></a>
+<span class="sourceLineNo">267</span>            if (haltOnTimeout) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.268"></a>
+<span class="sourceLineNo">269</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.269"></a>
+<span class="sourceLineNo">270</span>              System.exit(-1);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>            }<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      } catch (InterruptedException ie) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      }<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  //instance into web context.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  public static final String MASTER = "master";<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  // Manager and zk listener for master election<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  private final ActiveMasterManager activeMasterManager;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  // Region server tracker<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  RegionServerTracker regionServerTracker;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  // Draining region server tracker<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  private DrainingServerTracker drainingServerTracker;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  // Tracker for load balancer state<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>  // Tracker for split and merge state<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  // Tracker for region normalizer state<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>  //Tracker for master maintenance mode setting<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>  private ClusterSchemaService clusterSchemaService;<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>  // Metrics for the HMaster<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  final MetricsMaster metricsMaster;<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  // file system manager for the master FS operations<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  private MasterFileSystem fileSystemManager;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  private MasterWalManager walManager;<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  // server manager to deal with region server info<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  private volatile ServerManager serverManager;<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  // manager of assignment nodes in zookeeper<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  private AssignmentManager assignmentManager;<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // manager of replication<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private ReplicationManager replicationManager;<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  // buffer for "fatal error" notices from region servers<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  // in the cluster. This is only used for assisting<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  // operations/debugging.<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  // flag set after we become the active master (used for testing)<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  private volatile boolean activeMaster = false;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // flag set after we complete initialization once active,<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  // it is not private since it's used in unit tests<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  private final ProcedureEvent initialized = new ProcedureEvent("master initialized");<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>  // flag set after master services are started,<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  // initialization may have not completed yet.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  volatile boolean serviceStarted = false;<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  // flag set after we complete assignMeta.<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  private final ProcedureEvent serverCrashProcessingEnabled =<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    new ProcedureEvent("server crash processing");<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  // Maximum time we should run balancer for<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  private final int maxBlancingTime;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  // Maximum percent of regions in transition when balancing<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  private final double maxRitPercent;<a name="line.342"></a>
+<span class="sourceLineNo">343</span><a name="line.343"></a>
+<span class="sourceLineNo">344</span>  private final LockManager lockManager = new LockManager(this);<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private LoadBalancer balancer;<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  private RegionNormalizer normalizer;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  private BalancerChore balancerChore;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private RegionNormalizerChore normalizerChore;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  private ClusterStatusChore clusterStatusChore;<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.351"></a>
+<span class="sourceLineNo">352</span><a name="line.352"></a>
+<span class="sourceLineNo">353</span>  CatalogJanitor catalogJanitorChore;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>  private ReplicationMetaCleaner replicationMetaCleaner;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  private ReplicationZKNodeCleanerChore replicationZKNodeCleanerChore;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  private LogCleaner logCleaner;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  private HFileCleaner hfileCleaner;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  private MobCompactionChore mobCompactChore;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  // used to synchronize the mobCompactionStates<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  // save the information of mob compactions in tables.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  MasterCoprocessorHost cpHost;<a name="line.367"></a>
+<span class="sourceLineNo">368</span><a name="line.368"></a>
+<span class="sourceLineNo">369</span>  private final boolean preLoadTableDescriptors;<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>  // Time stamps for when a hmaster became active<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  private long masterActiveTime;<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private final boolean masterCheckCompression;<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  //should we check encryption settings at master side, default true<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  private final boolean masterCheckEncryption;<a name="line.378"></a>
+<span class="sourceLineNo">379</span><a name="line.379"></a>
+<span class="sourceLineNo">380</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>  // monitor for snapshot of hbase tables<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  SnapshotManager snapshotManager;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  // monitor for distributed procedures<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  private MasterProcedureManagerHost mpmHost;<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.387"></a>
+<span class="sourceLineNo">388</span>  private volatile MasterQuotaManager quotaManager;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  private QuotaObserverChore quotaObserverChore;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.391"></a>
+<span class="sourceLineNo">392</span><a name="line.392"></a>
+<span class="sourceLineNo">393</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private WALProcedureStore procedureStore;<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>  // handle table states<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private TableStateManager tableStateManager;<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>  private long splitPlanCount;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>  private long mergePlanCount;<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>  /* Handle favored nodes information */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  private FavoredNodesManager favoredNodesManager;<a name="line.403"></a>
+<span class="sourceLineNo">404</span><a name="line.404"></a>
+<span class="sourceLineNo">405</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  private Server masterJettyServer;<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  public static class RedirectServlet extends HttpServlet {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    private final int regionServerInfoPort;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    private final String regionServerHostname;<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>    /**<a name="line.413"></a>
+<span class="sourceLineNo">414</span>     * @param infoServer that we're trying to send all requests to<a name="line.414"></a>
+<span class="sourceLineNo">415</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>     */<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>       regionServerInfoPort = infoServer.getPort();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>       regionServerHostname = hostname;<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 doGet(HttpServletRequest request,<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      String redirectHost = regionServerHostname;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      if(redirectHost == null) {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        redirectHost = request.getServerName();<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.429"></a>
+<span class="sourceLineNo">430</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.430"></a>
+<span class="sourceLineNo">431</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.431"></a>
+<span class="sourceLineNo">432</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.432"></a>
+<span class="sourceLineNo">433</span>              "to an appropriate hostname.");<a name="line.433"></a>
+<span class="sourceLineNo">434</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.434"></a>
+<span class="sourceLineNo">435</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.435"></a>
+<span class="sourceLineNo">436</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.436"></a>
+<span class="sourceLineNo">437</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          return;<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>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      String redirectUrl = request.getScheme() + "://"<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        + request.getRequestURI();<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      response.sendRedirect(redirectUrl);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  }<a name="line.448"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   * Initializes the HMaster. The steps are as follows:<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   * &lt;p&gt;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * &lt;ol&gt;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.454"></a>
+<span class="sourceLineNo">455</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.455"></a>
+<span class="sourceLineNo">456</span>   * &lt;/ol&gt;<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   * &lt;p&gt;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * Remaining steps of initialization occur in<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * the master becomes the active one.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  public HMaster(final Configuration conf, CoordinatedStateManager csm)<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      throws IOException, KeeperException {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    super(conf, csm);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      conf.getLong("hbase.master.buffer.for.rs.fatals", 1*1024*1024));<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>    LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.469"></a>
+<span class="sourceLineNo">470</span><a name="line.470"></a>
+<span class="sourceLineNo">471</span>    // Disable usage of meta replicas in the master<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span>    Replication.decorateMasterConfiguration(this.conf);<a name="line.474"></a>
 <span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    Replication.decorateMasterConfiguration(this.conf);<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>    // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    // config param for task trackers, but we can piggyback off of it.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<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>    // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>    // should we check encryption settings at master side, default true<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.488"></a>
+<span class="sourceLineNo">476</span>    // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    // config param for task trackers, but we can piggyback off of it.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<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">482</span>    // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.483"></a>
+<span class="sourceLineNo">484</span><a name="line.484"></a>
+<span class="sourceLineNo">485</span>    // should we check encryption settings at master side, default true<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.486"></a>
+<span class="sourceLineNo">487</span><a name="line.487"></a>
+<span class="sourceLineNo">488</span>    this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.488"></a>
 <span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.490"></a>
-<span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>    // preload table descriptor at startup<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>    this.maxBlancingTime = getMaxBalancingTime();<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.497"></a>
+<span class="sourceLineNo">490</span>    // preload table descriptor at startup<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.491"></a>
+<span class="sourceLineNo">492</span><a name="line.492"></a>
+<span class="sourceLineNo">493</span>    this.maxBlancingTime = getMaxBalancingTime();<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>    // Do we publish the status?<a name="line.497"></a>
 <span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    // Do we publish the status?<a name="line.499"></a>
-<span class="sourceLineNo">500</span><a name="line.500"></a>
-<span class="sourceLineNo">501</span>    boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    Class&lt;? extends ClusterStatusPublisher.Publisher&gt; publisherClass =<a name="line.503"></a>
-<span class="sourceLineNo">504</span>        conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.504"></a>
-<span class="sourceLineNo">505</span>            ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.505"></a>
-<span class="sourceLineNo">506</span>            ClusterStatusPublisher.Publisher.class);<a name="line.506"></a>
-<span class="sourceLineNo">507</span><a name="line.507"></a>
-<span class="sourceLineNo">508</span>    if (shouldPublish) {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      if (publisherClass == null) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.510"></a>
-<span class="sourceLineNo">511</span>            ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.511"></a>
-<span class="sourceLineNo">512</span>            " is not set - not publishing status");<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      } else {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>        getChoreService().scheduleChore(clusterStatusPublisherChore);<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><a name="line.518"></a>
-<span class="sourceLineNo">519</span>    // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      setInitLatch(new CountDownLatch(1));<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      activeMasterManager = new ActiveMasterManager(zooKeeper, this.serverName, this);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      int infoPort = putUpJettyServer();<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      startActiveMasterManager(infoPort);<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    } else {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      activeMasterManager = null;<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>  // return the actual infoPort, -1 means disable info server.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>  private int putUpJettyServer() throws IOException {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    if (!conf.getBoolean("hbase.master.infoserver.redirect", true)) {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      return -1;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    final int infoPort = conf.getInt("hbase.master.info.port.orig",<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      HConstants.DEFAULT_MASTER_INFOPORT);<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    // -1 is for disabling info server, so no redirecting<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    if (infoPort &lt; 0 || infoServer == null) {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      return -1;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    }<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    if(infoPort == infoServer.getPort()) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      return infoPort;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    final String addr = conf.get("hbase.master.info.bindAddress", "0.0.0.0");<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    if (!Addressing.isLocalAddress(InetAddress.getByName(addr))) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      String msg =<a name="line.546"></a>
-<span class="sourceLineNo">547</span>          "Failed to start redirecting jetty server. Address " + addr<a name="line.547"></a>
-<span class="sourceLineNo">548</span>              + " does not belong to this host. Correct configuration parameter: "<a name="line.548"></a>
-<span class="sourceLineNo">549</span>              + "hbase.master.info.bindAddress";<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      LOG.error(msg);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      throw new IOException(msg);<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>    // TODO I'm pretty sure we could just add another binding to the InfoServer run by<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    // the RegionServer and have it run the RedirectServlet instead of standing up<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    // a second entire stack here.<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    masterJettyServer = new Server();<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    final ServerConnector connector = new ServerConnector(masterJettyServer);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    connector.setHost(addr);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>    connector.setPort(infoPort);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    masterJettyServer.addConnector(connector);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    masterJettyServer.setStopAtShutdown(true);<a name="line.562"></a>
+<span class="sourceLineNo">499</span>    boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.499"></a>
+<span class="sourceLineNo">500</span>        HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    Class&lt;? extends ClusterStatusPublisher.Publisher&gt; publisherClass =<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.502"></a>
+<span class="sourceLineNo">503</span>            ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.503"></a>
+<span class="sourceLineNo">504</span>            ClusterStatusPublisher.Publisher.class);<a name="line.504"></a>
+<span class="sourceLineNo">505</span><a name="line.505"></a>
+<span class="sourceLineNo">506</span>    if (shouldPublish) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      if (publisherClass == null) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>        LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.508"></a>
+<span class="sourceLineNo">509</span>            ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.509"></a>
+<span class="sourceLineNo">510</span>            " is not set - not publishing status");<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      } else {<a name="line.511"></a>
+<span class="sourceLineNo">512</span>        clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>        getChoreService().scheduleChore(clusterStatusPublisherChore);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      }<a name="line.514"></

<TRUNCATED>

[41/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index f81123f..c276ded 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,8 +25,8 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2007 - 2017 The Apache Software Foundation</copyright>
     <item>
-      <title>File: 2249,
-             Errors: 14896,
+      <title>File: 2250,
+             Errors: 14897,
              Warnings: 0,
              Infos: 0
       </title>
@@ -606,6 +606,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure.java">org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  2
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.CreateTableProcedure.java">org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java</a>
                 </td>
                 <td>
@@ -6173,7 +6187,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  2
+                  1
                 </td>
               </tr>
                           <tr>

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 7a60ee4..898ed21 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="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <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" />
@@ -527,7 +527,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index cd80c7c..20d036b 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="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <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" />
@@ -724,7 +724,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-08-01</li>
             </p>
                 </div>
 

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index 5109027..716362a 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="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <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" />
@@ -900,7 +900,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-frame.html b/devapidocs/allclasses-frame.html
index 221c38f..a904a1b 100644
--- a/devapidocs/allclasses-frame.html
+++ b/devapidocs/allclasses-frame.html
@@ -1920,6 +1920,7 @@
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/RecoveredReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">RecoveredReplicationSourceShipper</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/RecoveredReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">RecoveredReplicationSourceWALReader</a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/RecoveringRegionWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">RecoveringRegionWatcher</a></li>
+<li><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">RecoverMetaProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/util/test/RedundantKVGenerator.html" title="class in org.apache.hadoop.hbase.util.test" target="classFrame">RedundantKVGenerator</a></li>
 <li><a href="org/apache/hadoop/hbase/util/test/RedundantKVGenerator.ExtendedOffheapKeyValue.html" title="class in org.apache.hadoop.hbase.util.test" target="classFrame">RedundantKVGenerator.ExtendedOffheapKeyValue</a></li>
 <li><a href="org/apache/hadoop/hbase/metrics/impl/RefCountingMap.html" title="class in org.apache.hadoop.hbase.metrics.impl" target="classFrame">RefCountingMap</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-noframe.html b/devapidocs/allclasses-noframe.html
index 1c5e135..cd66769 100644
--- a/devapidocs/allclasses-noframe.html
+++ b/devapidocs/allclasses-noframe.html
@@ -1920,6 +1920,7 @@
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/RecoveredReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver">RecoveredReplicationSourceShipper</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/RecoveredReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver">RecoveredReplicationSourceWALReader</a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/RecoveringRegionWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoveringRegionWatcher</a></li>
+<li><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/util/test/RedundantKVGenerator.html" title="class in org.apache.hadoop.hbase.util.test">RedundantKVGenerator</a></li>
 <li><a href="org/apache/hadoop/hbase/util/test/RedundantKVGenerator.ExtendedOffheapKeyValue.html" title="class in org.apache.hadoop.hbase.util.test">RedundantKVGenerator.ExtendedOffheapKeyValue</a></li>
 <li><a href="org/apache/hadoop/hbase/metrics/impl/RefCountingMap.html" title="class in org.apache.hadoop.hbase.metrics.impl">RefCountingMap</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 6121980..b95a55e 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3836,21 +3836,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Mon Jul 31 14:42:21 UTC 2017"</code></td>
+<td class="colLast"><code>"Tue Aug  1 14:39:46 UTC 2017"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"95808b467287e3510baa13634d8ef14af7a74aa8"</code></td>
+<td class="colLast"><code>"a5db120e6090faecb680f3f1e297f78e567ba3a3"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"25ae4c9ddbc978b53145eb29236bb5c4"</code></td>
+<td class="colLast"><code>"57e11df6ae23400a5a92fb9cdec2a813"</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/110df817/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 50491db..28c6ffe 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -750,6 +750,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CreateTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/Procedure.html#acquireLock-TEnvironment-">acquireLock(TEnvironment)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a></dt>
@@ -3804,9 +3806,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#assignMeta-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.ServerName-">assignMeta(HRegionInfo, ServerName)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#assignMeta--">assignMeta()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html" title="class in org.apache.hadoop.hbase.master">MasterMetaBootstrap</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#assignMeta-java.util.Set-int-">assignMeta(Set&lt;ServerName&gt;, int)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html" title="class in org.apache.hadoop.hbase.master">MasterMetaBootstrap</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#assignMeta-int-">assignMeta(int)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html" title="class in org.apache.hadoop.hbase.master">MasterMetaBootstrap</a></dt>
 <dd>
 <div class="block">Check <code>hbase:meta</code> is assigned.</div>
 </dd>
@@ -15202,6 +15202,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/Procedure.html#completionCleanup-TEnvironment-">completionCleanup(TEnvironment)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a></dt>
@@ -20741,7 +20743,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationThrottler.html#cyclePushSize">cyclePushSize</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationThrottler.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationThrottler</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#cycles">cycles</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#cycles">cycles</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></dt>
 <dd>
 <div class="block">Cycles on same state.</div>
 </dd>
@@ -24340,6 +24342,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#deserializeStateData-java.io.InputStream-">deserializeStateData(InputStream)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#deserializeStateData-java.io.InputStream-">deserializeStateData(InputStream)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#deserializeStateData-java.io.InputStream-">deserializeStateData(InputStream)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#deserializeStateData-java.io.InputStream-">deserializeStateData(InputStream)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dt>
@@ -28143,6 +28147,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyTableState-">executeFromState(MasterProcedureEnv, MasterProcedureProtos.ModifyTableState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">executeFromState(MasterProcedureEnv, MasterProcedureProtos.RecoverMetaState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RestoreSnapshotState-">executeFromState(MasterProcedureEnv, MasterProcedureProtos.RestoreSnapshotState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState-">executeFromState(MasterProcedureEnv, MasterProcedureProtos.ServerCrashState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dt>
@@ -28755,6 +28761,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/FailedLogCloseException.html#FailedLogCloseException-java.lang.Throwable-">FailedLogCloseException(Throwable)</a></span> - Constructor for exception org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/FailedLogCloseException.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FailedLogCloseException</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#failedMetaServer">failedMetaServer</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/BackupInfo.html#failedMsg">failedMsg</a></span> - Variable in class org.apache.hadoop.hbase.backup.<a href="org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a></dt>
 <dd>
 <div class="block">Backup failure message</div>
@@ -35819,6 +35827,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coordination/ZkSplitLogWorkerCoordination.ZkSplitTaskDetails.html#getCurTaskZKVersion--">getCurTaskZKVersion()</a></span> - Method in class org.apache.hadoop.hbase.coordination.<a href="org/apache/hadoop/hbase/coordination/ZkSplitLogWorkerCoordination.ZkSplitTaskDetails.html" title="class in org.apache.hadoop.hbase.coordination">ZkSplitLogWorkerCoordination.ZkSplitTaskDetails</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.ZKWatcher.html#getData--">getData()</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.example.<a href="org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.ZKWatcher.html" title="class in org.apache.hadoop.hbase.coprocessor.example">ZooKeeperScanPolicyObserver.ZKWatcher</a></dt>
 <dd>
 <div class="block">Get the maintained data.</div>
@@ -38557,6 +38567,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#getInitialState--">getInitialState()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#getInitialState--">getInitialState()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#getInitialState--">getInitialState()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#getInitialState--">getInitialState()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dt>
@@ -43324,10 +43336,6 @@
 <dd>
 <div class="block">Returns the previous cell written by this writer</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#getPreviouselyFailedMetaServersFromZK--">getPreviouselyFailedMetaServersFromZK()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html" title="class in org.apache.hadoop.hbase.master">MasterMetaBootstrap</a></dt>
-<dd>
-<div class="block">This function returns a set of region server names under hbase:meta recovering region ZK node</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ConnectionConfiguration.html#getPrimaryCallTimeoutMicroSecond--">getPrimaryCallTimeoutMicroSecond()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ConnectionConfiguration.html" title="class in org.apache.hadoop.hbase.client">ConnectionConfiguration</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/CacheStats.html#getPrimaryEvictedCount--">getPrimaryEvictedCount()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/CacheStats.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheStats</a></dt>
@@ -47866,6 +47874,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#getState-int-">getState(int)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#getState-int-">getState(int)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#getState-int-">getState(int)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#getState-int-">getState(int)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dt>
@@ -47940,6 +47950,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyTableState-">getStateId(MasterProcedureProtos.ModifyTableState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">getStateId(MasterProcedureProtos.RecoverMetaState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RestoreSnapshotState-">getStateId(MasterProcedureProtos.RestoreSnapshotState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState-">getStateId(MasterProcedureProtos.ServerCrashState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dt>
@@ -48967,6 +48979,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#getTableName--">getTableName()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#getTableName--">getTableName()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#getTableName--">getTableName()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html#getTableName--">getTableName()</a></span> - Method in interface org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a></dt>
@@ -49111,6 +49125,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#getTableOperationType--">getTableOperationType()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#getTableOperationType--">getTableOperationType()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#getTableOperationType--">getTableOperationType()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html#getTableOperationType--">getTableOperationType()</a></span> - Method in interface org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a></dt>
@@ -57512,10 +57528,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html#INITIALIZATION_ERROR">INITIALIZATION_ERROR</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TableInputFormatBase</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#initializationBeforeMetaAssignment">initializationBeforeMetaAssignment</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
-<dd>
-<div class="block">flag used in test cases in order to simulate RS failures during master initialization</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#InitializationMonitor-org.apache.hadoop.hbase.master.HMaster-">InitializationMonitor(HMaster)</a></span> - Constructor for class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html" title="class in org.apache.hadoop.hbase.master">HMaster.InitializationMonitor</a></dt>
 <dd>
 <div class="block">Creates a Thread that monitors the <a href="org/apache/hadoop/hbase/master/HMaster.html#isInitialized--"><code>HMaster.isInitialized()</code></a> state.</div>
@@ -59969,10 +59981,6 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#isInitialChoreComplete--">isInitialChoreComplete()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#isInitializationStartsMetaRegionAssignment--">isInitializationStartsMetaRegionAssignment()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
-<dd>
-<div class="block">Report whether this master has started initialization and is about to do meta region assignment</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#isInitialized--">isInitialized()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
 <dd>
 <div class="block">Report whether this master has completed with its initialization and is
@@ -61111,6 +61119,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/Service.html#isRunning--">isRunning()</a></span> - Method in interface org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/Service.html" title="interface in org.apache.hadoop.hbase">Service</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#isRunRequired--">isRunRequired()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/FSHDFSUtils.html#isSameHdfs-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.FileSystem-">isSameHdfs(Configuration, FileSystem, FileSystem)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/FSHDFSUtils.html" title="class in org.apache.hadoop.hbase.util">FSHDFSUtils</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ServerName.html#isSameHostnameAndPort-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerName-">isSameHostnameAndPort(ServerName, ServerName)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></dt>
@@ -65556,6 +65566,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedureSyncWait</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher</a></dt>
@@ -67880,6 +67892,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureUtil.NonceProcedureRunnable.html#master">master</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureUtil.NonceProcedureRunnable.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureUtil.NonceProcedureRunnable</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#master">master</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html#master">master</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ServerManager.html#master">master</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></dt>
@@ -81134,6 +81148,10 @@ service.</div>
  in the constructor, or in process()) so that the caller, which is mostly executed
  in the ipc context can fail fast.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#prepare-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepare(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>
+<div class="block">Prepare for execution</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/snapshot/DisabledTableSnapshotHandler.html#prepare--">prepare()</a></span> - Method in class org.apache.hadoop.hbase.master.snapshot.<a href="org/apache/hadoop/hbase/master/snapshot/DisabledTableSnapshotHandler.html" title="class in org.apache.hadoop.hbase.master.snapshot">DisabledTableSnapshotHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/snapshot/EnabledTableSnapshotHandler.html#prepare--">prepare()</a></span> - Method in class org.apache.hadoop.hbase.master.snapshot.<a href="org/apache/hadoop/hbase/master/snapshot/EnabledTableSnapshotHandler.html" title="class in org.apache.hadoop.hbase.master.snapshot">EnabledTableSnapshotHandler</a></dt>
@@ -81864,10 +81882,6 @@ service.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/ReflectionUtils.html#previousLogTime">previousLogTime</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ReflectionUtils.html" title="class in org.apache.hadoop.hbase.util">ReflectionUtils</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#previouslyFailedMetaRSs">previouslyFailedMetaRSs</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html" title="class in org.apache.hadoop.hbase.master">MasterMetaBootstrap</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#previouslyFailedServers">previouslyFailedServers</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html" title="class in org.apache.hadoop.hbase.master">MasterMetaBootstrap</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/codec/prefixtree/decode/PrefixTreeArrayReversibleScanner.html#previousRow-boolean-">previousRow(boolean)</a></span> - Method in class org.apache.hadoop.hbase.codec.prefixtree.decode.<a href="org/apache/hadoop/hbase/codec/prefixtree/decode/PrefixTreeArrayReversibleScanner.html" title="class in org.apache.hadoop.hbase.codec.prefixtree.decode">PrefixTreeArrayReversibleScanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/codec/prefixtree/scanner/ReversibleCellScanner.html#previousRow-boolean-">previousRow(boolean)</a></span> - Method in interface org.apache.hadoop.hbase.codec.prefixtree.scanner.<a href="org/apache/hadoop/hbase/codec/prefixtree/scanner/ReversibleCellScanner.html" title="interface in org.apache.hadoop.hbase.codec.prefixtree.scanner">ReversibleCellScanner</a></dt>
@@ -81876,7 +81890,7 @@ service.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/codec/prefixtree/decode/PrefixTreeArrayReversibleScanner.html#previousRowInternal--">previousRowInternal()</a></span> - Method in class org.apache.hadoop.hbase.codec.prefixtree.decode.<a href="org/apache/hadoop/hbase/codec/prefixtree/decode/PrefixTreeArrayReversibleScanner.html" title="class in org.apache.hadoop.hbase.codec.prefixtree.decode">PrefixTreeArrayReversibleScanner</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#previousState">previousState</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#previousState">previousState</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></dt>
 <dd>
 <div class="block">Ordinal of the previous state.</div>
 </dd>
@@ -85784,6 +85798,33 @@ service.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/AbstractFSWALProvider.html#recoverLease-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.Path-">recoverLease(Configuration, Path)</a></span> - Static method in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/AbstractFSWALProvider.html" title="class in org.apache.hadoop.hbase.wal">AbstractFSWALProvider</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#recoverMeta--">recoverMeta()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#recoverMeta--">recoverMeta()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html" title="class in org.apache.hadoop.hbase.master">MasterMetaBootstrap</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterServices.html#recoverMeta--">recoverMeta()</a></span> - Method in interface org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a></dt>
+<dd>
+<div class="block">Recover meta table.</div>
+</dd>
+<dt><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">RecoverMetaProcedure</span></a> - Class in <a href="org/apache/hadoop/hbase/master/procedure/package-summary.html">org.apache.hadoop.hbase.master.procedure</a></dt>
+<dd>
+<div class="block">This procedure recovers meta from prior shutdown/ crash of a server, and brings meta online by
+ assigning meta region/s.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#RecoverMetaProcedure-org.apache.hadoop.hbase.ServerName-boolean-">RecoverMetaProcedure(ServerName, boolean)</a></span> - Constructor for class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>
+<div class="block">Call this constructor to queue up a <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a> in response to meta
+ carrying server crash</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#RecoverMetaProcedure-org.apache.hadoop.hbase.ServerName-boolean-org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch-">RecoverMetaProcedure(ServerName, boolean, ProcedurePrepareLatch)</a></span> - Constructor for class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>
+<div class="block">Constructor with latch, for blocking/ sync usage</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#RecoverMetaProcedure--">RecoverMetaProcedure()</a></span> - Constructor for class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>
+<div class="block">This constructor is also used when deserializing from a procedure store; we'll construct one
+ of these then call <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#deserializeStateData-java.io.InputStream-"><code>RecoverMetaProcedure.deserializeStateData(InputStream)</code></a>.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TableOutputCommitter.html#recoverTask-org.apache.hadoop.mapreduce.TaskAttemptContext-">recoverTask(TaskAttemptContext)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TableOutputCommitter.html" title="class in org.apache.hadoop.hbase.mapreduce">TableOutputCommitter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.html#recoveryMode">recoveryMode</a></span> - Variable in class org.apache.hadoop.hbase.coordination.<a href="org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.html" title="class in org.apache.hadoop.hbase.coordination">ZKSplitLogManagerCoordination</a></dt>
@@ -87951,6 +87992,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/Procedure.html#releaseLock-TEnvironment-">releaseLock(TEnvironment)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a></dt>
@@ -89309,6 +89352,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HRegionInfo.html#replicaId">replicaId</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#replicaId">replicaId</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/RpcRetryingCallerWithReadReplicas.ReplicaRegionServerCallable.html#ReplicaRegionServerCallable-int-org.apache.hadoop.hbase.HRegionLocation-">ReplicaRegionServerCallable(int, HRegionLocation)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/RpcRetryingCallerWithReadReplicas.ReplicaRegionServerCallable.html" title="class in org.apache.hadoop.hbase.client">RpcRetryingCallerWithReadReplicas.ReplicaRegionServerCallable</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AsyncRequestFutureImpl.html#replicaResultLock">replicaResultLock</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AsyncRequestFutureImpl.html" title="class in org.apache.hadoop.hbase.client">AsyncRequestFutureImpl</a></dt>
@@ -92145,6 +92190,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyTableState-">rollbackState(MasterProcedureEnv, MasterProcedureProtos.ModifyTableState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">rollbackState(MasterProcedureEnv, MasterProcedureProtos.RecoverMetaState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RestoreSnapshotState-">rollbackState(MasterProcedureEnv, MasterProcedureProtos.RestoreSnapshotState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState-">rollbackState(MasterProcedureEnv, MasterProcedureProtos.ServerCrashState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dt>
@@ -95778,6 +95825,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#serializeStateData-java.io.OutputStream-">serializeStateData(OutputStream)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#serializeStateData-java.io.OutputStream-">serializeStateData(OutputStream)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#serializeStateData-java.io.OutputStream-">serializeStateData(OutputStream)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#serializeStateData-java.io.OutputStream-">serializeStateData(OutputStream)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dt>
@@ -101418,6 +101467,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactSplit.html#shouldSplitRegion--">shouldSplitRegion()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactSplit.html" title="class in org.apache.hadoop.hbase.regionserver">CompactSplit</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#shouldSplitWal">shouldSplitWal</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#shouldSplitWal">shouldSplitWal</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coordination/ZkSplitLogWorkerCoordination.html#shouldStop">shouldStop</a></span> - Variable in class org.apache.hadoop.hbase.coordination.<a href="org/apache/hadoop/hbase/coordination/ZkSplitLogWorkerCoordination.html" title="class in org.apache.hadoop.hbase.coordination">ZkSplitLogWorkerCoordination</a></dt>
@@ -102142,8 +102193,6 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#size--">size()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#size-java.util.Collection-">size(Collection&lt;HRegionInfo&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/metrics/impl/RefCountingMap.html#size--">size()</a></span> - Method in class org.apache.hadoop.hbase.metrics.impl.<a href="org/apache/hadoop/hbase/metrics/impl/RefCountingMap.html" title="class in org.apache.hadoop.hbase.metrics.impl">RefCountingMap</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/AbstractProcedureScheduler.html#size--">size()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/AbstractProcedureScheduler.html" title="class in org.apache.hadoop.hbase.procedure2">AbstractProcedureScheduler</a></dt>
@@ -103993,10 +104042,6 @@ service.</div>
 <dd>
 <div class="block">Specialized method to handle the splitting for meta WAL</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#splitMetaLogBeforeAssignment-org.apache.hadoop.hbase.ServerName-">splitMetaLogBeforeAssignment(ServerName)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html" title="class in org.apache.hadoop.hbase.master">MasterMetaBootstrap</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#splitMetaLogsBeforeAssignment--">splitMetaLogsBeforeAssignment()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html" title="class in org.apache.hadoop.hbase.master">MasterMetaBootstrap</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MetricsAssignmentManagerSourceImpl.html#splitMetrics">splitMetrics</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MetricsAssignmentManagerSourceImpl.html" title="class in org.apache.hadoop.hbase.master">MetricsAssignmentManagerSourceImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/master/normalizer/SplitNormalizationPlan.html" title="class in org.apache.hadoop.hbase.master.normalizer"><span class="typeNameLink">SplitNormalizationPlan</span></a> - Class in <a href="org/apache/hadoop/hbase/master/normalizer/package-summary.html">org.apache.hadoop.hbase.master.normalizer</a></dt>
@@ -106915,6 +106960,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#syncLatch">syncLatch</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineTableProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#syncLatch">syncLatch</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#syncLoop--">syncLoop()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#SyncMapper--">SyncMapper()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper</a></dt>
@@ -110974,6 +111021,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.html#toStringClassDetails-java.lang.StringBuilder-">toStringClassDetails(StringBuilder)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyColumnFamilyProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#toStringClassDetails-java.lang.StringBuilder-">toStringClassDetails(StringBuilder)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#toStringClassDetails-java.lang.StringBuilder-">toStringClassDetails(StringBuilder)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#toStringClassDetails-java.lang.StringBuilder-">toStringClassDetails(StringBuilder)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dt>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/class-use/HRegionInfo.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/HRegionInfo.html b/devapidocs/org/apache/hadoop/hbase/class-use/HRegionInfo.html
index c5198f7..ad05f9a 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/HRegionInfo.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/HRegionInfo.html
@@ -4543,10 +4543,6 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <td class="colLast"><span class="typeNameLabel">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#recreateRegionInfo-java.util.List-">recreateRegionInfo</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&nbsp;regions)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) static int</code></td>
-<td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#size-java.util.Collection-">size</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&nbsp;hris)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code>protected static void</code></td>
 <td class="colLast"><span class="typeNameLabel">ProcedureSyncWait.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.html#waitRegionInTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-java.util.List-">waitRegionInTransition</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="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&nbsp;regions)</code>&nbsp;</td>


[05/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/org/apache/hadoop/hbase/master/TestSplitLogManager.DummyMasterServices.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/TestSplitLogManager.DummyMasterServices.html b/testdevapidocs/org/apache/hadoop/hbase/master/TestSplitLogManager.DummyMasterServices.html
index 505b53d..afdde09 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/TestSplitLogManager.DummyMasterServices.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/TestSplitLogManager.DummyMasterServices.html
@@ -201,7 +201,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterSer
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html" title="class in org.apache.hadoop.hbase.master">MockNoopMasterServices</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#abort-java.lang.String-java.lang.Throwable-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#abortProcedure-long-boolean-">abortProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#addColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HColumnDescriptor-long-long-">addColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#addReplicationPeer-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">addReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#checkIfShouldMoveSystemRegionAsync--">checkIfShouldMoveSystemRegionAsync</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#checkTableModifiable-org.apache.hadoop.hbase.TableName-">checkTableModifiabl
 e</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#createSystemTable-org.apache.hadoop.hbase.HTableDescriptor-">createSystemTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#createTable-org.apache.hadoop.hbase.HTableDescriptor-byte:A:A-long-long-">createTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#deleteColumn-org.apache.hadoop.hbase.TableName-byte:A-long-long-">deleteColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#deleteTable-org.apache.hadoop.hbase.TableName-long-long-">deleteTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#disableReplicationPeer-java.lang.String-">disableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#disableTable-org.apache.hadoop.hbase.TableName-long-long-">disableTable</a>, <a href="..
 /../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#drainRegionServer-org.apache.hadoop.hbase.ServerName-">drainRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#enableReplicationPeer-java.lang.String-">enableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#enableTable-org.apache.hadoop.hbase.TableName-long-long-">enableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getAssignmentManager--">getAssignmentManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getCatalogJanitor--">getCatalogJanitor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getChoreService--">getChoreService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getClusterConnection--">getClusterConnection</a>, <a href="../../../../.
 ./org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getClusterSchema--">getClusterSchema</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getConfiguration--">getConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getConnection--">getConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getExecutorService--">getExecutorService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getFavoredNodesManager--">getFavoredNodesManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getInitializedEvent--">getInitializedEvent</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getLastMajorCompactionTimestamp-org.apache.hadoop.hbase.TableName-">getLastMajorCompactionTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMa
 sterServices.html#getLastMajorCompactionTimestampForRegion-byte:A-">getLastMajorCompactionTimestampForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getLoadBalancer--">getLoadBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getLockManager--">getLockManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterCoprocessorHost--">getMasterCoprocessorHost</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterFileSystem--">getMasterFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterMetrics--">getMasterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterProcedureExecutor--">getMasterProcedureExecutor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterProce
 dureManagerHost--">getMasterProcedureManagerHost</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterQuotaManager--">getMasterQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterWalManager--">getMasterWalManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMetaTableLocator--">getMetaTableLocator</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getRegionNormalizer--">getRegionNormalizer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getRegionServerVersion-org.apache.hadoop.hbase.ServerName-">getRegionServerVersion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getReplicationPeerConfig-java.lang.String-">getReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getS
 erverName--">getServerName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getSnapshotManager--">getSnapshotManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getTableDescriptors--">getTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getTableStateManager--">getTableStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isAborted--">isAborted</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isActiveMaster--">isActiveMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isInitialized--">isInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isInMaintenanceMode--">isInMaintenanceMode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isServe
 rCrashProcessingEnabled--">isServerCrashProcessingEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isSplitOrMergeEnabled-org.apache.hadoop.hbase.client.MasterSwitchType-">isSplitOrMergeEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isStopped--">isStopped</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isStopping--">isStopping</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listDrainingRegionServers--">listDrainingRegionServers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listLocks--">listLocks</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listProcedures--">listProcedures</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listReplicationPeers-java.lang.String-">listReplicationPeers</a>, <a h
 ref="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listTableDescriptorsByNamespace-java.lang.String-">listTableDescriptorsByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listTableNamesByNamespace-java.lang.String-">listTableNamesByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#mergeRegions-org.apache.hadoop.hbase.HRegionInfo:A-boolean-long-long-">mergeRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#modifyColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HColumnDescriptor-long-long-">modifyColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HTableDescriptor-long-long-">modifyTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#registerService
 -com.google.protobuf.Service-">registerService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#removeDrainFromRegionServer-org.apache.hadoop.hbase.ServerName-">removeDrainFromRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#removeReplicationPeer-java.lang.String-">removeReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#splitRegion-org.apache.hadoop.hbase.HRegionInfo-byte:A-long-long-">splitRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#stop-java.lang.String-">stop</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.replica
 tion.ReplicationPeerConfig-">updateReplicationPeerConfig</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#abort-java.lang.String-java.lang.Throwable-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#abortProcedure-long-boolean-">abortProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#addColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HColumnDescriptor-long-long-">addColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#addReplicationPeer-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">addReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#checkIfShouldMoveSystemRegionAsync--">checkIfShouldMoveSystemRegionAsync</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#checkTableModifiable-org.apache.hadoop.hbase.TableName-">checkTableModifiabl
 e</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#createSystemTable-org.apache.hadoop.hbase.HTableDescriptor-">createSystemTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#createTable-org.apache.hadoop.hbase.HTableDescriptor-byte:A:A-long-long-">createTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#deleteColumn-org.apache.hadoop.hbase.TableName-byte:A-long-long-">deleteColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#deleteTable-org.apache.hadoop.hbase.TableName-long-long-">deleteTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#disableReplicationPeer-java.lang.String-">disableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#disableTable-org.apache.hadoop.hbase.TableName-long-long-">disableTable</a>, <a href="..
 /../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#drainRegionServer-org.apache.hadoop.hbase.ServerName-">drainRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#enableReplicationPeer-java.lang.String-">enableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#enableTable-org.apache.hadoop.hbase.TableName-long-long-">enableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getAssignmentManager--">getAssignmentManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getCatalogJanitor--">getCatalogJanitor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getChoreService--">getChoreService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getClusterConnection--">getClusterConnection</a>, <a href="../../../../.
 ./org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getClusterSchema--">getClusterSchema</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getConfiguration--">getConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getConnection--">getConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getExecutorService--">getExecutorService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getFavoredNodesManager--">getFavoredNodesManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getInitializedEvent--">getInitializedEvent</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getLastMajorCompactionTimestamp-org.apache.hadoop.hbase.TableName-">getLastMajorCompactionTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMa
 sterServices.html#getLastMajorCompactionTimestampForRegion-byte:A-">getLastMajorCompactionTimestampForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getLoadBalancer--">getLoadBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getLockManager--">getLockManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterCoprocessorHost--">getMasterCoprocessorHost</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterFileSystem--">getMasterFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterMetrics--">getMasterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterProcedureExecutor--">getMasterProcedureExecutor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterProce
 dureManagerHost--">getMasterProcedureManagerHost</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterQuotaManager--">getMasterQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterWalManager--">getMasterWalManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMetaTableLocator--">getMetaTableLocator</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getRegionNormalizer--">getRegionNormalizer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getRegionServerVersion-org.apache.hadoop.hbase.ServerName-">getRegionServerVersion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getReplicationPeerConfig-java.lang.String-">getReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getS
 erverName--">getServerName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getSnapshotManager--">getSnapshotManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getTableDescriptors--">getTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getTableStateManager--">getTableStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isAborted--">isAborted</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isActiveMaster--">isActiveMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isInitialized--">isInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isInMaintenanceMode--">isInMaintenanceMode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isServe
 rCrashProcessingEnabled--">isServerCrashProcessingEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isSplitOrMergeEnabled-org.apache.hadoop.hbase.client.MasterSwitchType-">isSplitOrMergeEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isStopped--">isStopped</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isStopping--">isStopping</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listDrainingRegionServers--">listDrainingRegionServers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listLocks--">listLocks</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listProcedures--">listProcedures</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listReplicationPeers-java.lang.String-">listReplicationPeers</a>, <a h
 ref="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listTableDescriptorsByNamespace-java.lang.String-">listTableDescriptorsByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listTableNamesByNamespace-java.lang.String-">listTableNamesByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#mergeRegions-org.apache.hadoop.hbase.HRegionInfo:A-boolean-long-long-">mergeRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#modifyColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HColumnDescriptor-long-long-">modifyColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HTableDescriptor-long-long-">modifyTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#recoverMeta--">
 recoverMeta</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#registerService-com.google.protobuf.Service-">registerService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#removeDrainFromRegionServer-org.apache.hadoop.hbase.ServerName-">removeDrainFromRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#removeReplicationPeer-java.lang.String-">removeReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#splitRegion-org.apache.hadoop.hbase.HRegionInfo-byte:A-long-long-">splitRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#stop-java.lang.String-">stop</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a>, <a href="../../../../../org/apache/hadoop/hb
 ase/master/MockNoopMasterServices.html#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updateReplicationPeerConfig</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html
index 54e8b33..b65a8b9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/MockMasterServices.html
@@ -319,7 +319,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMaster
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.<a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html" title="class in org.apache.hadoop.hbase.master">MockNoopMasterServices</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#abort-java.lang.String-java.lang.Throwable-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#abortProcedure-long-boolean-">abortProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#addColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HColumnDescriptor-long-long-">addColumn</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#addReplicationPeer-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">addReplicationPeer</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#checkIfShouldMoveSystemRegionAsync--">checkIfShouldMoveSystemRegionAsync</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#checkTableModifiable-org.apache.hadoop.hbase.TableName-">c
 heckTableModifiable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#createSystemTable-org.apache.hadoop.hbase.HTableDescriptor-">createSystemTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#createTable-org.apache.hadoop.hbase.HTableDescriptor-byte:A:A-long-long-">createTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#deleteColumn-org.apache.hadoop.hbase.TableName-byte:A-long-long-">deleteColumn</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#deleteTable-org.apache.hadoop.hbase.TableName-long-long-">deleteTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#disableReplicationPeer-java.lang.String-">disableReplicationPeer</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#disableTable-org.apache.hadoop.hbase.TableName-long-
 long-">disableTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#drainRegionServer-org.apache.hadoop.hbase.ServerName-">drainRegionServer</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#enableReplicationPeer-java.lang.String-">enableReplicationPeer</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#enableTable-org.apache.hadoop.hbase.TableName-long-long-">enableTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getCatalogJanitor--">getCatalogJanitor</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getChoreService--">getChoreService</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getClusterConnection--">getClusterConnection</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getClusterSchem
 a--">getClusterSchema</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getConfiguration--">getConfiguration</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getExecutorService--">getExecutorService</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getFavoredNodesManager--">getFavoredNodesManager</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getLastMajorCompactionTimestamp-org.apache.hadoop.hbase.TableName-">getLastMajorCompactionTimestamp</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getLastMajorCompactionTimestampForRegion-byte:A-">getLastMajorCompactionTimestampForRegion</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getLockManager--">getLockManager</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterS
 ervices.html#getMasterCoprocessorHost--">getMasterCoprocessorHost</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterMetrics--">getMasterMetrics</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterProcedureManagerHost--">getMasterProcedureManagerHost</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterQuotaManager--">getMasterQuotaManager</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMetaTableLocator--">getMetaTableLocator</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getRegionNormalizer--">getRegionNormalizer</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getRegionServerVersion-org.apache.hadoop.hbase.ServerName-">getRegionServerVersion</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNo
 opMasterServices.html#getReplicationPeerConfig-java.lang.String-">getReplicationPeerConfig</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getSnapshotManager--">getSnapshotManager</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getTableStateManager--">getTableStateManager</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getZooKeeper--">getZooKeeper</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isAborted--">isAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isActiveMaster--">isActiveMaster</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isInMaintenanceMode--">isInMaintenanceMode</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isServerCrashProcessingEnabled--">isServerCrashProcessi
 ngEnabled</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isSplitOrMergeEnabled-org.apache.hadoop.hbase.client.MasterSwitchType-">isSplitOrMergeEnabled</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isStopped--">isStopped</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isStopping--">isStopping</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listDrainingRegionServers--">listDrainingRegionServers</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listLocks--">listLocks</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listProcedures--">listProcedures</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listReplicationPeers-java.lang.String-">listReplicationPeers</a>, <a href="../../../../../../org/
 apache/hadoop/hbase/master/MockNoopMasterServices.html#listTableDescriptorsByNamespace-java.lang.String-">listTableDescriptorsByNamespace</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listTableNamesByNamespace-java.lang.String-">listTableNamesByNamespace</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#mergeRegions-org.apache.hadoop.hbase.HRegionInfo:A-boolean-long-long-">mergeRegions</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#modifyColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HColumnDescriptor-long-long-">modifyColumn</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HTableDescriptor-long-long-">modifyTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#registerService-com.goog
 le.protobuf.Service-">registerService</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#removeDrainFromRegionServer-org.apache.hadoop.hbase.ServerName-">removeDrainFromRegionServer</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#removeReplicationPeer-java.lang.String-">removeReplicationPeer</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#splitRegion-org.apache.hadoop.hbase.HRegionInfo-byte:A-long-long-">splitRegion</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updateReplicationPeerConfig</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#abort-java.lang.String-java.lang.Throwable-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#abortProcedure-long-boolean-">abortProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#addColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HColumnDescriptor-long-long-">addColumn</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#addReplicationPeer-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">addReplicationPeer</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#checkIfShouldMoveSystemRegionAsync--">checkIfShouldMoveSystemRegionAsync</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#checkTableModifiable-org.apache.hadoop.hbase.TableName-">c
 heckTableModifiable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#createSystemTable-org.apache.hadoop.hbase.HTableDescriptor-">createSystemTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#createTable-org.apache.hadoop.hbase.HTableDescriptor-byte:A:A-long-long-">createTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#deleteColumn-org.apache.hadoop.hbase.TableName-byte:A-long-long-">deleteColumn</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#deleteTable-org.apache.hadoop.hbase.TableName-long-long-">deleteTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#disableReplicationPeer-java.lang.String-">disableReplicationPeer</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#disableTable-org.apache.hadoop.hbase.TableName-long-
 long-">disableTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#drainRegionServer-org.apache.hadoop.hbase.ServerName-">drainRegionServer</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#enableReplicationPeer-java.lang.String-">enableReplicationPeer</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#enableTable-org.apache.hadoop.hbase.TableName-long-long-">enableTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getCatalogJanitor--">getCatalogJanitor</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getChoreService--">getChoreService</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getClusterConnection--">getClusterConnection</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getClusterSchem
 a--">getClusterSchema</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getConfiguration--">getConfiguration</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getExecutorService--">getExecutorService</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getFavoredNodesManager--">getFavoredNodesManager</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getLastMajorCompactionTimestamp-org.apache.hadoop.hbase.TableName-">getLastMajorCompactionTimestamp</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getLastMajorCompactionTimestampForRegion-byte:A-">getLastMajorCompactionTimestampForRegion</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getLockManager--">getLockManager</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterS
 ervices.html#getMasterCoprocessorHost--">getMasterCoprocessorHost</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterMetrics--">getMasterMetrics</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterProcedureManagerHost--">getMasterProcedureManagerHost</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMasterQuotaManager--">getMasterQuotaManager</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getMetaTableLocator--">getMetaTableLocator</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getRegionNormalizer--">getRegionNormalizer</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getRegionServerVersion-org.apache.hadoop.hbase.ServerName-">getRegionServerVersion</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNo
 opMasterServices.html#getReplicationPeerConfig-java.lang.String-">getReplicationPeerConfig</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getSnapshotManager--">getSnapshotManager</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getTableStateManager--">getTableStateManager</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#getZooKeeper--">getZooKeeper</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isAborted--">isAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isActiveMaster--">isActiveMaster</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isInMaintenanceMode--">isInMaintenanceMode</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isServerCrashProcessingEnabled--">isServerCrashProcessi
 ngEnabled</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isSplitOrMergeEnabled-org.apache.hadoop.hbase.client.MasterSwitchType-">isSplitOrMergeEnabled</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isStopped--">isStopped</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#isStopping--">isStopping</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listDrainingRegionServers--">listDrainingRegionServers</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listLocks--">listLocks</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listProcedures--">listProcedures</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listReplicationPeers-java.lang.String-">listReplicationPeers</a>, <a href="../../../../../../org/
 apache/hadoop/hbase/master/MockNoopMasterServices.html#listTableDescriptorsByNamespace-java.lang.String-">listTableDescriptorsByNamespace</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#listTableNamesByNamespace-java.lang.String-">listTableNamesByNamespace</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#mergeRegions-org.apache.hadoop.hbase.HRegionInfo:A-boolean-long-long-">mergeRegions</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#modifyColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HColumnDescriptor-long-long-">modifyColumn</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HTableDescriptor-long-long-">modifyTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#recoverMeta--">recoverMe
 ta</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#registerService-com.google.protobuf.Service-">registerService</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#removeDrainFromRegionServer-org.apache.hadoop.hbase.ServerName-">removeDrainFromRegionServer</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#removeReplicationPeer-java.lang.String-">removeReplicationPeer</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#splitRegion-org.apache.hadoop.hbase.HRegionInfo-byte:A-long-long-">splitRegion</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/MockNoopMasterServices.html#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.
 replication.ReplicationPeerConfig-">updateReplicationPeerConfig</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html
index da02e8c..793ab03 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.494">MasterProcedureTestingUtility.InjectAbortOnLoadListener</a>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.491">MasterProcedureTestingUtility.InjectAbortOnLoadListener</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecutorListener</pre>
 </li>
@@ -222,7 +222,7 @@ implements org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecuto
 <ul class="blockList">
 <li class="blockList">
 <h4>procExec</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.496">procExec</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.493">procExec</a></pre>
 </li>
 </ul>
 <a name="procsToAbort">
@@ -231,7 +231,7 @@ implements org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecuto
 <ul class="blockListLast">
 <li class="blockList">
 <h4>procsToAbort</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/TreeSet.html?is-external=true" title="class or interface in java.util">TreeSet</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.497">procsToAbort</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/TreeSet.html?is-external=true" title="class or interface in java.util">TreeSet</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.494">procsToAbort</a></pre>
 </li>
 </ul>
 </li>
@@ -248,7 +248,7 @@ implements org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecuto
 <ul class="blockListLast">
 <li class="blockList">
 <h4>InjectAbortOnLoadListener</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.499">InjectAbortOnLoadListener</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.496">InjectAbortOnLoadListener</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec)</pre>
 </li>
 </ul>
 </li>
@@ -265,7 +265,7 @@ implements org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecuto
 <ul class="blockList">
 <li class="blockList">
 <h4>addProcId</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.503">addProcId</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.500">addProcId</a>(long&nbsp;procId)</pre>
 </li>
 </ul>
 <a name="procedureLoaded-long-">
@@ -274,7 +274,7 @@ implements org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecuto
 <ul class="blockList">
 <li class="blockList">
 <h4>procedureLoaded</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.511">procedureLoaded</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.508">procedureLoaded</a>(long&nbsp;procId)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>procedureLoaded</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecutorListener</code></dd>
@@ -287,7 +287,7 @@ implements org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecuto
 <ul class="blockList">
 <li class="blockList">
 <h4>procedureAdded</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.519">procedureAdded</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.516">procedureAdded</a>(long&nbsp;procId)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>procedureAdded</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecutorListener</code></dd>
@@ -300,7 +300,7 @@ implements org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecuto
 <ul class="blockListLast">
 <li class="blockList">
 <h4>procedureFinished</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.522">procedureFinished</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.519">procedureFinished</a>(long&nbsp;procId)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>procedureFinished</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecutorListener</code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html
index 38268e1..2026c2c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html
@@ -406,7 +406,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>masterFailover</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.112">masterFailover</a>(<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;testUtil)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.109">masterFailover</a>(<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;testUtil)
                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -420,7 +420,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>waitBackupMaster</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.124">waitBackupMaster</a>(<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;testUtil,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.121">waitBackupMaster</a>(<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;testUtil,
                                     org.apache.hadoop.hbase.master.HMaster&nbsp;oldMaster)
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
@@ -435,7 +435,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createHTD</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.142">createHTD</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public static&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.139">createHTD</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;family)</pre>
 </li>
 </ul>
@@ -445,7 +445,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.HRegionInfo[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.150">createTable</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
+<pre>public static&nbsp;org.apache.hadoop.hbase.HRegionInfo[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.147">createTable</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
                                                                 org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                 byte[][]&nbsp;splitKeys,
                                                                 <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;family)
@@ -462,7 +462,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateTableCreation</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.160">validateTableCreation</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.157">validateTableCreation</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                          org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                          org.apache.hadoop.hbase.HRegionInfo[]&nbsp;regions,
                                          <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;family)
@@ -479,7 +479,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateTableCreation</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.165">validateTableCreation</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.162">validateTableCreation</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                          org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                          org.apache.hadoop.hbase.HRegionInfo[]&nbsp;regions,
                                          boolean&nbsp;hasFamilyDirs,
@@ -497,7 +497,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateTableDeletion</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.208">validateTableDeletion</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.205">validateTableDeletion</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                          org.apache.hadoop.hbase.TableName&nbsp;tableName)
                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -512,7 +512,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>countMetaRegions</h4>
-<pre>private static&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.224">countMetaRegions</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>private static&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.221">countMetaRegions</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                     org.apache.hadoop.hbase.TableName&nbsp;tableName)
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -527,7 +527,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateTableIsEnabled</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.259">validateTableIsEnabled</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.256">validateTableIsEnabled</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                           org.apache.hadoop.hbase.TableName&nbsp;tableName)
                                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -542,7 +542,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateTableIsDisabled</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.265">validateTableIsDisabled</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.262">validateTableIsDisabled</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                            org.apache.hadoop.hbase.TableName&nbsp;tableName)
                                     throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -557,7 +557,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateColumnFamilyAddition</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.271">validateColumnFamilyAddition</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.268">validateColumnFamilyAddition</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                                 org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                 <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;family)
                                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -573,7 +573,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateColumnFamilyDeletion</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.279">validateColumnFamilyDeletion</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.276">validateColumnFamilyDeletion</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                                 org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                 <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;family)
                                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -589,7 +589,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateColumnFamilyModification</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.295">validateColumnFamilyModification</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.292">validateColumnFamilyModification</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                                     org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                     <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;family,
                                                     org.apache.hadoop.hbase.HColumnDescriptor&nbsp;columnDescriptor)
@@ -606,7 +606,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>loadData</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.305">loadData</a>(org.apache.hadoop.hbase.client.Connection&nbsp;connection,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.302">loadData</a>(org.apache.hadoop.hbase.client.Connection&nbsp;connection,
                             org.apache.hadoop.hbase.TableName&nbsp;tableName,
                             int&nbsp;rows,
                             byte[][]&nbsp;splitKeys,
@@ -624,7 +624,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createPut</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.client.Put&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.332">createPut</a>(byte[][]&nbsp;families,
+<pre>private static&nbsp;org.apache.hadoop.hbase.client.Put&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.329">createPut</a>(byte[][]&nbsp;families,
                                                             byte[]&nbsp;key,
                                                             byte[]&nbsp;value)</pre>
 </li>
@@ -635,7 +635,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>generateNonceGroup</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.345">generateNonceGroup</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master)</pre>
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.342">generateNonceGroup</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master)</pre>
 </li>
 </ul>
 <a name="generateNonce-org.apache.hadoop.hbase.master.HMaster-">
@@ -644,7 +644,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>generateNonce</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.349">generateNonce</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master)</pre>
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.346">generateNonce</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master)</pre>
 </li>
 </ul>
 <a name="testRecoveryAndDoubleExecution-org.apache.hadoop.hbase.procedure2.ProcedureExecutor-long-int-boolean-">
@@ -653,7 +653,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRecoveryAndDoubleExecution</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.368">testRecoveryAndDoubleExecution</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.365">testRecoveryAndDoubleExecution</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
                                                    long&nbsp;procId,
                                                    int&nbsp;numSteps,
                                                    boolean&nbsp;expectExecRunning)
@@ -684,7 +684,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRecoveryAndDoubleExecution</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.404">testRecoveryAndDoubleExecution</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.401">testRecoveryAndDoubleExecution</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
                                                   long&nbsp;procId)
                                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Run through all procedure flow states TWICE while also restarting
@@ -714,7 +714,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRollbackAndDoubleExecution</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.425">testRollbackAndDoubleExecution</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.422">testRollbackAndDoubleExecution</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
                                                   long&nbsp;procId,
                                                   int&nbsp;lastStep)
                                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -736,7 +736,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRollbackRetriableFailure</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.460">testRollbackRetriableFailure</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.457">testRollbackRetriableFailure</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
                                                 long&nbsp;procId,
                                                 int&nbsp;lastStep)
                                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -757,7 +757,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testRestartWithAbort</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.478">testRestartWithAbort</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.475">testRestartWithAbort</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
                                         long&nbsp;procId)
                                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Restart the ProcedureExecutor and inject an abort to the specified procedure.

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html
index 391757b..6a3c10a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html
@@ -203,7 +203,8 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 </tr>
 <tr id="i5" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html#testRecoveryAndDoubleExecution-boolean-">testRecoveryAndDoubleExecution</a></span>(boolean&nbsp;carryingMeta)</code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html#testRecoveryAndDoubleExecution-boolean-boolean-">testRecoveryAndDoubleExecution</a></span>(boolean&nbsp;carryingMeta,
+                              boolean&nbsp;doubleExecution)</code>
 <div class="block">Run server crash procedure steps twice to test idempotency and that we are persisting all
  needed state.</div>
 </td>
@@ -365,7 +366,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRecoveryAndDoubleExecutionOnRsWithMeta</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html#line.91">testRecoveryAndDoubleExecutionOnRsWithMeta</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html#line.92">testRecoveryAndDoubleExecutionOnRsWithMeta</a>()
                                                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -379,7 +380,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRecoveryAndDoubleExecutionOnRsWithoutMeta</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html#line.96">testRecoveryAndDoubleExecutionOnRsWithoutMeta</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html#line.97">testRecoveryAndDoubleExecutionOnRsWithoutMeta</a>()
                                                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -387,13 +388,14 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 </dl>
 </li>
 </ul>
-<a name="testRecoveryAndDoubleExecution-boolean-">
+<a name="testRecoveryAndDoubleExecution-boolean-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>testRecoveryAndDoubleExecution</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html#line.105">testRecoveryAndDoubleExecution</a>(boolean&nbsp;carryingMeta)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html#line.106">testRecoveryAndDoubleExecution</a>(boolean&nbsp;carryingMeta,
+                                            boolean&nbsp;doubleExecution)
                                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Run server crash procedure steps twice to test idempotency and that we are persisting all
  needed state.</div>
@@ -409,7 +411,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>collectMasterMetrics</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html#line.151">collectMasterMetrics</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html#line.161">collectMasterMetrics</a>()</pre>
 </li>
 </ul>
 </li>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.html
index d0c5950..06f6d6b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.html
@@ -274,7 +274,7 @@ extends org.apache.hadoop.hbase.procedure2.StateMachineProcedure&lt;<a href="../
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.StateMachineProcedure</h3>
-<code>addChildProcedure, execute, failIfAborted, getCurrentState, isRollbackSupported, isYieldAfterExecutionStep, isYieldBeforeExecuteFromState, rollback, setNextState, toStringState</code></li>
+<code>addChildProcedure, execute, failIfAborted, getCurrentState, getCycles, isRollbackSupported, isYieldAfterExecutionStep, isYieldBeforeExecuteFromState, rollback, setNextState, toStringState</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureToString.SimpleStateMachineProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureToString.SimpleStateMachineProcedure.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureToString.SimpleStateMachineProcedure.html
index cf315e8..89a1516 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureToString.SimpleStateMachineProcedure.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureToString.SimpleStateMachineProcedure.html
@@ -234,7 +234,7 @@ extends org.apache.hadoop.hbase.procedure2.StateMachineProcedure&lt;<a href="../
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.StateMachineProcedure</h3>
-<code>addChildProcedure, deserializeStateData, execute, failIfAborted, getCurrentState, isRollbackSupported, isYieldAfterExecutionStep, isYieldBeforeExecuteFromState, rollback, serializeStateData, setNextState, toStringState</code></li>
+<code>addChildProcedure, deserializeStateData, execute, failIfAborted, getCurrentState, getCycles, isRollbackSupported, isYieldAfterExecutionStep, isYieldBeforeExecuteFromState, rollback, serializeStateData, setNextState, toStringState</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.TestSMProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.TestSMProcedure.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.TestSMProcedure.html
index 7fd4b08..b98d6af 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.TestSMProcedure.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.TestSMProcedure.html
@@ -229,7 +229,7 @@ extends org.apache.hadoop.hbase.procedure2.StateMachineProcedure&lt;<a href="../
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.StateMachineProcedure</h3>
-<code>abort, addChildProcedure, deserializeStateData, execute, failIfAborted, getCurrentState, isRollbackSupported, isYieldAfterExecutionStep, isYieldBeforeExecuteFromState, rollback, serializeStateData, setNextState, toStringState</code></li>
+<code>abort, addChildProcedure, deserializeStateData, execute, failIfAborted, getCurrentState, getCycles, isRollbackSupported, isYieldAfterExecutionStep, isYieldBeforeExecuteFromState, rollback, serializeStateData, setNextState, toStringState</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.html
index 642d774..2aebebc 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.html
@@ -284,7 +284,7 @@ extends org.apache.hadoop.hbase.procedure2.StateMachineProcedure&lt;<a href="../
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.StateMachineProcedure</h3>
-<code>addChildProcedure, deserializeStateData, execute, failIfAborted, getCurrentState, isRollbackSupported, isYieldAfterExecutionStep, rollback, serializeStateData, setNextState, toStringState</code></li>
+<code>addChildProcedure, deserializeStateData, execute, failIfAborted, getCurrentState, getCycles, isRollbackSupported, isYieldAfterExecutionStep, rollback, serializeStateData, setNextState, toStringState</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

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


[30/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/package-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-frame.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-frame.html
index 34bc93a..5766e4b 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-frame.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-frame.html
@@ -57,6 +57,7 @@
 <li><a href="ProcedurePrepareLatch.NoopLatch.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">ProcedurePrepareLatch.NoopLatch</a></li>
 <li><a href="ProcedureSyncWait.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">ProcedureSyncWait</a></li>
 <li><a href="ProcedureSyncWait.ProcedureFuture.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">ProcedureSyncWait.ProcedureFuture</a></li>
+<li><a href="RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">RecoverMetaProcedure</a></li>
 <li><a href="RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">RestoreSnapshotProcedure</a></li>
 <li><a href="RSProcedureDispatcher.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">RSProcedureDispatcher</a></li>
 <li><a href="RSProcedureDispatcher.RegionCloseOperation.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">RSProcedureDispatcher.RegionCloseOperation</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-summary.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-summary.html
index 28f6859..08c831d 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-summary.html
@@ -296,38 +296,45 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></td>
+<td class="colLast">
+<div class="block">This procedure recovers meta from prior shutdown/ crash of a server, and brings meta online by
+ assigning meta region/s.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher</a></td>
 <td class="colLast">
 <div class="block">A remote procecdure dispatcher for regionservers.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionCloseOperation.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher.RegionCloseOperation</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOpenOperation.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher.RegionOpenOperation</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOperation.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher.RegionOperation</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ServerOperation.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher.ServerOperation</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></td>
 <td class="colLast">
 <div class="block">Handle crashed server.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/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 d8c7028..3316cc9 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -139,6 +139,7 @@
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TruncateTableProcedure</span></a></li>
 </ul>
 </li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">RecoverMetaProcedure</span></a> (implements org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerCrashProcedure</span></a> (implements org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">ServerProcedureInterface</a>)</li>
 </ul>
 </li>
@@ -210,9 +211,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.MarkRegionOfflineOpResult.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">DisableTableProcedure.MarkRegionOfflineOpResult</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/DisableTableProcedure.MarkRegionOfflineOpResult.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">DisableTableProcedure.MarkRegionOfflineOpResult</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/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 cf2ca26..43926f3 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -422,16 +422,16 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.OperationStatusCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/ProcedureState.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ProcedureState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/HConstants.Modify.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.Modify</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/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/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/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/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/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html b/devapidocs/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html
index 61371a0..92684ca 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>protected static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.62">StateMachineProcedure.Flow</a>
+<pre>protected static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.76">StateMachineProcedure.Flow</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a>&gt;</pre>
 </li>
 </ul>
@@ -210,7 +210,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>HAS_MORE_STATE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html#line.63">HAS_MORE_STATE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html#line.77">HAS_MORE_STATE</a></pre>
 </li>
 </ul>
 <a name="NO_MORE_STATE">
@@ -219,7 +219,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>NO_MORE_STATE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html#line.64">NO_MORE_STATE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html#line.78">NO_MORE_STATE</a></pre>
 </li>
 </ul>
 </li>
@@ -236,7 +236,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/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html#line.129">values</a>()</pre>
+<pre>public static&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/procedure2/StateMachineProcedure.Flow.html#line.132">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:
@@ -256,7 +256,7 @@ for (StateMachineProcedure.Flow c : StateMachineProcedure.Flow.values())
 <ul class="blockListLast">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&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/procedure2/StateMachineProcedure.Flow.html#line.129">valueOf</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html#line.132">valueOf</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">Returns the enum constant of this type with the specified name.
 The string must match <i>exactly</i> an identifier used to declare an
 enum constant in this type.  (Extraneous whitespace characters are 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html b/devapidocs/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html
index 5ef6b67..ff68ddc 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":6,"i5":10,"i6":10,"i7":6,"i8":6,"i9":6,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":6,"i17":10,"i18":10,"i19":10,"i20":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":6,"i5":10,"i6":10,"i7":10,"i8":6,"i9":6,"i10":6,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":6,"i18":10,"i19":10,"i20":10,"i21":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <dl>
 <dt>Direct Known Subclasses:</dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineNamespaceProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineTableProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dd>
+<dd><a href="../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineNamespaceProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineTableProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dd>
 </dl>
 <hr>
 <br>
@@ -184,13 +184,25 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#aborted">aborted</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#cycles">cycles</a></span></code>
+<div class="block">Cycles on same state.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>private static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#EOF_STATE">EOF_STATE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static org.apache.commons.logging.Log</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#previousState">previousState</a></span></code>
+<div class="block">Ordinal of the previous state.</div>
+</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#stateCount">stateCount</a></span></code>&nbsp;</td>
@@ -291,84 +303,88 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i7" class="rowColor">
+<td class="colFirst"><code>protected int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>protected abstract <a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.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="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>protected abstract <a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.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="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>protected abstract int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">getStateId</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&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="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#hasMoreState--">hasMoreState</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isEofState--">isEofState</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&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="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env)</code>
 <div class="block">By default, the procedure framework/executor will try to run procedures start to finish.</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env,
                              <a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</code>
 <div class="block">By default, the executor will try ro run all the steps of the procedure start to finish.</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env)</code>
 <div class="block">The code to undo what was done by the execute() code.</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>protected abstract void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollbackState-TEnvironment-TState-">rollbackState</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env,
              <a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</code>
 <div class="block">called to perform the rollback of the specified state</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#serializeStateData-java.io.OutputStream-">serializeStateData</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream)</code>
 <div class="block">The user-level code of the procedure may have some state to
  persist (e.g.</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-int-">setNextState</a></span>(int&nbsp;stateId)</code>
 <div class="block">Set the next state for the procedure.</div>
 </td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</code>
 <div class="block">Set the next state for the procedure.</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;builder)</code>
 <div class="block">Called from <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toString--"><code>Procedure.toString()</code></a> when interpolating <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2"><code>Procedure</code></a> State.</div>
@@ -464,12 +480,32 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <a name="subProcList">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>subProcList</h4>
 <pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.60">subProcList</a></pre>
 </li>
 </ul>
+<a name="cycles">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>cycles</h4>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.69">cycles</a></pre>
+<div class="block">Cycles on same state. Good for figuring if we are stuck.</div>
+</li>
+</ul>
+<a name="previousState">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>previousState</h4>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.74">previousState</a></pre>
+<div class="block">Ordinal of the previous state. So we can tell if we are progressing or not.</div>
+</li>
+</ul>
 </li>
 </ul>
 <!-- ========= CONSTRUCTOR DETAIL ======== -->
@@ -495,6 +531,15 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <!--   -->
 </a>
 <h3>Method Detail</h3>
+<a name="getCycles--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCycles</h4>
+<pre>protected final&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.62">getCycles</a>()</pre>
+</li>
+</ul>
 <a name="executeFromState-java.lang.Object-java.lang.Object-">
 <!--   -->
 </a><a name="executeFromState-TEnvironment-TState-">
@@ -503,7 +548,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>executeFromState</h4>
-<pre>protected abstract&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/procedure2/StateMachineProcedure.html#line.73">executeFromState</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env,
+<pre>protected abstract&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/procedure2/StateMachineProcedure.html#line.87">executeFromState</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env,
                                                                <a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)
                                                         throws <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a>,
                                                                <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</a>,
@@ -530,7 +575,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>rollbackState</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.81">rollbackState</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env,
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.95">rollbackState</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env,
                                       <a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)
                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                       <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -550,7 +595,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getState</h4>
-<pre>protected abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.89">getState</a>(int&nbsp;stateId)</pre>
+<pre>protected abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.103">getState</a>(int&nbsp;stateId)</pre>
 <div class="block">Convert an ordinal (or state id) to an Enum (or more descriptive) state object.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -568,7 +613,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getStateId</h4>
-<pre>protected abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.96">getStateId</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</pre>
+<pre>protected abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.110">getStateId</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</pre>
 <div class="block">Convert the Enum (or more descriptive) state object to an ordinal (or state id).</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -584,7 +629,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getInitialState</h4>
-<pre>protected abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.102">getInitialState</a>()</pre>
+<pre>protected abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.116">getInitialState</a>()</pre>
 <div class="block">Return the initial state object that will be used for the first call to executeFromState().</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -600,7 +645,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>setNextState</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.108">setNextState</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.122">setNextState</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</pre>
 <div class="block">Set the next state for the procedure.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -616,7 +661,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isYieldBeforeExecuteFromState</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.121">isYieldBeforeExecuteFromState</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.135">isYieldBeforeExecuteFromState</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env,
                                                 <a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</pre>
 <div class="block">By default, the executor will try ro run all the steps of the procedure start to finish.
  Return true to make the executor yield between execution steps to
@@ -636,7 +681,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>addChildProcedure</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.129">addChildProcedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&gt;...&nbsp;subProcedure)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.143">addChildProcedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&gt;...&nbsp;subProcedure)</pre>
 <div class="block">Add a child procedure to execute</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -652,7 +697,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>execute</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.144">execute</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env)
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.158">execute</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env)
                        throws <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a>,
                               <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</a>,
                               <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -684,7 +729,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>rollback</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.169">rollback</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.195">rollback</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env)
                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                         <a href="http://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/Procedure.html#rollback-TEnvironment-">Procedure</a></code></span></div>
@@ -711,7 +756,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isEofState</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.181">isEofState</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.207">isEofState</a>()</pre>
 </li>
 </ul>
 <a name="abort-java.lang.Object-">
@@ -722,7 +767,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>abort</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.186">abort</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.212">abort</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</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
@@ -745,7 +790,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>failIfAborted</h4>
-<pre>protected final&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.206">failIfAborted</a>()</pre>
+<pre>protected final&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.232">failIfAborted</a>()</pre>
 <div class="block">If procedure has more states then abort it otherwise procedure is finished and abort can be
  ignored.</div>
 </li>
@@ -758,7 +803,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isRollbackSupported</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.220">isRollbackSupported</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.246">isRollbackSupported</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</pre>
 <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>
 </li>
@@ -771,7 +816,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>isYieldAfterExecutionStep</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.225">isYieldAfterExecutionStep</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.251">isYieldAfterExecutionStep</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</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#isYieldAfterExecutionStep-TEnvironment-">Procedure</a></code></span></div>
 <div class="block">By default, the procedure framework/executor will try to run procedures start to finish.
  Return true to make the executor yield between each execution step to
@@ -793,7 +838,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>hasMoreState</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.229">hasMoreState</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.255">hasMoreState</a>()</pre>
 </li>
 </ul>
 <a name="getCurrentState--">
@@ -802,7 +847,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentState</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.233">getCurrentState</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.259">getCurrentState</a>()</pre>
 </li>
 </ul>
 <a name="setNextState-int-">
@@ -811,7 +856,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>setNextState</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.241">setNextState</a>(int&nbsp;stateId)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.267">setNextState</a>(int&nbsp;stateId)</pre>
 <div class="block">Set the next state for the procedure.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -825,7 +870,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringState</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.254">toStringState</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;builder)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.280">toStringState</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;builder)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringState-java.lang.StringBuilder-">Procedure</a></code></span></div>
 <div class="block">Called from <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toString--"><code>Procedure.toString()</code></a> when interpolating <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2"><code>Procedure</code></a> State.
  Allows decorating generic Procedure State with Procedure particulars.</div>
@@ -843,7 +888,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>serializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.262">serializeStateData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.288">serializeStateData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream)
                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-java.io.OutputStream-">Procedure</a></code></span></div>
 <div class="block">The user-level code of the procedure may have some state to
@@ -865,7 +910,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
 <ul class="blockListLast">
 <li class="blockList">
 <h4>deserializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.271">deserializeStateData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;stream)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.297">deserializeStateData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;stream)
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-java.io.InputStream-">Procedure</a></code></span></div>
 <div class="block">Called on store load to allow the user to decode the previously serialized

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.LockState.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.LockState.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.LockState.html
index e372099..c6f82f6 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.LockState.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.LockState.html
@@ -182,6 +182,10 @@
 <td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a></code></td>
 <td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</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">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a></code></td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</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>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.html
index 770b46e..fd2fed9 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.html
@@ -365,15 +365,22 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></span></code>
+<div class="block">This procedure recovers meta from prior shutdown/ crash of a server, and brings meta online by
+ assigning meta region/s.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></span></code>
 <div class="block">Handle crashed server.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a></span></code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureSuspendedException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureSuspendedException.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureSuspendedException.html
index 75b7ee5..1d448ee 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureSuspendedException.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureSuspendedException.html
@@ -189,6 +189,11 @@
 <tbody>
 <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">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">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.RecoverMetaState&nbsp;state)</code>&nbsp;</td>
+</tr>
+<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">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState-">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.ServerCrashState&nbsp;state)</code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureYieldException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureYieldException.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureYieldException.html
index 0dcfcec..377888f 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureYieldException.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureYieldException.html
@@ -147,6 +147,11 @@
 <tbody>
 <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">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">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.RecoverMetaState&nbsp;state)</code>&nbsp;</td>
+</tr>
+<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">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState-">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.ServerCrashState&nbsp;state)</code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.Flow.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.Flow.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.Flow.html
index 692cecd..2beba9f 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.Flow.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.Flow.html
@@ -211,15 +211,20 @@
 </tr>
 <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">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">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.RecoverMetaState&nbsp;state)</code>&nbsp;</td>
+</tr>
+<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">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RestoreSnapshotState-">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.RestoreSnapshotState&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">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState-">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.ServerCrashState&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">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.TruncateTableState-">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.TruncateTableState&nbsp;state)</code>&nbsp;</td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.html
index 052986c..1094ece 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.html
@@ -230,15 +230,22 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></span></code>
+<div class="block">This procedure recovers meta from prior shutdown/ crash of a server, and brings meta online by
+ assigning meta region/s.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></span></code>
 <div class="block">Handle crashed server.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a></span></code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/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 4d126de..3545051 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -201,11 +201,11 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">RootProcedureState.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/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/LockInfo.ResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockInfo.ResourceType</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/LockInfo.LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockInfo.LockType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockInfo.LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockInfo.LockType</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/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 9861225..838810d 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -692,20 +692,20 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactor.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactor.Action</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/Region.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.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/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/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/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/StoreScanner.StoreScannerCompactionRace.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">StoreScanner.StoreScannerCompactionRace</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/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactor.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactor.Action</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionOpeningState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">RegionOpeningState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.FlushResult.Result</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.StoreScannerCompactionRace.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">StoreScanner.StoreScannerCompactionRace</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/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/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/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
 </ul>
 </li>
 </ul>


[43/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

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


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

Branch: refs/heads/asf-site
Commit: 110df81781c7f7a744ee060fdd7221b2a48ac75b
Parents: c8f0328
Author: jenkins <bu...@apache.org>
Authored: Tue Aug 1 15:07:26 2017 +0000
Committer: jenkins <bu...@apache.org>
Committed: Tue Aug 1 15:07:26 2017 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                |  2874 +-
 book.html                                       |     2 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 32216 +++++++++--------
 checkstyle.rss                                  |    20 +-
 coc.html                                        |     4 +-
 cygwin.html                                     |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |     4 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |     4 +-
 devapidocs/allclasses-frame.html                |     1 +
 devapidocs/allclasses-noframe.html              |     1 +
 devapidocs/constant-values.html                 |     6 +-
 devapidocs/index-all.html                       |   103 +-
 .../hadoop/hbase/backup/package-tree.html       |     4 +-
 .../hadoop/hbase/class-use/HRegionInfo.html     |     4 -
 .../hadoop/hbase/class-use/ServerName.html      |   117 +-
 .../hadoop/hbase/class-use/TableName.html       |    10 +-
 .../hbase/classification/package-tree.html      |     8 +-
 .../hadoop/hbase/client/package-tree.html       |    26 +-
 .../hadoop/hbase/filter/package-tree.html       |     8 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     6 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |     4 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     2 +-
 .../master/HMaster.InitializationMonitor.html   |    20 +-
 .../hbase/master/HMaster.RedirectServlet.html   |    12 +-
 .../org/apache/hadoop/hbase/master/HMaster.html |   622 +-
 .../master/HMasterCommandLine.LocalHMaster.html |     2 +-
 .../hbase/master/MasterMetaBootstrap.html       |   152 +-
 .../hadoop/hbase/master/MasterServices.html     |    37 +-
 .../hadoop/hbase/master/MasterWalManager.html   |     4 +-
 .../master/assignment/AssignmentManager.html    |    46 +-
 .../assignment/GCMergedRegionsProcedure.html    |     2 +-
 .../master/assignment/GCRegionProcedure.html    |     2 +-
 .../assignment/MergeTableRegionsProcedure.html  |     2 +-
 .../master/assignment/MoveRegionProcedure.html  |     2 +-
 .../assignment/SplitTableRegionProcedure.html   |     2 +-
 .../hbase/master/balancer/package-tree.html     |     2 +-
 .../hadoop/hbase/master/class-use/HMaster.html  |    26 +-
 .../hadoop/hbase/master/package-tree.html       |     6 +-
 .../apache/hadoop/hbase/master/package-use.html |    11 +-
 .../AbstractStateMachineNamespaceProcedure.html |     2 +-
 .../AbstractStateMachineRegionProcedure.html    |     2 +-
 .../AbstractStateMachineTableProcedure.html     |     2 +-
 .../procedure/AddColumnFamilyProcedure.html     |     2 +-
 .../procedure/CloneSnapshotProcedure.html       |     2 +-
 .../procedure/CreateNamespaceProcedure.html     |     2 +-
 .../master/procedure/CreateTableProcedure.html  |     2 +-
 .../procedure/DeleteColumnFamilyProcedure.html  |     2 +-
 .../procedure/DeleteNamespaceProcedure.html     |     2 +-
 .../master/procedure/DeleteTableProcedure.html  |     2 +-
 .../master/procedure/DisableTableProcedure.html |     2 +-
 .../master/procedure/EnableTableProcedure.html  |     2 +-
 .../MasterProcedureScheduler.FairQueue.html     |    30 +-
 .../MasterProcedureScheduler.Queue.html         |    44 +-
 .../MasterProcedureScheduler.SchemaLocking.html |    32 +-
 .../MasterProcedureScheduler.ServerQueue.html   |     8 +-
 ...edureScheduler.ServerQueueKeyComparator.html |     6 +-
 .../MasterProcedureScheduler.TableQueue.html    |    12 +-
 ...cedureScheduler.TableQueueKeyComparator.html |     6 +-
 .../procedure/MasterProcedureScheduler.html     |    74 +-
 .../procedure/ModifyColumnFamilyProcedure.html  |     2 +-
 .../procedure/ModifyNamespaceProcedure.html     |     2 +-
 .../master/procedure/ModifyTableProcedure.html  |     2 +-
 .../ProcedureSyncWait.ProcedureFuture.html      |     4 +-
 .../master/procedure/RecoverMetaProcedure.html  |   860 +
 .../procedure/RestoreSnapshotProcedure.html     |     6 +-
 .../master/procedure/ServerCrashProcedure.html  |   125 +-
 .../procedure/TableProcedureInterface.html      |     2 +-
 .../procedure/TruncateTableProcedure.html       |     2 +-
 .../procedure/class-use/MasterProcedureEnv.html |   178 +-
 .../class-use/ProcedurePrepareLatch.html        |    11 +
 .../class-use/RecoverMetaProcedure.html         |   125 +
 ...leProcedureInterface.TableOperationType.html |    12 +-
 .../class-use/TableProcedureInterface.html      |     9 +-
 .../hbase/master/procedure/package-frame.html   |     1 +
 .../hbase/master/procedure/package-summary.html |    21 +-
 .../hbase/master/procedure/package-tree.html    |     3 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    12 +-
 .../procedure2/StateMachineProcedure.Flow.html  |    10 +-
 .../hbase/procedure2/StateMachineProcedure.html |   121 +-
 .../class-use/Procedure.LockState.html          |     4 +
 .../hbase/procedure2/class-use/Procedure.html   |    11 +-
 .../class-use/ProcedureSuspendedException.html  |     5 +
 .../class-use/ProcedureYieldException.html      |     5 +
 .../class-use/StateMachineProcedure.Flow.html   |     9 +-
 .../class-use/StateMachineProcedure.html        |    11 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     4 +-
 .../hadoop/hbase/quotas/package-tree.html       |     8 +-
 .../hadoop/hbase/regionserver/package-tree.html |    18 +-
 .../regionserver/querymatcher/package-tree.html |     4 +-
 .../hadoop/hbase/rest/model/package-tree.html   |     2 +-
 .../hbase/security/access/package-tree.html     |     2 +-
 .../hadoop/hbase/security/package-tree.html     |     2 +-
 .../hadoop/hbase/thrift/package-tree.html       |     2 +-
 .../apache/hadoop/hbase/util/package-tree.html  |    10 +-
 devapidocs/overview-tree.html                   |     1 +
 .../org/apache/hadoop/hbase/Version.html        |     6 +-
 .../master/HMaster.InitializationMonitor.html   |  6431 ++--
 .../hbase/master/HMaster.RedirectServlet.html   |  6431 ++--
 .../org/apache/hadoop/hbase/master/HMaster.html |  6431 ++--
 .../hbase/master/MasterMetaBootstrap.html       |   335 +-
 .../hadoop/hbase/master/MasterServices.html     |     9 +-
 .../hadoop/hbase/master/MasterWalManager.html   |     2 +-
 ...signmentManager.RegionInTransitionChore.html |   712 +-
 ...ssignmentManager.RegionInTransitionStat.html |   712 +-
 .../master/assignment/AssignmentManager.html    |   712 +-
 .../MasterProcedureScheduler.FairQueue.html     |  2066 +-
 .../MasterProcedureScheduler.Queue.html         |  2066 +-
 .../MasterProcedureScheduler.SchemaLocking.html |  2066 +-
 .../MasterProcedureScheduler.ServerQueue.html   |  2066 +-
 ...edureScheduler.ServerQueueKeyComparator.html |  2066 +-
 ...asterProcedureScheduler.TablePriorities.html |  2066 +-
 .../MasterProcedureScheduler.TableQueue.html    |  2066 +-
 ...cedureScheduler.TableQueueKeyComparator.html |  2066 +-
 .../procedure/MasterProcedureScheduler.html     |  2066 +-
 .../master/procedure/RecoverMetaProcedure.html  |   325 +
 .../master/procedure/ServerCrashProcedure.html  |   774 +-
 .../procedure2/StateMachineProcedure.Flow.html  |   462 +-
 .../hbase/procedure2/StateMachineProcedure.html |   462 +-
 export_control.html                             |     4 +-
 hbase-annotations/checkstyle.html               |     6 +-
 hbase-annotations/dependencies.html             |     6 +-
 hbase-annotations/dependency-convergence.html   |     6 +-
 hbase-annotations/dependency-info.html          |     6 +-
 hbase-annotations/dependency-management.html    |     6 +-
 hbase-annotations/index.html                    |     6 +-
 hbase-annotations/integration.html              |     6 +-
 hbase-annotations/issue-tracking.html           |     6 +-
 hbase-annotations/license.html                  |     6 +-
 hbase-annotations/mail-lists.html               |     6 +-
 hbase-annotations/plugin-management.html        |     6 +-
 hbase-annotations/plugins.html                  |     6 +-
 hbase-annotations/project-info.html             |     6 +-
 hbase-annotations/project-reports.html          |     6 +-
 hbase-annotations/project-summary.html          |     6 +-
 hbase-annotations/source-repository.html        |     6 +-
 hbase-annotations/team-list.html                |     6 +-
 hbase-archetypes/dependencies.html              |     6 +-
 hbase-archetypes/dependency-convergence.html    |     6 +-
 hbase-archetypes/dependency-info.html           |     6 +-
 hbase-archetypes/dependency-management.html     |     6 +-
 .../hbase-archetype-builder/dependencies.html   |     6 +-
 .../dependency-convergence.html                 |     6 +-
 .../dependency-info.html                        |     6 +-
 .../dependency-management.html                  |     6 +-
 .../hbase-archetype-builder/index.html          |     6 +-
 .../hbase-archetype-builder/integration.html    |     6 +-
 .../hbase-archetype-builder/issue-tracking.html |     6 +-
 .../hbase-archetype-builder/license.html        |     6 +-
 .../hbase-archetype-builder/mail-lists.html     |     6 +-
 .../plugin-management.html                      |     6 +-
 .../hbase-archetype-builder/plugins.html        |     6 +-
 .../hbase-archetype-builder/project-info.html   |     6 +-
 .../project-summary.html                        |     6 +-
 .../source-repository.html                      |     6 +-
 .../hbase-archetype-builder/team-list.html      |     6 +-
 .../hbase-client-project/checkstyle.html        |     6 +-
 .../hbase-client-project/dependencies.html      |     6 +-
 .../dependency-convergence.html                 |     6 +-
 .../hbase-client-project/dependency-info.html   |     6 +-
 .../dependency-management.html                  |     6 +-
 .../hbase-client-project/index.html             |     6 +-
 .../hbase-client-project/integration.html       |     6 +-
 .../hbase-client-project/issue-tracking.html    |     6 +-
 .../hbase-client-project/license.html           |     6 +-
 .../hbase-client-project/mail-lists.html        |     6 +-
 .../hbase-client-project/plugin-management.html |     6 +-
 .../hbase-client-project/plugins.html           |     6 +-
 .../hbase-client-project/project-info.html      |     6 +-
 .../hbase-client-project/project-reports.html   |     6 +-
 .../hbase-client-project/project-summary.html   |     6 +-
 .../hbase-client-project/source-repository.html |     6 +-
 .../hbase-client-project/team-list.html         |     6 +-
 .../hbase-shaded-client-project/checkstyle.html |     6 +-
 .../dependencies.html                           |     6 +-
 .../dependency-convergence.html                 |     6 +-
 .../dependency-info.html                        |     6 +-
 .../dependency-management.html                  |     6 +-
 .../hbase-shaded-client-project/index.html      |     6 +-
 .../integration.html                            |     6 +-
 .../issue-tracking.html                         |     6 +-
 .../hbase-shaded-client-project/license.html    |     6 +-
 .../hbase-shaded-client-project/mail-lists.html |     6 +-
 .../plugin-management.html                      |     6 +-
 .../hbase-shaded-client-project/plugins.html    |     6 +-
 .../project-info.html                           |     6 +-
 .../project-reports.html                        |     6 +-
 .../project-summary.html                        |     6 +-
 .../source-repository.html                      |     6 +-
 .../hbase-shaded-client-project/team-list.html  |     6 +-
 hbase-archetypes/index.html                     |     6 +-
 hbase-archetypes/integration.html               |     6 +-
 hbase-archetypes/issue-tracking.html            |     6 +-
 hbase-archetypes/license.html                   |   211 +-
 hbase-archetypes/mail-lists.html                |     6 +-
 hbase-archetypes/plugin-management.html         |     6 +-
 hbase-archetypes/plugins.html                   |     6 +-
 hbase-archetypes/project-info.html              |     6 +-
 hbase-archetypes/project-summary.html           |     6 +-
 hbase-archetypes/source-repository.html         |     6 +-
 hbase-archetypes/team-list.html                 |     6 +-
 hbase-spark/checkstyle.html                     |     6 +-
 hbase-spark/dependencies.html                   |     6 +-
 hbase-spark/dependency-convergence.html         |     6 +-
 hbase-spark/dependency-info.html                |     6 +-
 hbase-spark/dependency-management.html          |     6 +-
 hbase-spark/index.html                          |     6 +-
 hbase-spark/integration.html                    |     6 +-
 hbase-spark/issue-tracking.html                 |     6 +-
 hbase-spark/license.html                        |     6 +-
 hbase-spark/mail-lists.html                     |     6 +-
 hbase-spark/plugin-management.html              |     6 +-
 hbase-spark/plugins.html                        |     6 +-
 hbase-spark/project-info.html                   |     6 +-
 hbase-spark/project-reports.html                |     6 +-
 hbase-spark/project-summary.html                |     6 +-
 hbase-spark/source-repository.html              |     6 +-
 hbase-spark/team-list.html                      |     6 +-
 index.html                                      |     4 +-
 integration.html                                |     4 +-
 issue-tracking.html                             |     4 +-
 license.html                                    |   208 +-
 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                   |     4 +-
 .../hbase/TestLocalHBaseCluster.MyHMaster.html  |     2 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     2 +-
 .../hbase/master/MockNoopMasterServices.html    |   188 +-
 .../master/TestMasterMetrics.MyMaster.html      |     2 +-
 ...TestSplitLogManager.DummyMasterServices.html |     2 +-
 .../master/assignment/MockMasterServices.html   |     2 +-
 ...estingUtility.InjectAbortOnLoadListener.html |    16 +-
 .../MasterProcedureTestingUtility.html          |    44 +-
 .../procedure/TestServerCrashProcedure.html     |    14 +-
 .../org/apache/hadoop/hbase/package-tree.html   |     8 +-
 ...edureRecovery.TestStateMachineProcedure.html |     2 +-
 ...ureToString.SimpleStateMachineProcedure.html |     2 +-
 ...stStateMachineProcedure.TestSMProcedure.html |     2 +-
 ...eldProcedures.TestStateMachineProcedure.html |     2 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     2 +-
 ...egionMergeTransactionOnCluster.MyMaster.html |     2 +-
 .../TestSplitTransactionOnCluster.MyMaster.html |     2 +-
 .../hadoop/hbase/regionserver/package-tree.html |     4 +-
 .../apache/hadoop/hbase/test/package-tree.html  |     2 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 .../hbase/master/MockNoopMasterServices.html    |   815 +-
 .../hbase/master/TestMasterNoCluster.html       |     2 +-
 ...estingUtility.InjectAbortOnLoadListener.html |   845 +-
 .../MasterProcedureTestingUtility.html          |   845 +-
 .../procedure/TestServerCrashProcedure.html     |   148 +-
 267 files changed, 43305 insertions(+), 41371 deletions(-)
----------------------------------------------------------------------


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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index c5da7a6..9232418 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:20170731145146+00'00')
-/CreationDate (D:20170731145146+00'00')
+/ModDate (D:20170801144907+00'00')
+/CreationDate (D:20170801144907+00'00')
 >>
 endobj
 2 0 obj
@@ -611367,7 +611367,7 @@ endobj
 << /Border [0 0 0]
 /A << /Type /Action
 /S /URI
-/URI (https://issues.apache.org/jira/issues/?jql=project%20%3D%20HBASE%20AND%20labels%20in%20\(beginner\))
+/URI (https://issues.apache.org/jira/issues/?jql=project%20%3D%20HBASE%20AND%20labels%20in%20\(beginner\)%20AND%20status%20in%20\(Open%2C%20%22In%20Progress%22%2C%20Reopened\))
 >>
 /Subtype /Link
 /Rect [439.9439 613.34 547.04 627.62]
@@ -611378,7 +611378,7 @@ endobj
 << /Border [0 0 0]
 /A << /Type /Action
 /S /URI
-/URI (https://issues.apache.org/jira/issues/?jql=project%20%3D%20HBASE%20AND%20labels%20in%20\(beginner\))
+/URI (https://issues.apache.org/jira/issues/?jql=project%20%3D%20HBASE%20AND%20labels%20in%20\(beginner\)%20AND%20status%20in%20\(Open%2C%20%22In%20Progress%22%2C%20Reopened\))
 >>
 /Subtype /Link
 /Rect [48.24 597.56 169.3575 611.84]
@@ -758124,1447 +758124,1447 @@ xref
 0009244682 00000 n 
 0009245097 00000 n 
 0009245145 00000 n 
-0009245389 00000 n 
-0009245632 00000 n 
-0009248000 00000 n 
-0009248385 00000 n 
-0009248433 00000 n 
-0009248625 00000 n 
-0009248818 00000 n 
-0009248986 00000 n 
-0009262985 00000 n 
-0009263401 00000 n 
-0009263449 00000 n 
-0009263497 00000 n 
-0009263545 00000 n 
-0009263679 00000 n 
-0009263727 00000 n 
-0009263775 00000 n 
-0009263949 00000 n 
-0009273948 00000 n 
-0009274322 00000 n 
-0009274370 00000 n 
-0009274417 00000 n 
-0009274465 00000 n 
-0009284042 00000 n 
-0009284486 00000 n 
-0009284534 00000 n 
-0009285080 00000 n 
-0009285305 00000 n 
-0009285529 00000 n 
-0009285577 00000 n 
-0009285718 00000 n 
-0009285767 00000 n 
-0009285893 00000 n 
-0009286091 00000 n 
-0009296094 00000 n 
-0009296509 00000 n 
-0009296557 00000 n 
-0009296605 00000 n 
-0009296725 00000 n 
-0009296774 00000 n 
-0009297413 00000 n 
-0009297462 00000 n 
-0009297588 00000 n 
-0009297637 00000 n 
-0009297686 00000 n 
-0009309904 00000 n 
-0009310306 00000 n 
-0009310354 00000 n 
-0009310487 00000 n 
-0009310616 00000 n 
-0009310664 00000 n 
-0009310712 00000 n 
-0009322035 00000 n 
-0009322446 00000 n 
-0009322494 00000 n 
-0009322542 00000 n 
-0009322667 00000 n 
-0009322715 00000 n 
-0009322900 00000 n 
-0009323082 00000 n 
-0009324571 00000 n 
-0009324964 00000 n 
-0009325012 00000 n 
-0009325135 00000 n 
-0009325184 00000 n 
-0009342532 00000 n 
-0009342919 00000 n 
-0009342968 00000 n 
-0009357930 00000 n 
-0009358354 00000 n 
-0009358545 00000 n 
-0009358716 00000 n 
-0009358910 00000 n 
-0009371537 00000 n 
-0009371911 00000 n 
-0009386466 00000 n 
-0009386886 00000 n 
-0009387023 00000 n 
-0009387160 00000 n 
-0009387297 00000 n 
-0009387474 00000 n 
-0009401430 00000 n 
-0009401832 00000 n 
-0009402029 00000 n 
-0009402232 00000 n 
-0009414066 00000 n 
-0009414495 00000 n 
-0009414687 00000 n 
-0009414735 00000 n 
-0009414869 00000 n 
-0009415003 00000 n 
-0009415137 00000 n 
-0009415266 00000 n 
-0009418832 00000 n 
-0009419217 00000 n 
-0009419265 00000 n 
-0009419470 00000 n 
-0009419652 00000 n 
-0009419832 00000 n 
-0009421911 00000 n 
-0009422287 00000 n 
-0009422335 00000 n 
-0009422534 00000 n 
-0009422685 00000 n 
-0009425235 00000 n 
-0009425629 00000 n 
-0009425677 00000 n 
-0009425845 00000 n 
-0009425893 00000 n 
-0009426047 00000 n 
-0009426095 00000 n 
-0009426263 00000 n 
-0009426393 00000 n 
-0009439540 00000 n 
-0009439938 00000 n 
-0009439986 00000 n 
-0009440111 00000 n 
-0009440159 00000 n 
-0009440291 00000 n 
-0009440339 00000 n 
-0009440553 00000 n 
-0009458916 00000 n 
-0009459314 00000 n 
-0009459362 00000 n 
-0009459499 00000 n 
-0009459547 00000 n 
-0009459722 00000 n 
-0009459854 00000 n 
-0009471915 00000 n 
-0009472317 00000 n 
-0009472373 00000 n 
-0009472557 00000 n 
-0009472613 00000 n 
-0009472669 00000 n 
-0009472725 00000 n 
-0009472861 00000 n 
-0009472910 00000 n 
-0009472959 00000 n 
-0009473008 00000 n 
-0009473057 00000 n 
-0009486752 00000 n 
-0009487113 00000 n 
-0009487161 00000 n 
-0009487209 00000 n 
-0009500083 00000 n 
-0009500457 00000 n 
-0009500505 00000 n 
-0009501128 00000 n 
-0009501176 00000 n 
-0009501224 00000 n 
-0009501272 00000 n 
-0009508612 00000 n 
-0009508960 00000 n 
-0009509008 00000 n 
-0009509056 00000 n 
-0009509104 00000 n 
-0009509152 00000 n 
-0009534827 00000 n 
-0009535188 00000 n 
-0009535236 00000 n 
-0009551851 00000 n 
-0009552227 00000 n 
-0009567855 00000 n 
-0009568248 00000 n 
-0009568296 00000 n 
-0009568495 00000 n 
-0009568543 00000 n 
-0009568591 00000 n 
-0009585478 00000 n 
-0009585898 00000 n 
-0009586093 00000 n 
-0009586275 00000 n 
-0009586323 00000 n 
-0009586540 00000 n 
-0009586756 00000 n 
-0009598936 00000 n 
-0009599284 00000 n 
-0009611172 00000 n 
-0009611574 00000 n 
-0009611623 00000 n 
-0009611672 00000 n 
-0009611870 00000 n 
-0009612006 00000 n 
-0009612055 00000 n 
-0009627691 00000 n 
-0009628052 00000 n 
-0009639449 00000 n 
-0009639855 00000 n 
-0009639903 00000 n 
-0009639951 00000 n 
-0009639999 00000 n 
-0009640185 00000 n 
-0009640234 00000 n 
-0009640283 00000 n 
-0009654771 00000 n 
-0009655186 00000 n 
-0009655235 00000 n 
-0009655969 00000 n 
-0009656173 00000 n 
-0009656314 00000 n 
-0009656363 00000 n 
-0009686862 00000 n 
-0009687223 00000 n 
-0009687271 00000 n 
-0009687319 00000 n 
-0009687367 00000 n 
-0009687415 00000 n 
-0009701785 00000 n 
-0009702146 00000 n 
-0009702194 00000 n 
-0009702242 00000 n 
-0009702290 00000 n 
-0009702338 00000 n 
-0009702386 00000 n 
-0009702955 00000 n 
-0009713560 00000 n 
-0009713984 00000 n 
-0009714033 00000 n 
-0009714261 00000 n 
-0009714488 00000 n 
-0009714537 00000 n 
-0009714586 00000 n 
-0009715069 00000 n 
-0009715266 00000 n 
-0009715315 00000 n 
-0009725786 00000 n 
-0009726166 00000 n 
-0009726214 00000 n 
-0009726425 00000 n 
-0009726473 00000 n 
-0009726521 00000 n 
-0009726569 00000 n 
-0009741615 00000 n 
-0009742044 00000 n 
-0009742092 00000 n 
-0009742140 00000 n 
-0009742325 00000 n 
-0009742497 00000 n 
-0009742677 00000 n 
-0009742854 00000 n 
-0009742902 00000 n 
-0009743039 00000 n 
-0009759141 00000 n 
-0009759590 00000 n 
-0009759720 00000 n 
-0009759939 00000 n 
-0009759988 00000 n 
-0009760114 00000 n 
-0009760242 00000 n 
-0009773219 00000 n 
-0009773672 00000 n 
-0009773720 00000 n 
-0009773768 00000 n 
-0009773935 00000 n 
-0009774105 00000 n 
-0009774297 00000 n 
-0009774346 00000 n 
-0009774395 00000 n 
-0009774591 00000 n 
-0009774778 00000 n 
-0009774827 00000 n 
-0009775264 00000 n 
-0009775498 00000 n 
-0009789742 00000 n 
-0009790194 00000 n 
-0009790241 00000 n 
-0009790466 00000 n 
-0009790687 00000 n 
-0009790735 00000 n 
-0009790926 00000 n 
-0009804013 00000 n 
-0009804387 00000 n 
-0009815569 00000 n 
-0009815949 00000 n 
-0009815997 00000 n 
-0009816045 00000 n 
-0009816227 00000 n 
-0009824785 00000 n 
-0009825214 00000 n 
-0009825262 00000 n 
-0009825310 00000 n 
-0009825975 00000 n 
-0009826157 00000 n 
-0009826338 00000 n 
-0009826386 00000 n 
-0009826806 00000 n 
-0009826854 00000 n 
-0009827004 00000 n 
-0009827052 00000 n 
-0009827100 00000 n 
-0009827362 00000 n 
-0009827410 00000 n 
-0009827605 00000 n 
-0009829522 00000 n 
-0009829907 00000 n 
-0009829955 00000 n 
-0009830189 00000 n 
-0009830422 00000 n 
-0009830550 00000 n 
-0009856251 00000 n 
-0009856631 00000 n 
-0009856679 00000 n 
-0009856840 00000 n 
-0009882297 00000 n 
-0009882664 00000 n 
-0009882863 00000 n 
-0009890501 00000 n 
-0009890890 00000 n 
-0009890938 00000 n 
-0009891118 00000 n 
-0009891244 00000 n 
-0009935597 00000 n 
-0009935945 00000 n 
-0009968116 00000 n 
-0009968496 00000 n 
-0009968544 00000 n 
-0009968713 00000 n 
-0010013421 00000 n 
-0010013769 00000 n 
-0010020490 00000 n 
-0010020883 00000 n 
-0010020931 00000 n 
-0010021057 00000 n 
-0010068734 00000 n 
-0010069114 00000 n 
-0010069367 00000 n 
-0010069771 00000 n 
-0010070119 00000 n 
-0010070167 00000 n 
-0010085719 00000 n 
-0010086139 00000 n 
-0010086187 00000 n 
-0010086358 00000 n 
-0010086484 00000 n 
-0010086599 00000 n 
-0010086730 00000 n 
-0010086778 00000 n 
-0010111109 00000 n 
-0010111457 00000 n 
-0010130350 00000 n 
-0010130756 00000 n 
-0010130804 00000 n 
-0010130949 00000 n 
-0010149495 00000 n 
-0010149901 00000 n 
-0010150123 00000 n 
-0010158138 00000 n 
-0010158558 00000 n 
-0010158606 00000 n 
-0010159085 00000 n 
-0010159292 00000 n 
-0010159505 00000 n 
-0010159717 00000 n 
-0010159910 00000 n 
-0010160137 00000 n 
-0010180066 00000 n 
-0010180468 00000 n 
-0010180516 00000 n 
-0010180711 00000 n 
-0010180905 00000 n 
-0010180953 00000 n 
-0010201111 00000 n 
-0010201504 00000 n 
-0010201552 00000 n 
-0010201790 00000 n 
-0010232706 00000 n 
-0010233080 00000 n 
-0010233128 00000 n 
-0010252317 00000 n 
-0010252678 00000 n 
-0010261638 00000 n 
-0010262012 00000 n 
-0010262059 00000 n 
-0010262106 00000 n 
-0010262591 00000 n 
-0010272786 00000 n 
-0010273147 00000 n 
-0010273195 00000 n 
-0010273243 00000 n 
-0010273291 00000 n 
-0010276204 00000 n 
-0010276584 00000 n 
-0010276632 00000 n 
-0010276828 00000 n 
-0010276876 00000 n 
-0010277266 00000 n 
-0010277614 00000 n 
-0010277662 00000 n 
-0010290495 00000 n 
-0010290933 00000 n 
-0010290981 00000 n 
-0010291169 00000 n 
-0010291218 00000 n 
-0010291482 00000 n 
-0010291606 00000 n 
-0010291870 00000 n 
-0010291919 00000 n 
-0010292106 00000 n 
-0010292155 00000 n 
-0010292340 00000 n 
-0010292389 00000 n 
-0010296732 00000 n 
-0010297112 00000 n 
-0010297160 00000 n 
-0010297208 00000 n 
-0010297472 00000 n 
-0010300840 00000 n 
-0010301220 00000 n 
-0010301268 00000 n 
-0010301453 00000 n 
-0010301841 00000 n 
-0010302189 00000 n 
-0010302237 00000 n 
-0010302748 00000 n 
-0010314670 00000 n 
-0010315081 00000 n 
-0010315129 00000 n 
-0010315305 00000 n 
-0010315471 00000 n 
-0010315596 00000 n 
-0010315644 00000 n 
-0010315692 00000 n 
-0010329371 00000 n 
-0010329779 00000 n 
-0010329827 00000 n 
-0010330047 00000 n 
-0010349948 00000 n 
-0010350372 00000 n 
-0010350515 00000 n 
-0010350562 00000 n 
-0010350610 00000 n 
-0010350779 00000 n 
-0010350964 00000 n 
-0010376555 00000 n 
-0010376953 00000 n 
-0010377160 00000 n 
-0010377368 00000 n 
-0010377575 00000 n 
-0010395717 00000 n 
-0010396078 00000 n 
-0010410770 00000 n 
-0010411177 00000 n 
-0010411382 00000 n 
-0010411587 00000 n 
-0010411790 00000 n 
-0010411994 00000 n 
-0010420366 00000 n 
-0010420727 00000 n 
-0010429080 00000 n 
-0010429478 00000 n 
-0010429686 00000 n 
-0010429896 00000 n 
-0010430105 00000 n 
-0010444320 00000 n 
-0010444722 00000 n 
-0010444918 00000 n 
-0010445114 00000 n 
-0010462021 00000 n 
-0010462428 00000 n 
-0010462478 00000 n 
-0010462611 00000 n 
-0010462661 00000 n 
-0010473252 00000 n 
-0010473626 00000 n 
-0010473674 00000 n 
-0010473722 00000 n 
-0010484815 00000 n 
-0010485253 00000 n 
-0010485301 00000 n 
-0010485799 00000 n 
-0010485847 00000 n 
-0010485975 00000 n 
-0010486160 00000 n 
-0010486330 00000 n 
-0010486455 00000 n 
-0010486582 00000 n 
-0010486710 00000 n 
-0010486758 00000 n 
-0010498684 00000 n 
-0010499167 00000 n 
-0010499216 00000 n 
-0010499344 00000 n 
-0010499393 00000 n 
-0010499519 00000 n 
-0010499649 00000 n 
-0010499698 00000 n 
-0010499823 00000 n 
-0010499947 00000 n 
-0010500081 00000 n 
-0010500215 00000 n 
-0010500350 00000 n 
-0010500473 00000 n 
-0010500609 00000 n 
-0010500739 00000 n 
-0010506314 00000 n 
-0010506744 00000 n 
-0010506792 00000 n 
-0010506915 00000 n 
-0010506963 00000 n 
-0010507089 00000 n 
-0010507209 00000 n 
-0010507257 00000 n 
-0010507383 00000 n 
-0010507505 00000 n 
-0010507553 00000 n 
-0010507674 00000 n 
-0010507798 00000 n 
-0010507846 00000 n 
-0010507970 00000 n 
-0010519130 00000 n 
-0010519504 00000 n 
-0010519552 00000 n 
-0010519600 00000 n 
-0010519648 00000 n 
-0010532894 00000 n 
-0010533268 00000 n 
-0010533316 00000 n 
-0010546614 00000 n 
-0010546975 00000 n 
-0010547023 00000 n 
-0010558513 00000 n 
-0010558887 00000 n 
-0010558935 00000 n 
-0010558983 00000 n 
-0010559031 00000 n 
-0010559079 00000 n 
-0010567073 00000 n 
-0010567434 00000 n 
-0010567482 00000 n 
-0010567531 00000 n 
-0010567580 00000 n 
-0010588744 00000 n 
-0010589118 00000 n 
-0010626518 00000 n 
-0010626866 00000 n 
-0010664533 00000 n 
-0010664881 00000 n 
-0010697470 00000 n 
-0010697818 00000 n 
-0010709808 00000 n 
-0010710156 00000 n 
-0010721360 00000 n 
-0010721798 00000 n 
-0010721846 00000 n 
-0010722357 00000 n 
-0010722506 00000 n 
-0010722703 00000 n 
-0010722838 00000 n 
-0010722975 00000 n 
-0010723114 00000 n 
-0010723256 00000 n 
-0010728642 00000 n 
-0010729044 00000 n 
-0010769701 00000 n 
-0010797464 00000 n 
-0010805941 00000 n 
-0010806344 00000 n 
-0010852385 00000 n 
-0010852582 00000 n 
-0010852761 00000 n 
-0010871241 00000 n 
-0010871647 00000 n 
-0010871695 00000 n 
-0010871878 00000 n 
-0010871926 00000 n 
-0010906302 00000 n 
-0010906676 00000 n 
-0010937906 00000 n 
-0010938317 00000 n 
-0010938510 00000 n 
-0010938702 00000 n 
-0010938913 00000 n 
-0010938961 00000 n 
-0010939009 00000 n 
-0010953650 00000 n 
-0010954066 00000 n 
-0010954265 00000 n 
-0010954403 00000 n 
-0010954453 00000 n 
-0010954653 00000 n 
-0010954797 00000 n 
-0010954847 00000 n 
-0010954985 00000 n 
-0010955035 00000 n 
-0010968884 00000 n 
-0010969299 00000 n 
-0010969431 00000 n 
-0010969573 00000 n 
-0010969621 00000 n 
-0010969670 00000 n 
-0010969719 00000 n 
-0010982926 00000 n 
-0010983300 00000 n 
-0010983349 00000 n 
-0010992023 00000 n 
-0010992384 00000 n 
-0011000219 00000 n 
-0011000593 00000 n 
-0011000641 00000 n 
-0011001970 00000 n 
-0011002346 00000 n 
-0011002394 00000 n 
-0011002442 00000 n 
-0011002610 00000 n 
-0011002658 00000 n 
-0011002839 00000 n 
-0011005795 00000 n 
-0011006189 00000 n 
-0011006237 00000 n 
-0011006422 00000 n 
-0011006615 00000 n 
-0011006792 00000 n 
-0011006968 00000 n 
-0011014171 00000 n 
-0011014546 00000 n 
-0011014594 00000 n 
-0011014642 00000 n 
-0011014690 00000 n 
-0011040577 00000 n 
-0011045140 00000 n 
-0011045189 00000 n 
-0011045238 00000 n 
-0011045287 00000 n 
-0011053205 00000 n 
-0011053566 00000 n 
-0011053614 00000 n 
-0011100382 00000 n 
-0011107195 00000 n 
-0011107557 00000 n 
-0011107605 00000 n 
-0011117554 00000 n 
-0011117915 00000 n 
-0011117963 00000 n 
-0011118011 00000 n 
-0011130283 00000 n 
-0011130644 00000 n 
-0011130692 00000 n 
-0011144444 00000 n 
-0011144805 00000 n 
-0011144853 00000 n 
-0011144901 00000 n 
-0011144949 00000 n 
-0011162882 00000 n 
-0011163230 00000 n 
-0011163278 00000 n 
-0011175743 00000 n 
-0011176195 00000 n 
-0011176243 00000 n 
-0011176291 00000 n 
+0009245459 00000 n 
+0009245772 00000 n 
+0009248140 00000 n 
+0009248525 00000 n 
+0009248573 00000 n 
+0009248765 00000 n 
+0009248958 00000 n 
+0009249126 00000 n 
+0009263125 00000 n 
+0009263541 00000 n 
+0009263589 00000 n 
+0009263637 00000 n 
+0009263685 00000 n 
+0009263819 00000 n 
+0009263867 00000 n 
+0009263915 00000 n 
+0009264089 00000 n 
+0009274088 00000 n 
+0009274462 00000 n 
+0009274510 00000 n 
+0009274557 00000 n 
+0009274605 00000 n 
+0009284182 00000 n 
+0009284626 00000 n 
+0009284674 00000 n 
+0009285220 00000 n 
+0009285445 00000 n 
+0009285669 00000 n 
+0009285717 00000 n 
+0009285858 00000 n 
+0009285907 00000 n 
+0009286033 00000 n 
+0009286231 00000 n 
+0009296234 00000 n 
+0009296649 00000 n 
+0009296697 00000 n 
+0009296745 00000 n 
+0009296865 00000 n 
+0009296914 00000 n 
+0009297553 00000 n 
+0009297602 00000 n 
+0009297728 00000 n 
+0009297777 00000 n 
+0009297826 00000 n 
+0009310044 00000 n 
+0009310446 00000 n 
+0009310494 00000 n 
+0009310627 00000 n 
+0009310756 00000 n 
+0009310804 00000 n 
+0009310852 00000 n 
+0009322175 00000 n 
+0009322586 00000 n 
+0009322634 00000 n 
+0009322682 00000 n 
+0009322807 00000 n 
+0009322855 00000 n 
+0009323040 00000 n 
+0009323222 00000 n 
+0009324711 00000 n 
+0009325104 00000 n 
+0009325152 00000 n 
+0009325275 00000 n 
+0009325324 00000 n 
+0009342672 00000 n 
+0009343059 00000 n 
+0009343108 00000 n 
+0009358070 00000 n 
+0009358494 00000 n 
+0009358685 00000 n 
+0009358856 00000 n 
+0009359050 00000 n 
+0009371677 00000 n 
+0009372051 00000 n 
+0009386606 00000 n 
+0009387026 00000 n 
+0009387163 00000 n 
+0009387300 00000 n 
+0009387437 00000 n 
+0009387614 00000 n 
+0009401570 00000 n 
+0009401972 00000 n 
+0009402169 00000 n 
+0009402372 00000 n 
+0009414206 00000 n 
+0009414635 00000 n 
+0009414827 00000 n 
+0009414875 00000 n 
+0009415009 00000 n 
+0009415143 00000 n 
+0009415277 00000 n 
+0009415406 00000 n 
+0009418972 00000 n 
+0009419357 00000 n 
+0009419405 00000 n 
+0009419610 00000 n 
+0009419792 00000 n 
+0009419972 00000 n 
+0009422051 00000 n 
+0009422427 00000 n 
+0009422475 00000 n 
+0009422674 00000 n 
+0009422825 00000 n 
+0009425375 00000 n 
+0009425769 00000 n 
+0009425817 00000 n 
+0009425985 00000 n 
+0009426033 00000 n 
+0009426187 00000 n 
+0009426235 00000 n 
+0009426403 00000 n 
+0009426533 00000 n 
+0009439680 00000 n 
+0009440078 00000 n 
+0009440126 00000 n 
+0009440251 00000 n 
+0009440299 00000 n 
+0009440431 00000 n 
+0009440479 00000 n 
+0009440693 00000 n 
+0009459056 00000 n 
+0009459454 00000 n 
+0009459502 00000 n 
+0009459639 00000 n 
+0009459687 00000 n 
+0009459862 00000 n 
+0009459994 00000 n 
+0009472055 00000 n 
+0009472457 00000 n 
+0009472513 00000 n 
+0009472697 00000 n 
+0009472753 00000 n 
+0009472809 00000 n 
+0009472865 00000 n 
+0009473001 00000 n 
+0009473050 00000 n 
+0009473099 00000 n 
+0009473148 00000 n 
+0009473197 00000 n 
+0009486892 00000 n 
+0009487253 00000 n 
+0009487301 00000 n 
+0009487349 00000 n 
+0009500223 00000 n 
+0009500597 00000 n 
+0009500645 00000 n 
+0009501268 00000 n 
+0009501316 00000 n 
+0009501364 00000 n 
+0009501412 00000 n 
+0009508752 00000 n 
+0009509100 00000 n 
+0009509148 00000 n 
+0009509196 00000 n 
+0009509244 00000 n 
+0009509292 00000 n 
+0009534967 00000 n 
+0009535328 00000 n 
+0009535376 00000 n 
+0009551991 00000 n 
+0009552367 00000 n 
+0009567995 00000 n 
+0009568388 00000 n 
+0009568436 00000 n 
+0009568635 00000 n 
+0009568683 00000 n 
+0009568731 00000 n 
+0009585618 00000 n 
+0009586038 00000 n 
+0009586233 00000 n 
+0009586415 00000 n 
+0009586463 00000 n 
+0009586680 00000 n 
+0009586896 00000 n 
+0009599076 00000 n 
+0009599424 00000 n 
+0009611312 00000 n 
+0009611714 00000 n 
+0009611763 00000 n 
+0009611812 00000 n 
+0009612010 00000 n 
+0009612146 00000 n 
+0009612195 00000 n 
+0009627831 00000 n 
+0009628192 00000 n 
+0009639589 00000 n 
+0009639995 00000 n 
+0009640043 00000 n 
+0009640091 00000 n 
+0009640139 00000 n 
+0009640325 00000 n 
+0009640374 00000 n 
+0009640423 00000 n 
+0009654911 00000 n 
+0009655326 00000 n 
+0009655375 00000 n 
+0009656109 00000 n 
+0009656313 00000 n 
+0009656454 00000 n 
+0009656503 00000 n 
+0009687002 00000 n 
+0009687363 00000 n 
+0009687411 00000 n 
+0009687459 00000 n 
+0009687507 00000 n 
+0009687555 00000 n 
+0009701925 00000 n 
+0009702286 00000 n 
+0009702334 00000 n 
+0009702382 00000 n 
+0009702430 00000 n 
+0009702478 00000 n 
+0009702526 00000 n 
+0009703095 00000 n 
+0009713700 00000 n 
+0009714124 00000 n 
+0009714173 00000 n 
+0009714401 00000 n 
+0009714628 00000 n 
+0009714677 00000 n 
+0009714726 00000 n 
+0009715209 00000 n 
+0009715406 00000 n 
+0009715455 00000 n 
+0009725926 00000 n 
+0009726306 00000 n 
+0009726354 00000 n 
+0009726565 00000 n 
+0009726613 00000 n 
+0009726661 00000 n 
+0009726709 00000 n 
+0009741755 00000 n 
+0009742184 00000 n 
+0009742232 00000 n 
+0009742280 00000 n 
+0009742465 00000 n 
+0009742637 00000 n 
+0009742817 00000 n 
+0009742994 00000 n 
+0009743042 00000 n 
+0009743179 00000 n 
+0009759281 00000 n 
+0009759730 00000 n 
+0009759860 00000 n 
+0009760079 00000 n 
+0009760128 00000 n 
+0009760254 00000 n 
+0009760382 00000 n 
+0009773359 00000 n 
+0009773812 00000 n 
+0009773860 00000 n 
+0009773908 00000 n 
+0009774075 00000 n 
+0009774245 00000 n 
+0009774437 00000 n 
+0009774486 00000 n 
+0009774535 00000 n 
+0009774731 00000 n 
+0009774918 00000 n 
+0009774967 00000 n 
+0009775404 00000 n 
+0009775638 00000 n 
+0009789882 00000 n 
+0009790334 00000 n 
+0009790381 00000 n 
+0009790606 00000 n 
+0009790827 00000 n 
+0009790875 00000 n 
+0009791066 00000 n 
+0009804153 00000 n 
+0009804527 00000 n 
+0009815709 00000 n 
+0009816089 00000 n 
+0009816137 00000 n 
+0009816185 00000 n 
+0009816367 00000 n 
+0009824925 00000 n 
+0009825354 00000 n 
+0009825402 00000 n 
+0009825450 00000 n 
+0009826115 00000 n 
+0009826297 00000 n 
+0009826478 00000 n 
+0009826526 00000 n 
+0009826946 00000 n 
+0009826994 00000 n 
+0009827144 00000 n 
+0009827192 00000 n 
+0009827240 00000 n 
+0009827502 00000 n 
+0009827550 00000 n 
+0009827745 00000 n 
+0009829662 00000 n 
+0009830047 00000 n 
+0009830095 00000 n 
+0009830329 00000 n 
+0009830562 00000 n 
+0009830690 00000 n 
+0009856391 00000 n 
+0009856771 00000 n 
+0009856819 00000 n 
+0009856980 00000 n 
+0009882437 00000 n 
+0009882804 00000 n 
+0009883003 00000 n 
+0009890641 00000 n 
+0009891030 00000 n 
+0009891078 00000 n 
+0009891258 00000 n 
+0009891384 00000 n 
+0009935737 00000 n 
+0009936085 00000 n 
+0009968256 00000 n 
+0009968636 00000 n 
+0009968684 00000 n 
+0009968853 00000 n 
+0010013561 00000 n 
+0010013909 00000 n 
+0010020630 00000 n 
+0010021023 00000 n 
+0010021071 00000 n 
+0010021197 00000 n 
+0010068874 00000 n 
+0010069254 00000 n 
+0010069507 00000 n 
+0010069911 00000 n 
+0010070259 00000 n 
+0010070307 00000 n 
+0010085859 00000 n 
+0010086279 00000 n 
+0010086327 00000 n 
+0010086498 00000 n 
+0010086624 00000 n 
+0010086739 00000 n 
+0010086870 00000 n 
+0010086918 00000 n 
+0010111249 00000 n 
+0010111597 00000 n 
+0010130490 00000 n 
+0010130896 00000 n 
+0010130944 00000 n 
+0010131089 00000 n 
+0010149635 00000 n 
+0010150041 00000 n 
+0010150263 00000 n 
+0010158278 00000 n 
+0010158698 00000 n 
+0010158746 00000 n 
+0010159225 00000 n 
+0010159432 00000 n 
+0010159645 00000 n 
+0010159857 00000 n 
+0010160050 00000 n 
+0010160277 00000 n 
+0010180206 00000 n 
+0010180608 00000 n 
+0010180656 00000 n 
+0010180851 00000 n 
+0010181045 00000 n 
+0010181093 00000 n 
+0010201251 00000 n 
+0010201644 00000 n 
+0010201692 00000 n 
+0010201930 00000 n 
+0010232846 00000 n 
+0010233220 00000 n 
+0010233268 00000 n 
+0010252457 00000 n 
+0010252818 00000 n 
+0010261778 00000 n 
+0010262152 00000 n 
+0010262199 00000 n 
+0010262246 00000 n 
+0010262731 00000 n 
+0010272926 00000 n 
+0010273287 00000 n 
+0010273335 00000 n 
+0010273383 00000 n 
+0010273431 00000 n 
+0010276344 00000 n 
+0010276724 00000 n 
+0010276772 00000 n 
+0010276968 00000 n 
+0010277016 00000 n 
+0010277406 00000 n 
+0010277754 00000 n 
+0010277802 00000 n 
+0010290635 00000 n 
+0010291073 00000 n 
+0010291121 00000 n 
+0010291309 00000 n 
+0010291358 00000 n 
+0010291622 00000 n 
+0010291746 00000 n 
+0010292010 00000 n 
+0010292059 00000 n 
+0010292246 00000 n 
+0010292295 00000 n 
+0010292480 00000 n 
+0010292529 00000 n 
+0010296872 00000 n 
+0010297252 00000 n 
+0010297300 00000 n 
+0010297348 00000 n 
+0010297612 00000 n 
+0010300980 00000 n 
+0010301360 00000 n 
+0010301408 00000 n 
+0010301593 00000 n 
+0010301981 00000 n 
+0010302329 00000 n 
+0010302377 00000 n 
+0010302888 00000 n 
+0010314810 00000 n 
+0010315221 00000 n 
+0010315269 00000 n 
+0010315445 00000 n 
+0010315611 00000 n 
+0010315736 00000 n 
+0010315784 00000 n 
+0010315832 00000 n 
+0010329511 00000 n 
+0010329919 00000 n 
+0010329967 00000 n 
+0010330187 00000 n 
+0010350088 00000 n 
+0010350512 00000 n 
+0010350655 00000 n 
+0010350702 00000 n 
+0010350750 00000 n 
+0010350919 00000 n 
+0010351104 00000 n 
+0010376695 00000 n 
+0010377093 00000 n 
+0010377300 00000 n 
+0010377508 00000 n 
+0010377715 00000 n 
+0010395857 00000 n 
+0010396218 00000 n 
+0010410910 00000 n 
+0010411317 00000 n 
+0010411522 00000 n 
+0010411727 00000 n 
+0010411930 00000 n 
+0010412134 00000 n 
+0010420506 00000 n 
+0010420867 00000 n 
+0010429220 00000 n 
+0010429618 00000 n 
+0010429826 00000 n 
+0010430036 00000 n 
+0010430245 00000 n 
+0010444460 00000 n 
+0010444862 00000 n 
+0010445058 00000 n 
+0010445254 00000 n 
+0010462161 00000 n 
+0010462568 00000 n 
+0010462618 00000 n 
+0010462751 00000 n 
+0010462801 00000 n 
+0010473392 00000 n 
+0010473766 00000 n 
+0010473814 00000 n 
+0010473862 00000 n 
+0010484955 00000 n 
+0010485393 00000 n 
+0010485441 00000 n 
+0010485939 00000 n 
+0010485987 00000 n 
+0010486115 00000 n 
+0010486300 00000 n 
+0010486470 00000 n 
+0010486595 00000 n 
+0010486722 00000 n 
+0010486850 00000 n 
+0010486898 00000 n 
+0010498824 00000 n 
+0010499307 00000 n 
+0010499356 00000 n 
+0010499484 00000 n 
+0010499533 00000 n 
+0010499659 00000 n 
+0010499789 00000 n 
+0010499838 00000 n 
+0010499963 00000 n 
+0010500087 00000 n 
+0010500221 00000 n 
+0010500355 00000 n 
+0010500490 00000 n 
+0010500613 00000 n 
+0010500749 00000 n 
+0010500879 00000 n 
+0010506454 00000 n 
+0010506884 00000 n 
+0010506932 00000 n 
+0010507055 00000 n 
+0010507103 00000 n 
+0010507229 00000 n 
+0010507349 00000 n 
+0010507397 00000 n 
+0010507523 00000 n 
+0010507645 00000 n 
+0010507693 00000 n 
+0010507814 00000 n 
+0010507938 00000 n 
+0010507986 00000 n 
+0010508110 00000 n 
+0010519270 00000 n 
+0010519644 00000 n 
+0010519692 00000 n 
+0010519740 00000 n 
+0010519788 00000 n 
+0010533034 00000 n 
+0010533408 00000 n 
+0010533456 00000 n 
+0010546754 00000 n 
+0010547115 00000 n 
+0010547163 00000 n 
+0010558653 00000 n 
+0010559027 00000 n 
+0010559075 00000 n 
+0010559123 00000 n 
+0010559171 00000 n 
+0010559219 00000 n 
+0010567213 00000 n 
+0010567574 00000 n 
+0010567622 00000 n 
+0010567671 00000 n 
+0010567720 00000 n 
+0010588884 00000 n 
+0010589258 00000 n 
+0010626658 00000 n 
+0010627006 00000 n 
+0010664673 00000 n 
+0010665021 00000 n 
+0010697610 00000 n 
+0010697958 00000 n 
+0010709948 00000 n 
+0010710296 00000 n 
+0010721500 00000 n 
+0010721938 00000 n 
+0010721986 00000 n 
+0010722497 00000 n 
+0010722646 00000 n 
+0010722843 00000 n 
+0010722978 00000 n 
+0010723115 00000 n 
+0010723254 00000 n 
+0010723396 00000 n 
+0010728782 00000 n 
+0010729184 00000 n 
+0010769841 00000 n 
+0010797604 00000 n 
+0010806081 00000 n 
+0010806484 00000 n 
+0010852525 00000 n 
+0010852722 00000 n 
+0010852901 00000 n 
+0010871381 00000 n 
+0010871787 00000 n 
+0010871835 00000 n 
+0010872018 00000 n 
+0010872066 00000 n 
+0010906442 00000 n 
+0010906816 00000 n 
+0010938046 00000 n 
+0010938457 00000 n 
+0010938650 00000 n 
+0010938842 00000 n 
+0010939053 00000 n 
+0010939101 00000 n 
+0010939149 00000 n 
+0010953790 00000 n 
+0010954206 00000 n 
+0010954405 00000 n 
+0010954543 00000 n 
+0010954593 00000 n 
+0010954793 00000 n 
+0010954937 00000 n 
+0010954987 00000 n 
+0010955125 00000 n 
+0010955175 00000 n 
+0010969024 00000 n 
+0010969439 00000 n 
+0010969571 00000 n 
+0010969713 00000 n 
+0010969761 00000 n 
+0010969810 00000 n 
+0010969859 00000 n 
+0010983066 00000 n 
+0010983440 00000 n 
+0010983489 00000 n 
+0010992163 00000 n 
+0010992524 00000 n 
+0011000359 00000 n 
+0011000733 00000 n 
+0011000781 00000 n 
+0011002110 00000 n 
+0011002486 00000 n 
+0011002534 00000 n 
+0011002582 00000 n 
+0011002750 00000 n 
+0011002798 00000 n 
+0011002979 00000 n 
+0011005935 00000 n 
+0011006329 00000 n 
+0011006377 00000 n 
+0011006562 00000 n 
+0011006755 00000 n 
+0011006932 00000 n 
+0011007108 00000 n 
+0011014311 00000 n 
+0011014686 00000 n 
+0011014734 00000 n 
+0011014782 00000 n 
+0011014830 00000 n 
+0011040717 00000 n 
+0011045280 00000 n 
+0011045329 00000 n 
+0011045378 00000 n 
+0011045427 00000 n 
+0011053345 00000 n 
+0011053706 00000 n 
+0011053754 00000 n 
+0011100522 00000 n 
+0011107335 00000 n 
+0011107697 00000 n 
+0011107745 00000 n 
+0011117694 00000 n 
+0011118055 00000 n 
+0011118103 00000 n 
+0011118151 00000 n 
+0011130423 00000 n 
+0011130784 00000 n 
+0011130832 00000 n 
+0011144584 00000 n 
+0011144945 00000 n 
+0011144993 00000 n 
+0011145041 00000 n 
+0011145089 00000 n 
+0011163022 00000 n 
+0011163370 00000 n 
+0011163418 00000 n 
+0011175883 00000 n 
+0011176335 00000 n 
+0011176383 00000 n 
 0011176431 00000 n 
-0011176558 00000 n 
-0011176708 00000 n 
-0011176845 00000 n 
-0011176893 00000 n 
-0011177025 00000 n 
-0011177072 00000 n 
-0011177199 00000 n 
-0011177324 00000 n 
-0011177372 00000 n 
-0011177500 00000 n 
-0011177714 00000 n 
-0011187993 00000 n 
-0011188373 00000 n 
-0011188421 00000 n 
-0011188557 00000 n 
-0011196965 00000 n 
-0011197489 00000 n 
-0011197537 00000 n 
-0011197585 00000 n 
-0011197870 00000 n 
-0011198077 00000 n 
-0011198361 00000 n 
-0011198643 00000 n 
-0011198900 00000 n 
-0011198949 00000 n 
-0011199239 00000 n 
-0011199467 00000 n 
-0011199711 00000 n 
-0011199760 00000 n 
-0011199953 00000 n 
-0011200163 00000 n 
-0011200376 00000 n 
-0011200425 00000 n 
-0011200617 00000 n 
-0011200850 00000 n 
-0011201047 00000 n 
-0011201232 00000 n 
-0011201281 00000 n 
-0011201711 00000 n 
-0011201897 00000 n 
-0011202090 00000 n 
-0011202139 00000 n 
-0011202331 00000 n 
-0011204317 00000 n 
-0011204684 00000 n 
-0011204732 00000 n 
-0011204926 00000 n 
-0011208300 00000 n 
-0011208676 00000 n 
-0011208724 00000 n 
-0011209099 00000 n 
-0011209147 00000 n 
-0011209330 00000 n 
-0011209378 00000 n 
-0011209571 00000 n 
-0011213187 00000 n 
-0011213626 00000 n 
-0011213674 00000 n 
-0011217934 00000 n 
-0011218464 00000 n 
-0011218658 00000 n 
-0011218842 00000 n 
-0011219035 00000 n 
-0011219232 00000 n 
-0011219427 00000 n 
-0011219613 00000 n 
-0011243838 00000 n 
-0011244267 00000 n 
-0011244315 00000 n 
-0011244506 00000 n 
-0011244686 00000 n 
-0011244734 00000 n 
-0011244913 00000 n 
-0011245163 00000 n 
-0011245345 00000 n 
-0011251738 00000 n 
-0011252086 00000 n 
-0011281949 00000 n 
-0011282323 00000 n 
-0011282371 00000 n 
-0011303099 00000 n 
-0011303460 00000 n 
-0011303508 00000 n 
-0011313556 00000 n 
-0011313977 00000 n 
-0011314025 00000 n 
-0011314219 00000 n 
-0011314439 00000 n 
-0011314656 00000 n 
-0011314872 00000 n 
-0011315103 00000 n 
-0011315151 00000 n 
-0011315199 00000 n 
-0011315247 00000 n 
-0011315478 00000 n 
-0011315736 00000 n 
-0011315784 00000 n 
-0011315832 00000 n 
-0011329741 00000 n 
-0011330128 00000 n 
-0011330177 00000 n 
-0011330226 00000 n 
-0011330275 00000 n 
-0011338245 00000 n 
-0011338606 00000 n 
-0011338655 00000 n 
-0011338704 00000 n 
-0011338753 00000 n 
-0011338802 00000 n 
-0011338851 00000 n 
-0011350604 00000 n 
-0011350991 00000 n 
-0011351040 00000 n 
-0011351159 00000 n 
-0011351281 00000 n 
-0011351410 00000 n 
-0011351540 00000 n 
-0011351665 00000 n 
-0011351792 00000 n 
-0011351915 00000 n 
-0011352040 00000 n 
-0011352167 00000 n 
-0011352294 00000 n 
-0011352427 00000 n 
-0011352560 00000 n 
-0011352692 00000 n 
-0011352825 00000 n 
-0011352953 00000 n 
-0011353082 00000 n 
-0011353203 00000 n 
-0011353324 00000 n 
-0011353450 00000 n 
-0011353576 00000 n 
-0011353704 00000 n 
-0011353832 00000 n 
-0011353970 00000 n 
-0011354108 00000 n 
-0011354232 00000 n 
-0011354356 00000 n 
-0011354479 00000 n 
-0011354602 00000 n 
-0011354732 00000 n 
-0011354862 00000 n 
-0011354989 00000 n 
-0011355116 00000 n 
-0011355234 00000 n 
-0011355353 00000 n 
-0011355476 00000 n 
-0011355599 00000 n 
-0011355754 00000 n 
-0011355909 00000 n 
-0011356048 00000 n 
+0011176571 00000 n 
+0011176698 00000 n 
+0011176848 00000 n 
+0011176985 00000 n 
+0011177033 00000 n 
+0011177165 00000 n 
+0011177212 00000 n 
+0011177339 00000 n 
+0011177464 00000 n 
+0011177512 00000 n 
+0011177640 00000 n 
+0011177854 00000 n 
+0011188133 00000 n 
+0011188513 00000 n 
+0011188561 00000 n 
+0011188697 00000 n 
+0011197105 00000 n 
+0011197629 00000 n 
+0011197677 00000 n 
+0011197725 00000 n 
+0011198010 00000 n 
+0011198217 00000 n 
+0011198501 00000 n 
+0011198783 00000 n 
+0011199040 00000 n 
+0011199089 00000 n 
+0011199379 00000 n 
+0011199607 00000 n 
+0011199851 00000 n 
+0011199900 00000 n 
+0011200093 00000 n 
+0011200303 00000 n 
+0011200516 00000 n 
+0011200565 00000 n 
+0011200757 00000 n 
+0011200990 00000 n 
+0011201187 00000 n 
+0011201372 00000 n 
+0011201421 00000 n 
+0011201851 00000 n 
+0011202037 00000 n 
+0011202230 00000 n 
+0011202279 00000 n 
+0011202471 00000 n 
+0011204457 00000 n 
+0011204824 00000 n 
+0011204872 00000 n 
+0011205066 00000 n 
+0011208440 00000 n 
+0011208816 00000 n 
+0011208864 00000 n 
+0011209239 00000 n 
+0011209287 00000 n 
+0011209470 00000 n 
+0011209518 00000 n 
+0011209711 00000 n 
+0011213327 00000 n 
+0011213766 00000 n 
+0011213814 00000 n 
+0011218074 00000 n 
+0011218604 00000 n 
+0011218798 00000 n 
+0011218982 00000 n 
+0011219175 00000 n 
+0011219372 00000 n 
+0011219567 00000 n 
+0011219753 00000 n 
+0011243978 00000 n 
+0011244407 00000 n 
+0011244455 00000 n 
+0011244646 00000 n 
+0011244826 00000 n 
+0011244874 00000 n 
+0011245053 00000 n 
+0011245303 00000 n 
+0011245485 00000 n 
+0011251878 00000 n 
+0011252226 00000 n 
+0011282089 00000 n 
+0011282463 00000 n 
+0011282511 00000 n 
+0011303239 00000 n 
+0011303600 00000 n 
+0011303648 00000 n 
+0011313696 00000 n 
+0011314117 00000 n 
+0011314165 00000 n 
+0011314359 00000 n 
+0011314579 00000 n 
+0011314796 00000 n 
+0011315012 00000 n 
+0011315243 00000 n 
+0011315291 00000 n 
+0011315339 00000 n 
+0011315387 00000 n 
+0011315618 00000 n 
+0011315876 00000 n 
+0011315924 00000 n 
+0011315972 00000 n 
+0011329881 00000 n 
+0011330268 00000 n 
+0011330317 00000 n 
+0011330366 00000 n 
+0011330415 00000 n 
+0011338385 00000 n 
+0011338746 00000 n 
+0011338795 00000 n 
+0011338844 00000 n 
+0011338893 00000 n 
+0011338942 00000 n 
+0011338991 00000 n 
+0011350744 00000 n 
+0011351131 00000 n 
+0011351180 00000 n 
+0011351299 00000 n 
+0011351421 00000 n 
+0011351550 00000 n 
+0011351680 00000 n 
+0011351805 00000 n 
+0011351932 00000 n 
+0011352055 00000 n 
+0011352180 00000 n 
+0011352307 00000 n 
+0011352434 00000 n 
+0011352567 00000 n 
+0011352700 00000 n 
+0011352832 00000 n 
+0011352965 00000 n 
+0011353093 00000 n 
+0011353222 00000 n 
+0011353343 00000 n 
+0011353464 00000 n 
+0011353590 00000 n 
+0011353716 00000 n 
+0011353844 00000 n 
+0011353972 00000 n 
+0011354110 00000 n 
+0011354248 00000 n 
+0011354372 00000 n 
+0011354496 00000 n 
+0011354619 00000 n 
+0011354742 00000 n 
+0011354872 00000 n 
+0011355002 00000 n 
+0011355129 00000 n 
+0011355256 00000 n 
+0011355374 00000 n 
+0011355493 00000 n 
+0011355616 00000 n 
+0011355739 00000 n 
+0011355894 00000 n 
+0011356049 00000 n 
 0011356188 00000 n 
-0011356347 00000 n 
-0011356507 00000 n 
-0011356651 00000 n 
-0011356797 00000 n 
-0011356923 00000 n 
-0011357050 00000 n 
-0011357172 00000 n 
-0011357296 00000 n 
-0011357424 00000 n 
-0011357554 00000 n 
-0011357681 00000 n 
-0011357809 00000 n 
-0011357931 00000 n 
-0011358055 00000 n 
-0011358174 00000 n 
-0011358294 00000 n 
-0011358407 00000 n 
-0011358525 00000 n 
-0011358651 00000 n 
-0011358778 00000 n 
-0011358896 00000 n 
-0011359016 00000 n 
-0011359151 00000 n 
-0011359287 00000 n 
-0011359409 00000 n 
-0011359532 00000 n 
-0011359653 00000 n 
-0011359775 00000 n 
-0011359906 00000 n 
-0011360039 00000 n 
-0011360158 00000 n 
-0011360278 00000 n 
-0011360394 00000 n 
-0011360511 00000 n 
-0011360629 00000 n 
-0011360748 00000 n 
-0011360876 00000 n 
-0011361006 00000 n 
-0011361147 00000 n 
-0011361289 00000 n 
-0011361436 00000 n 
-0011361585 00000 n 
-0011361712 00000 n 
-0011361840 00000 n 
-0011361967 00000 n 
-0011362095 00000 n 
-0011362224 00000 n 
-0011362354 00000 n 
-0011362487 00000 n 
-0011362621 00000 n 
-0011362747 00000 n 
-0011362874 00000 n 
-0011362991 00000 n 
-0011363109 00000 n 
-0011363238 00000 n 
-0011363368 00000 n 
-0011363498 00000 n 
-0011363630 00000 n 
-0011363755 00000 n 
-0011363881 00000 n 
-0011364013 00000 n 
-0011364146 00000 n 
-0011364270 00000 n 
-0011364395 00000 n 
-0011364521 00000 n 
-0011364649 00000 n 
-0011364772 00000 n 
-0011364896 00000 n 
-0011365035 00000 n 
+0011356328 00000 n 
+0011356487 00000 n 
+0011356647 00000 n 
+0011356791 00000 n 
+0011356937 00000 n 
+0011357063 00000 n 
+0011357190 00000 n 
+0011357312 00000 n 
+0011357436 00000 n 
+0011357564 00000 n 
+0011357694 00000 n 
+0011357821 00000 n 
+0011357949 00000 n 
+0011358071 00000 n 
+0011358195 00000 n 
+0011358314 00000 n 
+0011358434 00000 n 
+0011358547 00000 n 
+0011358665 00000 n 
+0011358791 00000 n 
+0011358918 00000 n 
+0011359036 00000 n 
+0011359156 00000 n 
+0011359291 00000 n 
+0011359427 00000 n 
+0011359549 00000 n 
+0011359672 00000 n 
+0011359793 00000 n 
+0011359915 00000 n 
+0011360046 00000 n 
+0011360179 00000 n 
+0011360298 00000 n 
+0011360418 00000 n 
+0011360534 00000 n 
+0011360651 00000 n 
+0011360769 00000 n 
+0011360888 00000 n 
+0011361016 00000 n 
+0011361146 00000 n 
+0011361287 00000 n 
+0011361429 00000 n 
+0011361576 00000 n 
+0011361725 00000 n 
+0011361852 00000 n 
+0011361980 00000 n 
+0011362107 00000 n 
+0011362235 00000 n 
+0011362364 00000 n 
+0011362494 00000 n 
+0011362627 00000 n 
+0011362761 00000 n 
+0011362887 00000 n 
+0011363014 00000 n 
+0011363131 00000 n 
+0011363249 00000 n 
+0011363378 00000 n 
+0011363508 00000 n 
+0011363638 00000 n 
+0011363770 00000 n 
+0011363895 00000 n 
+0011364021 00000 n 
+0011364153 00000 n 
+0011364286 00000 n 
+0011364410 00000 n 
+0011364535 00000 n 
+0011364661 00000 n 
+0011364789 00000 n 
+0011364912 00000 n 
+0011365036 00000 n 
 0011365175 00000 n 
-0011365310 00000 n 
-0011365447 00000 n 
-0011365589 00000 n 
-0011365732 00000 n 
-0011365896 00000 n 
-0011366061 00000 n 
-0011366217 00000 n 
-0011366374 00000 n 
-0011366506 00000 n 
-0011366639 00000 n 
-0011366761 00000 n 
-0011366884 00000 n 
-0011367014 00000 n 
-0011367146 00000 n 
-0011367283 00000 n 
-0011367421 00000 n 
-0011367551 00000 n 
-0011367682 00000 n 
-0011367804 00000 n 
-0011367928 00000 n 
-0011368050 00000 n 
-0011368173 00000 n 
-0011368325 00000 n 
-0011368478 00000 n 
-0011368614 00000 n 
-0011368751 00000 n 
+0011365315 00000 n 
+0011365450 00000 n 
+0011365587 00000 n 
+0011365729 00000 n 
+0011365872 00000 n 
+0011366036 00000 n 
+0011366201 00000 n 
+0011366357 00000 n 
+0011366514 00000 n 
+0011366646 00000 n 
+0011366779 00000 n 
+0011366901 00000 n 
+0011367024 00000 n 
+0011367154 00000 n 
+0011367286 00000 n 
+0011367423 00000 n 
+0011367561 00000 n 
+0011367691 00000 n 
+0011367822 00000 n 
+0011367944 00000 n 
+0011368068 00000 n 
+0011368190 00000 n 
+0011368313 00000 n 
+0011368465 00000 n 
+0011368618 00000 n 
+0011368754 00000 n 
 0011368891 00000 n 
-0011369032 00000 n 
-0011369178 00000 n 
-0011369325 00000 n 
-0011369476 00000 n 
-0011369628 00000 n 
-0011369770 00000 n 
-0011369913 00000 n 
-0011370050 00000 n 
-0011370188 00000 n 
-0011370313 00000 n 
-0011370440 00000 n 
-0011370566 00000 n 
-0011370694 00000 n 
-0011370820 00000 n 
-0011370947 00000 n 
-0011371079 00000 n 
-0011371212 00000 n 
-0011371337 00000 n 
-0011371463 00000 n 
-0011371594 00000 n 
-0011371726 00000 n 
-0011371856 00000 n 
-0011371988 00000 n 
-0011372114 00000 n 
-0011372241 00000 n 
-0011372368 00000 n 
-0011372497 00000 n 
-0011372619 00000 n 
-0011372743 00000 n 
-0011372886 00000 n 
-0011373030 00000 n 
-0011373152 00000 n 
-0011373276 00000 n 
-0011373400 00000 n 
-0011373525 00000 n 
-0011373647 00000 n 
-0011373770 00000 n 
-0011373896 00000 n 
-0011374024 00000 n 
-0011374142 00000 n 
-0011374261 00000 n 
-0011374380 00000 n 
-0011374501 00000 n 
-0011374615 00000 n 
-0011374731 00000 n 
-0011374847 00000 n 
-0011374965 00000 n 
-0011375083 00000 n 
-0011375203 00000 n 
-0011375323 00000 n 
-0011375444 00000 n 
-0011375563 00000 n 
-0011375684 00000 n 
-0011375820 00000 n 
-0011375957 00000 n 
-0011376075 00000 n 
-0011376195 00000 n 
-0011376319 00000 n 
-0011376445 00000 n 
-0011376573 00000 n 
-0011376703 00000 n 
-0011376825 00000 n 
-0011376949 00000 n 
-0011377082 00000 n 
-0011377216 00000 n 
-0011377332 00000 n 
-0011377449 00000 n 
-0011377583 00000 n 
-0011377718 00000 n 
-0011377853 00000 n 
-0011377989 00000 n 
-0011378112 00000 n 
-0011378237 00000 n 
-0011378361 00000 n 
-0011378486 00000 n 
-0011378638 00000 n 
-0011378791 00000 n 
-0011378933 00000 n 
-0011379077 00000 n 
-0011379202 00000 n 
-0011379328 00000 n 
-0011379449 00000 n 
-0011379571 00000 n 
-0011379696 00000 n 
-0011379823 00000 n 
-0011379938 00000 n 
-0011380056 00000 n 
-0011380189 00000 n 
-0011380323 00000 n 
-0011380451 00000 n 
-0011380580 00000 n 
-0011380705 00000 n 
-0011380831 00000 n 
-0011380957 00000 n 
-0011381084 00000 n 
-0011381209 00000 n 
-0011381336 00000 n 
-0011381461 00000 n 
-0011381587 00000 n 
-0011381712 00000 n 
-0011381838 00000 n 
-0011381959 00000 n 
-0011382081 00000 n 
-0011382202 00000 n 
-0011382325 00000 n 
-0011382460 00000 n 
-0011382596 00000 n 
-0011382724 00000 n 
-0011382853 00000 n 
-0011382973 00000 n 
-0011383095 00000 n 
-0011383224 00000 n 
-0011383354 00000 n 
-0011383479 00000 n 
-0011383605 00000 n 
-0011383736 00000 n 
-0011383868 00000 n 
-0011383995 00000 n 
-0011384123 00000 n 
-0011384249 00000 n 
-0011384378 00000 n 
-0011384508 00000 n 
-0011384640 00000 n 
-0011384769 00000 n 
-0011384900 00000 n 
-0011385029 00000 n 
-0011385159 00000 n 
-0011385283 00000 n 
-0011385408 00000 n 
-0011385535 00000 n 
-0011385664 00000 n 
-0011385795 00000 n 
-0011385927 00000 n 
-0011386051 00000 n 
-0011386177 00000 n 
-0011386307 00000 n 
-0011386438 00000 n 
-0011386591 00000 n 
-0011386745 00000 n 
-0011386872 00000 n 
-0011387001 00000 n 
-0011387128 00000 n 
-0011387256 00000 n 
-0011387387 00000 n 
-0011387519 00000 n 
-0011387647 00000 n 
-0011387776 00000 n 
-0011387922 00000 n 
-0011388069 00000 n 
-0011388193 00000 n 
-0011388318 00000 n 
-0011388443 00000 n 
-0011388569 00000 n 
-0011388703 00000 n 
-0011388838 00000 n 
-0011388969 00000 n 
-0011389102 00000 n 
-0011389236 00000 n 
-0011389372 00000 n 
-0011389493 00000 n 
-0011389615 00000 n 
-0011389734 00000 n 
-0011389854 00000 n 
-0011389981 00000 n 
-0011390109 00000 n 
-0011390237 00000 n 
-0011390367 00000 n 
-0011390494 00000 n 
-0011390622 00000 n 
-0011390749 00000 n 
-0011390878 00000 n 
-0011391010 00000 n 
-0011391144 00000 n 
-0011391304 00000 n 
-0011391465 00000 n 
-0011391588 00000 n 
-0011391713 00000 n 
-0011391839 00000 n 
-0011391967 00000 n 
-0011392095 00000 n 
-0011392224 00000 n 
-0011392348 00000 n 
-0011392473 00000 n 
-0011392597 00000 n 
-0011392722 00000 n 
-0011392842 00000 n 
-0011392964 00000 n 
-0011393087 00000 n 
-0011393211 00000 n 
-0011393340 00000 n 
-0011393471 00000 n 
-0011393590 00000 n 
-0011393710 00000 n 
-0011393827 00000 n 
-0011393946 00000 n 
-0011394065 00000 n 
-0011394185 00000 n 
-0011394307 00000 n 
-0011394431 00000 n 
-0011394560 00000 n 
-0011394690 00000 n 
-0011394817 00000 n 
-0011394945 00000 n 
-0011395068 00000 n 
-0011395237 00000 n 
-0011395362 00000 n 
-0011395486 00000 n 
-0011395611 00000 n 
-0011395737 00000 n 
-0011395861 00000 n 
-0011395986 00000 n 
-0011396110 00000 n 
-0011396235 00000 n 
-0011396353 00000 n 
-0011396473 00000 n 
-0011396593 00000 n 
-0011396715 00000 n 
-0011396835 00000 n 
-0011396956 00000 n 
-0011397116 00000 n 
-0011397277 00000 n 
-0011397398 00000 n 
-0011397521 00000 n 
-0011397645 00000 n 
-0011397770 00000 n 
-0011397893 00000 n 
-0011398017 00000 n 
-0011398164 00000 n 
-0011398312 00000 n 
-0011398438 00000 n 
-0011398565 00000 n 
-0011398687 00000 n 
-0011398811 00000 n 
-0011398933 00000 n 
-0011399057 00000 n 
-0011399186 00000 n 
-0011399316 00000 n 
-0011399453 00000 n 
-0011399591 00000 n 
-0011399712 00000 n 
-0011399835 00000 n 
-0011399986 00000 n 
-0011400139 00000 n 
-0011400256 00000 n 
-0011400374 00000 n 
-0011400500 00000 n 
-0011400628 00000 n 
-0011400761 00000 n 
-0011400895 00000 n 
-0011401019 00000 n 
-0011401145 00000 n 
-0011401284 00000 n 
-0011401425 00000 n 
-0011401542 00000 n 
-0011401660 00000 n 
-0011401778 00000 n 
-0011401897 00000 n 
-0011402024 00000 n 
-0011402153 00000 n 
-0011402277 00000 n 
-0011402402 00000 n 
-0011402529 00000 n 
-0011402657 00000 n 
-0011402773 00000 n 
-0011402890 00000 n 
-0011403006 00000 n 
-0011403123 00000 n 
-0011403242 00000 n 
-0011403362 00000 n 
-0011403504 00000 n 
-0011403647 00000 n 
-0011403781 00000 n 
-0011403916 00000 n 
-0011404038 00000 n 
-0011404162 00000 n 
-0011404434 00000 n 
-0011404706 00000 n 
-0011404788 00000 n 
-0011405020 00000 n 
-0011405180 00000 n 
-0011405336 00000 n 
-0011405555 00000 n 
-0011405760 00000 n 
-0011406037 00000 n 
-0011406301 00000 n 
-0011406535 00000 n 
-0011406784 00000 n 
-0011407129 00000 n 
-0011407462 00000 n 
-0011407719 00000 n 
-0011407980 00000 n 
-0011408265 00000 n 
-0011408511 00000 n 
-0011408707 00000 n 
-0011409021 00000 n 
-0011409235 00000 n 
-0011409483 00000 n 
-0011409721 00000 n 
-0011410062 00000 n 
-0011410339 00000 n 
-0011410696 00000 n 
-0011410997 00000 n 
-0011411207 00000 n 
-0011411408 00000 n 
-0011411630 00000 n 
-0011411859 00000 n 
-0011412072 00000 n 
-0011412269 00000 n 
-0011412458 00000 n 
-0011412687 00000 n 
-0011412884 00000 n 
-0011413145 00000 n 
-0011413354 00000 n 
-0011413571 00000 n 
-0011413808 00000 n 
-0011414005 00000 n 
-0011414183 00000 n 
-0011414435 00000 n 
-0011414657 00000 n 
-0011414927 00000 n 
-0011415224 00000 n 
-0011415514 00000 n 
-0011415743 00000 n 
-0011415992 00000 n 
-0011416245 00000 n 
-0011416442 00000 n 
-0011416691 00000 n 
-0011416952 00000 n 
-0011417302 00000 n 
-0011417524 00000 n 
-0011417806 00000 n 
-0011418180 00000 n 
-0011418395 00000 n 
-0011418633 00000 n 
-0011418936 00000 n 
-0011419202 00000 n 
-0011419492 00000 n 
-0011419870 00000 n 
-0011420216 00000 n 
-0011420466 00000 n 
-0011420716 00000 n 
-0011420990 00000 n 
-0011421356 00000 n 
-0011421618 00000 n 
-0011421817 00000 n 
-0011422062 00000 n 
-0011422385 00000 n 
-0011422775 00000 n 
-0011423097 00000 n 
-0011423411 00000 n 
-0011423737 00000 n 
-0011424027 00000 n 
-0011424310 00000 n 
-0011424520 00000 n 
-0011424715 00000 n 
-0011424949 00000 n 
-0011425151 00000 n 
-0011425417 00000 n 
-0011425619 00000 n 
-0011425845 00000 n 
-0011426051 00000 n 
-0011426277 00000 n 
-0011426471 00000 n 
-0011426809 00000 n 
-0011427108 00000 n 
-0011427337 00000 n 
-0011427517 00000 n 
-0011427782 00000 n 
-0011427961 00000 n 
-0011428163 00000 n 
-0011428441 00000 n 
-0011428779 00000 n 
-0011428977 00000 n 
-0011429164 00000 n 
-0011429445 00000 n 
-0011429653 00000 n 
-0011429874 00000 n 
-0011430081 00000 n 
-0011430319 00000 n 
-0011430533 00000 n 
-0011430772 00000 n 
-0011431033 00000 n 
-0011431276 00000 n 
-0011431538 00000 n 
-0011431796 00000 n 
-0011432006 00000 n 
-0011432336 00000 n 
-0011432615 00000 n 
-0011432901 00000 n 
-0011433128 00000 n 
-0011433334 00000 n 
-0011433528 00000 n 
-0011433786 00000 n 
-0011434000 00000 n 
-0011434230 00000 n 
-0011434496 00000 n 
-0011434742 00000 n 
-0011434996 00000 n 
-0011435254 00000 n 
-0011435452 00000 n 
-0011435674 00000 n 
-0011435980 00000 n 
-0011436195 00000 n 
-0011436525 00000 n 
-0011436764 00000 n 
-0011436962 00000 n 
-0011437180 00000 n 
-0011437382 00000 n 
-0011437588 00000 n 
-0011437806 00000 n 
-0011438020 00000 n 
-0011438230 00000 n 
-0011438460 00000 n 
-0011438666 00000 n 
-0011438884 00000 n 
-0011439106 00000 n 
-0011439412 00000 n 
-0011439750 00000 n 
-0011439988 00000 n 
-0011440302 00000 n 
-0011440532 00000 n 
-0011440802 00000 n 
-0011441112 00000 n 
-0011441319 00000 n 
-0011441580 00000 n 
-0011441779 00000 n 
-0011442013 00000 n 
-0011442288 00000 n 
-0011442590 00000 n 
-0011442857 00000 n 
-0011443107 00000 n 
-0011443349 00000 n 
-0011443583 00000 n 
-0011443829 00000 n 
-0011444087 00000 n 
-0011444453 00000 n 
-0011444683 00000 n 
-0011444925 00000 n 
-0011445303 00000 n 
-0011445625 00000 n 
-0011445855 00000 n 
-0011446106 00000 n 
-0011446412 00000 n 
-0011446643 00000 n 
-0011446925 00000 n 
-0011447123 00000 n 
-0011447389 00000 n 
-0011447659 00000 n 
-0011447953 00000 n 
-0011448279 00000 n 
-0011448561 00000 n 
-0011448763 00000 n 
-0011449010 00000 n 
-0011449295 00000 n 
-0011449482 00000 n 
-0011449692 00000 n 
-0011449898 00000 n 
-0011450249 00000 n 
-0011450478 00000 n 
-0011450662 00000 n 
-0011450859 00000 n 
-0011451158 00000 n 
-0011451461 00000 n 
-0011451658 00000 n 
-0011451861 00000 n 
-0011452103 00000 n 
-0011452354 00000 n 
-0011452533 00000 n 
-0011452812 00000 n 
-0011453002 00000 n 
-0011453232 00000 n 
-0011453494 00000 n 
-0011453848 00000 n 
-0011454134 00000 n 
-0011454368 00000 n 
-0011454562 00000 n 
-0011454788 00000 n 
-0011455082 00000 n 
-0011455312 00000 n 
-0011455650 00000 n 
-0011455896 00000 n 
-0011456222 00000 n 
-0011456484 00000 n 
-0011456762 00000 n 
-0011457013 00000 n 
-0011469398 00000 n 
-0011479917 00000 n 
-0011480135 00000 n 
-0011481499 00000 n 
-0011482536 00000 n 
-0011491716 00000 n 
-0011491939 00000 n 
-0011493303 00000 n 
-0011494359 00000 n 
-0011502745 00000 n 
-0011502973 00000 n 
-0011504337 00000 n 
-0011505388 00000 n 
-0011511576 00000 n 
-0011511792 00000 n 
-0011513156 00000 n 
-0011514201 00000 n 
-0011515930 00000 n 
-0011516148 00000 n 
-0011516486 00000 n 
-0011517621 00000 n 
-0011519187 00000 n 
-0011519398 00000 n 
-0011519723 00000 n 
-0011520640 00000 n 
-0011523150 00000 n 
-0011523363 00000 n 
-0011524727 00000 n 
-0011525847 00000 n 
-0011527415 00000 n 
-0011527635 00000 n 
-0011528999 00000 n 
-0011530133 00000 n 
-0011531482 00000 n 
-0011531698 00000 n 
-0011532000 00000 n 
-0011533139 00000 n 
-0011534791 00000 n 
-0011535011 00000 n 
-0011535342 00000 n 
-0011536479 00000 n 
-0011539084 00000 n 
-0011539299 00000 n 
-0011540663 00000 n 
-0011541779 00000 n 
-0011544781 00000 n 
-0011545013 00000 n 
-0011546377 00000 n 
-0011547502 00000 n 
-0011548760 00000 n 
-0011548983 00000 n 
-0011549292 00000 n 
+0011369031 00000 n 
+0011369172 00000 n 
+0011369318 00000 n 
+0011369465 00000 n 
+0011369616 00000 n 
+0011369768 00000 n 
+0011369910 00000 n 
+0011370053 00000 n 
+0011370190 00000 n 
+0011370328 00000 n 
+0011370453 00000 n 
+0011370580 00000 n 
+0011370706 00000 n 
+0011370834 00000 n 
+0011370960 00000 n 
+0011371087 00000 n 
+0011371219 00000 n 
+0011371352 00000 n 
+0011371477 00000 n 
+0011371603 00000 n 
+0011371734 00000 n 
+0011371866 00000 n 
+0011371996 00000 n 
+0011372128 00000 n 
+0011372254 00000 n 
+0011372381 00000 n 
+0011372508 00000 n 
+0011372637 00000 n 
+0011372759 00000 n 
+0011372883 00000 n 
+0011373026 00000 n 
+0011373170 00000 n 
+0011373292 00000 n 
+0011373416 00000 n 
+0011373540 00000 n 
+0011373665 00000 n 
+0011373787 00000 n 
+0011373910 00000 n 
+0011374036 00000 n 
+0011374164 00000 n 
+0011374282 00000 n 
+0011374401 00000 n 
+0011374520 00000 n 
+0011374641 00000 n 
+0011374755 00000 n 
+0011374871 00000 n 
+0011374987 00000 n 
+0011375105 00000 n 
+0011375223 00000 n 
+0011375343 00000 n 
+0011375463 00000 n 
+0011375584 00000 n 
+0011375703 00000 n 
+0011375824 00000 n 
+0011375960 00000 n 
+0011376097 00000 n 
+0011376215 00000 n 
+0011376335 00000 n 
+0011376459 00000 n 
+0011376585 00000 n 
+0011376713 00000 n 
+0011376843 00000 n 
+0011376965 00000 n 
+0011377089 00000 n 
+0011377222 00000 n 
+0011377356 00000 n 
+0011377472 00000 n 
+0011377589 00000 n 
+0011377723 00000 n 
+0011377858 00000 n 
+0011377993 00000 n 
+0011378129 00000 n 
+0011378252 00000 n 
+0011378377 00000 n 
+0011378501 00000 n 
+0011378626 00000 n 
+0011378778 00000 n 
+0011378931 00000 n 
+0011379073 00000 n 
+0011379217 00000 n 
+0011379342 00000 n 
+0011379468 00000 n 
+0011379589 00000 n 
+0011379711 00000 n 
+0011379836 00000 n 
+0011379963 00000 n 
+0011380078 00000 n 
+0011380196 00000 n 
+0011380329 00000 n 
+0011380463 00000 n 
+0011380591 00000 n 
+0011380720 00000 n 
+0011380845 00000 n 
+0011380971 00000 n 
+0011381097 00000 n 
+0011381224 00000 n 
+0011381349 00000 n 
+0011381476 00000 n 
+0011381601 00000 n 
+0011381727 00000 n 
+0011381852 00000 n 
+0011381978 00000 n 
+0011382099 00000 n 
+0011382221 00000 n 
+0011382342 00000 n 
+0011382465 00000 n 
+0011382600 00000 n 
+0011382736 00000 n 
+0011382864 00000 n 
+0011382993 00000 n 
+0011383113 00000 n 
+0011383235 00000 n 
+0011383364 00000 n 
+0011383494 00000 n 
+0011383619 00000 n 
+0011383745 00000 n 
+0011383876 00000 n 
+0011384008 00000 n 
+0011384135 00000 n 
+0011384263 00000 n 
+0011384389 00000 n 
+0011384518 00000 n 
+0011384648 00000 n 
+0011384780 00000 n 
+0011384909 00000 n 
+0011385040 00000 n 
+0011385169 00000 n 
+0011385299 00000 n 
+0011385423 00000 n 
+0011385548 00000 n 
+0011385675 00000 n 
+0011385804 00000 n 
+0011385935 00000 n 
+0011386067 00000 n 
+0011386191 00000 n 
+0011386317 00000 n 
+0011386447 00000 n 
+0011386578 00000 n 
+0011386731 00000 n 
+0011386885 00000 n 
+0011387012 00000 n 
+0011387141 00000 n 
+0011387268 00000 n 
+0011387396 00000 n 
+0011387527 00000 n 
+0011387659 00000 n 
+0011387787 00000 n 
+0011387916 00000 n 
+0011388062 00000 n 
+0011388209 00000 n 
+0011388333 00000 n 
+0011388458 00000 n 
+0011388583 00000 n 
+0011388709 00000 n 
+0011388843 00000 n 
+0011388978 00000 n 
+0011389109 00000 n 
+0011389242 00000 n 
+0011389376 00000 n 
+0011389512 00000 n 
+0011389633 00000 n 
+0011389755 00000 n 
+0011389874 00000 n 
+0011389994 00000 n 
+0011390121 00000 n 
+0011390249 00000 n 
+0011390377 00000 n 
+0011390507 00000 n 
+0011390634 00000 n 
+0011390762 00000 n 
+0011390889 00000 n 
+0011391018 00000 n 
+0011391150 00000 n 
+0011391284 00000 n 
+0011391444 00000 n 
+0011391605 00000 n 
+0011391728 00000 n 
+0011391853 00000 n 
+0011391979 00000 n 
+0011392107 00000 n 
+0011392235 00000 n 
+0011392364 00000 n 
+0011392488 00000 n 
+0011392613 00000 n 
+0011392737 00000 n 
+0011392862 00000 n 
+0011392982 00000 n 
+0011393104 00000 n 
+0011393227 00000 n 
+0011393351 00000 n 
+0011393480 00000 n 
+0011393611 00000 n 
+0011393730 00000 n 
+0011393850 00000 n 
+0011393967 00000 n 
+0011394086 00000 n 
+0011394205 00000 n 
+0011394325 00000 n 
+0011394447 00000 n 
+0011394571 00000 n 
+0011394700 00000 n 
+0011394830 00000 n 
+0011394957 00000 n 
+0011395085 00000 n 
+0011395208 00000 n 
+0011395377 00000 n 
+0011395502 00000 n 
+0011395626 00000 n 
+0011395751 00000 n 
+0011395877 00000 n 
+0011396001 00000 n 
+0011396126 00000 n 
+0011396250 00000 n 
+0011396375 00000 n 
+0011396493 00000 n 
+0011396613 00000 n 
+0011396733 00000 n 
+0011396855 00000 n 
+0011396975 00000 n 
+0011397096 00000 n 
+0011397256 00000 n 
+0011397417 00000 n 
+0011397538 00000 n 
+0011397661 00000 n 
+0011397785 00000 n 
+0011397910 00000 n 
+0011398033 00000 n 
+0011398157 00000 n 
+0011398304 00000 n 
+0011398452 00000 n 
+0011398578 00000 n 
+0011398705 00000 n 
+0011398827 00000 n 
+0011398951 00000 n 
+0011399073 00000 n 
+0011399197 00000 n 
+0011399326 00000 n 
+0011399456 00000 n 
+0011399593 00000 n 
+0011399731 00000 n 
+0011399852 00000 n 
+0011399975 00000 n 
+0011400126 00000 n 
+0011400279 00000 n 
+0011400396 00000 n 
+0011400514 00000 n 
+0011400640 00000 n 
+0011400768 00000 n 
+0011400901 00000 n 
+0011401035 00000 n 
+0011401159 00000 n 
+0011401285 00000 n 
+0011401424 00000 n 
+0011401565 00000 n 
+0011401682 00000 n 
+0011401800 00000 n 
+0011401918 00000 n 
+0011402037 00000 n 
+0011402164 00000 n 
+0011402293 00000 n 
+0011402417 00000 n 
+0011402542 00000 n 
+0011402669 00000 n 
+0011402797 00000 n 
+0011402913 00000 n 
+0011403030 00000 n 
+0011403146 00000 n 
+0011403263 00000 n 
+0011403382 00000 n 
+0011403502 00000 n 
+0011403644 00000 n 
+0011403787 00000 n 
+0011403921 00000 n 
+0011404056 00000 n 
+0011404178 00000 n 
+0011404302 00000 n 
+0011404574 00000 n 
+0011404846 00000 n 
+0011404928 00000 n 
+0011405160 00000 n 
+0011405320 00000 n 
+0011405476 00000 n 
+0011405695 00000 n 
+0011405900 00000 n 
+0011406177 00000 n 
+0011406441 00000 n 
+0011406675 00000 n 
+0011406924 00000 n 
+0011407269 00000 n 
+0011407602 00000 n 
+0011407859 00000 n 
+0011408120 00000 n 
+0011408405 00000 n 
+0011408651 00000 n 
+0011408847 00000 n 
+0011409161 00000 n 
+0011409375 00000 n 
+0011409623 00000 n 
+0011409861 00000 n 
+0011410202 00000 n 
+0011410479 00000 n 
+0011410836 00000 n 
+0011411137 00000 n 
+0011411347 00000 n 
+0011411548 00000 n 
+0011411770 00000 n 
+0011411999 00000 n 
+0011412212 00000 n 
+0011412409 00000 n 
+0011412598 00000 n 
+0011412827 00000 n 
+0011413024 00000 n 
+0011413285 00000 n 
+0011413494 00000 n 
+0011413711 00000 n 
+0011413948 00000 n 
+0011414145 00000 n 
+0011414323 00000 n 
+0011414575 00000 n 
+0011414797 00000 n 
+0011415067 00000 n 
+0011415364 00000 n 
+0011415654 00000 n 
+0011415883 00000 n 
+0011416132 00000 n 
+0011416385 00000 n 
+0011416582 00000 n 
+0011416831 00000 n 
+0011417092 00000 n 
+0011417442 00000 n 
+0011417664 00000 n 
+0011417946 00000 n 
+0011418320 00000 n 
+0011418535 00000 n 
+0011418773 00000 n 
+0011419076 00000 n 
+0011419342 00000 n 
+0011419632 00000 n 
+0011420010 00000 n 
+0011420356 00000 n 
+0011420606 00000 n 
+0011420856 00000 n 
+0011421130 00000 n 
+0011421496 00000 n 
+0011421758 00000 n 
+0011421957 00000 n 
+0011422202 00000 n 
+0011422525 00000 n 
+0011422915 00000 n 
+0011423237 00000 n 
+0011423551 00000 n 
+0011423877 00000 n 
+0011424167 00000 n 
+0011424450 00000 n 
+0011424660 00000 n 
+0011424855 00000 n 
+0011425089 00000 n 
+0011425291 00000 n 
+0011425557 00000 n 
+0011425759 00000 n 
+0011425985 00000 n 
+0011426191 00000 n 
+0011426417 00000 n 
+0011426611 00000 n 
+0011426949 00000 n 
+0011427248 00000 n 
+0011427477 00000 n 
+0011427657 00000 n 
+0011427922 00000 n 
+0011428101 00000 n 
+0011428303 00000 n 
+0011428581 00000 n 
+0011428919 00000 n 
+0011429117 00000 n 
+0011429304 00000 n 
+0011429585 00000 n 
+0011429793 00000 n 
+0011430014 00000 n 
+0011430221 00000 n 
+0011430459 00000 n 
+0011430673 00000 n 
+0011430912 00000 n 
+0011431173 00000 n 
+0011431416 00000 n 
+0011431678 00000 n 
+0011431936 00000 n 
+0011432146 00000 n 
+0011432476 00000 n 
+0011432755 00000 n 
+0011433041 00000 n 
+0011433268 00000 n 
+0011433474 00000 n 
+0011433668 00000 n 
+0011433926 00000 n 
+0011434140 00000 n 
+0011434370 00000 n 
+0011434636 00000 n 
+0011434882 00000 n 
+0011435136 00000 n 
+0011435394 00000 n 
+0011435592 00000 n 
+0011435814 00000 n 
+0011436120 00000 n 
+0011436335 00000 n 
+0011436665 00000 n 
+0011436904 00000 n 
+0011437102 00000 n 
+0011437320 00000 n 
+0011437522 00000 n 
+0011437728 00000 n 
+0011437946 00000 n 
+0011438160 00000 n 
+0011438370 00000 n 
+0011438600 00000 n 
+0011438806 00000 n 
+0011439024 00000 n 
+0011439246 00000 n 
+0011439552 00000 n 
+0011439890 00000 n 
+0011440128 00000 n 
+0011440442 00000 n 
+0011440672 00000 n 
+0011440942 00000 n 
+0011441252 00000 n 
+0011441459 00000 n 
+0011441720 00000 n 
+0011441919 00000 n 
+0011442153 00000 n 
+0011442428 00000 n 
+0011442730 00000 n 
+0011442997 00000 n 
+0011443247 00000 n 
+0011443489 00000 n 
+0011443723 00000 n 
+0011443969 00000 n 
+0011444227 00000 n 
+0011444593 00000 n 
+0011444823 00000 n 
+0011445065 00000 n 
+0011445443 00000 n 
+0011445765 00000 n 
+0011445995 00000 n 
+0011446246 00000 n 
+0011446552 00000 n 
+0011446783 00000 n 
+0011447065 00000 n 
+0011447263 00000 n 
+0011447529 00000 n 
+0011447799 00000 n 
+0011448093 00000 n 
+0011448419 00000 n 
+0011448701 00000 n 
+0011448903 00000 n 
+0011449150 00000 n 
+0011449435 00000 n 
+0011449622 00000 n 
+0011449832 00000 n 
+0011450038 00000 n 
+0011450389 00000 n 
+0011450618 00000 n 
+0011450802 00000 n 
+0011450999 00000 n 
+0011451298 00000 n 
+0011451601 00000 n 
+0011451798 00000 n 
+0011452001 00000 n 
+0011452243 00000 n 
+0011452494 00000 n 
+0011452673 00000 n 
+0011452952 00000 n 
+0011453142 00000 n 
+0011453372 00000 n 
+0011453634 00000 n 
+0011453988 00000 n 
+0011454274 00000 n 
+0011454508 00000 n 
+0011454702 00000 n 
+0011454928 00000 n 
+0011455222 00000 n 
+0011455452 00000 n 
+0011455790 00000 n 
+0011456036 00000 n 
+0011456362 00000 n 
+0011456624 00000 n 
+0011456902 00000 n 
+0011457153 00000 n 
+0011469538 00000 n 
+0011480057 00000 n 
+0011480275 00000 n 
+0011481639 00000 n 
+0011482676 00000 n 
+0011491856 00000 n 
+0011492079 00000 n 
+0011493443 00000 n 
+0011494499 00000 n 
+0011502885 00000 n 
+0011503113 00000 n 
+0011504477 00000 n 
+0011505528 00000 n 
+0011511716 00000 n 
+0011511932 00000 n 
+0011513296 00000 n 
+0011514341 00000 n 
+0011516070 00000 n 
+0011516288 00000 n 
+0011516626 00000 n 
+0011517761 00000 n 
+0011519327 00000 n 
+0011519538 00000 n 
+0011519863 00000 n 
+0011520780 00000 n 
+0011523290 00000 n 
+0011523503 00000 n 
+0011524867 00000 n 
+0011525987 00000 n 
+0011527555 00000 n 
+0011527775 00000 n 
+0011529139 00000 n 
+0011530273 00000 n 
+0011531622 00000 n 
+0011531838 00000 n 
+0011532140 00000 n 
+0011533279 00000 n 
+0011534931 00000 n 
+0011535151 00000 n 
+0011535482 00000 n 
+0011536619 00000 n 
+0011539224 00000 n 
+0011539439 00000 n 
+0011540803 00000 n 
+0011541919 00000 n 
+0011544921 00000 n 
+0011545153 00000 n 
+0011546517 00000 n 
+0011547642 00000 n 
+0011548900 00000 n 
+0011549123 00000 n 
+0011549432 00000 n 
 trailer
 << /Size 4570
 /Root 2 0 R
 /Info 1 0 R
 >>
 startxref
-11550430
+11550570
 %%EOF

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index b8e8dd8..6e83441 100644
--- a/book.html
+++ b/book.html
@@ -27731,7 +27731,7 @@ a similar issue in the future.</p>
 <div class="sect3">
 <h4 id="_working_on_an_issue"><a class="anchor" href="#_working_on_an_issue"></a>143.4.2. Working on an issue</h4>
 <div class="paragraph">
-<p>To check for existing issues which you can tackle as a beginner, search for <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20HBASE%20AND%20labels%20in%20(beginner)">issues in JIRA tagged with the label 'beginner'</a>.</p>
+<p>To check for existing issues which you can tackle as a beginner, search for <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20HBASE%20AND%20labels%20in%20(beginner)%20AND%20status%20in%20(Open%2C%20%22In%20Progress%22%2C%20Reopened)">issues in JIRA tagged with the label 'beginner'</a>.</p>
 </div>
 <div class="ulist">
 <div class="title">JIRA Priorites</div>

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


[16/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TablePriorities.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TablePriorities.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TablePriorities.html
index 38cee64..d900251 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TablePriorities.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TablePriorities.html
@@ -220,1065 +220,1075 @@
 <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>    final Procedure pollResult = rq.peek();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      removeFromRunQueue(fairq, rq);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      return null;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>    rq.poll();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    if (rq.isEmpty() || xlockReq) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      removeFromRunQueue(fairq, rq);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      // if the rq is in the fairq because of runnable child<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      // check if the next procedure is still a child.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      Procedure nextProc = rq.peek();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        removeFromRunQueue(fairq, rq);<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>    return pollResult;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">215</span>    if (pollResult == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      return null;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      removeFromRunQueue(fairq, rq);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      return null;<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>    rq.poll();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    if (rq.isEmpty() || xlockReq) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      removeFromRunQueue(fairq, rq);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      // if the rq is in the fairq because of runnable child<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      // check if the next procedure is still a child.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      Procedure nextProc = rq.peek();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        removeFromRunQueue(fairq, rq);<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      String resourceName, LockAndQueue queue) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    LockInfo info = new LockInfo();<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    info.setResourceType(resourceType);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    info.setResourceName(resourceName);<a name="line.243"></a>
+<span class="sourceLineNo">238</span>    return pollResult;<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      String resourceName, LockAndQueue queue) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    LockInfo info = new LockInfo();<a name="line.243"></a>
 <span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    if (queue.hasExclusiveLock()) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.246"></a>
+<span class="sourceLineNo">245</span>    info.setResourceType(resourceType);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    info.setResourceName(resourceName);<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      info.setSharedLockCount(queue.getSharedLockCount());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        continue;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.263"></a>
+<span class="sourceLineNo">248</span>    if (queue.hasExclusiveLock()) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      info.setSharedLockCount(queue.getSharedLockCount());<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>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        continue;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
 <span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>      switch (lockProcedure.getType()) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      case EXCLUSIVE:<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        break;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      case SHARED:<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.270"></a>
+<span class="sourceLineNo">265</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>      switch (lockProcedure.getType()) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      case EXCLUSIVE:<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.270"></a>
 <span class="sourceLineNo">271</span>        break;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.275"></a>
+<span class="sourceLineNo">272</span>      case SHARED:<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        break;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
 <span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">277</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.278"></a>
 <span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return info;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">280</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
 <span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Override<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    schedLock();<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.288"></a>
+<span class="sourceLineNo">283</span>    return info;<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>  @Override<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    schedLock();<a name="line.288"></a>
 <span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          .entrySet()) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        String serverName = entry.getKey().getServerName();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        LockAndQueue queue = entry.getValue();<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>        if (queue.isLocked()) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              serverName, queue);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          lockInfos.add(lockInfo);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          .entrySet()) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        String namespaceName = entry.getKey();<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        LockAndQueue queue = entry.getValue();<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>        if (queue.isLocked()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              namespaceName, queue);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>          lockInfos.add(lockInfo);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        }<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.314"></a>
-<span class="sourceLineNo">315</span>          .entrySet()) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        String tableName = entry.getKey().getNameAsString();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        LockAndQueue queue = entry.getValue();<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>        if (queue.isLocked()) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.320"></a>
-<span class="sourceLineNo">321</span>              tableName, queue);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          lockInfos.add(lockInfo);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        String regionName = entry.getKey();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        LockAndQueue queue = entry.getValue();<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>        if (queue.isLocked()) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              regionName, queue);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          lockInfos.add(lockInfo);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      }<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>      return lockInfos;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    } finally {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      schedUnlock();<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>  @Override<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    LockAndQueue queue = null;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    schedLock();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    try {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      switch (resourceType) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        case SERVER:<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.350"></a>
-<span class="sourceLineNo">351</span>          break;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        case NAMESPACE:<a name="line.352"></a>
-<span class="sourceLineNo">353</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.353"></a>
+<span class="sourceLineNo">290</span>    try {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          .entrySet()) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        String serverName = entry.getKey().getServerName();<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        LockAndQueue queue = entry.getValue();<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>        if (queue.isLocked()) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              serverName, queue);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          lockInfos.add(lockInfo);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          .entrySet()) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        String namespaceName = entry.getKey();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        LockAndQueue queue = entry.getValue();<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>        if (queue.isLocked()) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.311"></a>
+<span class="sourceLineNo">312</span>              namespaceName, queue);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>          lockInfos.add(lockInfo);<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>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.317"></a>
+<span class="sourceLineNo">318</span>          .entrySet()) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        String tableName = entry.getKey().getNameAsString();<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        LockAndQueue queue = entry.getValue();<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>        if (queue.isLocked()) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.323"></a>
+<span class="sourceLineNo">324</span>              tableName, queue);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>          lockInfos.add(lockInfo);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        String regionName = entry.getKey();<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        LockAndQueue queue = entry.getValue();<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>        if (queue.isLocked()) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.334"></a>
+<span class="sourceLineNo">335</span>              regionName, queue);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          lockInfos.add(lockInfo);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return lockInfos;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    } finally {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      schedUnlock();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    LockAndQueue queue = null;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    schedLock();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    try {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      switch (resourceType) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        case SERVER:<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.353"></a>
 <span class="sourceLineNo">354</span>          break;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        case TABLE:<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.356"></a>
+<span class="sourceLineNo">355</span>        case NAMESPACE:<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.356"></a>
 <span class="sourceLineNo">357</span>          break;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        case REGION:<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          queue = locking.regionLocks.get(resourceName);<a name="line.359"></a>
+<span class="sourceLineNo">358</span>        case TABLE:<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.359"></a>
 <span class="sourceLineNo">360</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    } finally {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      schedUnlock();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public void clear() {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    schedLock();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    try {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      clearQueue();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      locking.clear();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    } finally {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      schedUnlock();<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>  protected void clearQueue() {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    // Remove Servers<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      serverBuckets[i] = null;<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>    // Remove Tables<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    tableMap = null;<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
+<span class="sourceLineNo">361</span>        case REGION:<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          queue = locking.regionLocks.get(resourceName);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    } finally {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      schedUnlock();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  @Override<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  public void clear() {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    schedLock();<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    try {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      clearQueue();<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      locking.clear();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    } finally {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      schedUnlock();<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><a name="line.382"></a>
+<span class="sourceLineNo">383</span>  protected void clearQueue() {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // Remove Servers<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      serverBuckets[i] = null;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>    // Remove Tables<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    tableMap = null;<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    while (treeMap != null) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Override<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  protected int queueSize() {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    int count = 0;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // Server queues<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      while (serverIter.hasNext()) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        count += serverIter.next().size();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>    // Table queues<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    while (tableIter.hasNext()) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      count += tableIter.next().size();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    return count;<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 completionCleanup(final Procedure proc) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    if (proc instanceof TableProcedureInterface) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      boolean tableDeleted;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (proc.hasException()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          // create failed because the table already exist<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        } else {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          // the operation failed because the table does not exist<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      } else {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        // the table was deleted<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if (tableDeleted) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        return;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    } else {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      return;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      fairq.add(queue);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      fairq.remove(queue);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>  // ============================================================================<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  //  Table Queue Lookup Helpers<a name="line.466"></a>
-<span class="sourceLineNo">467</span>  // ============================================================================<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    if (node != null) return node;<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    return node;<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private void removeTableQueue(TableName tableName) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    locking.removeTableLock(tableName);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  }<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    return proc instanceof TableProcedureInterface;<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>  private static TableName getTableName(Procedure proc) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  }<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>  //  Server Queue Lookup Helpers<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  // ============================================================================<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    if (node != null) return node;<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    return node;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  }<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    return Math.abs(hashCode) % buckets.length;<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>  private static boolean isServerProcedure(Procedure proc) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  // ============================================================================<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  //  Table and Server Queue Implementation<a name="line.518"></a>
-<span class="sourceLineNo">519</span>  // ============================================================================<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    @Override<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      return node.compareKey((ServerName)key);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      super(serverName, serverLock);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>    @Override<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      switch (spi.getServerOperationType()) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        case CRASH_HANDLER:<a name="line.536"></a>
-<span class="sourceLineNo">537</span>          return true;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        default:<a name="line.538"></a>
-<span class="sourceLineNo">539</span>          break;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      }<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    @Override<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    public int compareKey(TableQueue node, Object key) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      return node.compareKey((TableName)key);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    }<a name="line.549"></a>
-<span class="sourceLineNo">550</span>  }<a name="line.550"></a>
-<span class="sourceLineNo">551</span><a name="line.551"></a>
-<span class="sourceLineNo">552</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    private final LockStatus namespaceLockStatus;<a name="line.553"></a>
+<span class="sourceLineNo">394</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    while (treeMap != null) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  @Override<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  protected int queueSize() {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    int count = 0;<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>    // Server queues<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      while (serverIter.hasNext()) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        count += serverIter.next().size();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>    // Table queues<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    while (tableIter.hasNext()) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      count += tableIter.next().size();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    return count;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  @Override<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  public void completionCleanup(final Procedure proc) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    if (proc instanceof TableProcedureInterface) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      boolean tableDeleted;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      if (proc.hasException()) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>          // create failed because the table already exist<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        } else {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          // the operation failed because the table does not exist<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      } else {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        // the table was deleted<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      }<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      if (tableDeleted) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        return;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      }<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } else {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      return;<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><a name="line.454"></a>
+<span class="sourceLineNo">455</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      fairq.add(queue);<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>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      fairq.remove(queue);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  }<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>  // ============================================================================<a name="line.468"></a>
+<span class="sourceLineNo">469</span>  //  Table Queue Lookup Helpers<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  // ============================================================================<a name="line.470"></a>
+<span class="sourceLineNo">471</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    if (node != null) return node;<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    return node;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  }<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>  private void removeTableQueue(TableName tableName) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    locking.removeTableLock(tableName);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span><a name="line.486"></a>
+<span class="sourceLineNo">487</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    return proc instanceof TableProcedureInterface;<a name="line.488"></a>
+<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>  private static TableName getTableName(Procedure proc) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  }<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>  // ============================================================================<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  //  Server Queue Lookup Helpers<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  // ============================================================================<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    if (node != null) return node;<a name="line.501"></a>
+<span class="sourceLineNo">502</span><a name="line.502"></a>
+<span class="sourceLineNo">503</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    return node;<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>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return Math.abs(hashCode) % buckets.length;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>  private static boolean isServerProcedure(Procedure proc) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
+<span class="sourceLineNo">519</span><a name="line.519"></a>
+<span class="sourceLineNo">520</span>  // ============================================================================<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  //  Table and Server Queue Implementation<a name="line.521"></a>
+<span class="sourceLineNo">522</span>  // ============================================================================<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    @Override<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      return node.compareKey((ServerName)key);<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>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      super(serverName, serverLock);<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>    @Override<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      switch (spi.getServerOperationType()) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        case CRASH_HANDLER:<a name="line.539"></a>
+<span class="sourceLineNo">540</span>          return true;<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        default:<a name="line.541"></a>
+<span class="sourceLineNo">542</span>          break;<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    @Override<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    public int compareKey(TableQueue node, Object key) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      return node.compareKey((TableName)key);<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><a name="line.554"></a>
-<span class="sourceLineNo">555</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        LockStatus namespaceLockStatus) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      super(tableName, priority, tableLock);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      this.namespaceLockStatus = namespaceLockStatus;<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>    @Override<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    public boolean isAvailable() {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      // we can't execute operation on this table<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>        return false;<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>      if (getLockStatus().hasExclusiveLock()) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        // if we have an exclusive lock already taken<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        // only child of the lock owner can be executed<a name="line.571"></a>
-<span class="sourceLineNo">572</span>        final Procedure nextProc = peek();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>      // no xlock<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return true;<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>    @Override<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
-<span class="sourceLineNo">585</span><a name="line.585"></a>
-<span class="sourceLineNo">586</span>  // ============================================================================<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  //  Table Locking Helpers<a name="line.587"></a>
-<span class="sourceLineNo">588</span>  // ============================================================================<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    switch (proc.getTableOperationType()) {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      case CREATE:<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      case DELETE:<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      case DISABLE:<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      case ENABLE:<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        return true;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      case EDIT:<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        // we allow concurrent edit on the NS table<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      case READ:<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        return false;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      // region operations are using the shared-lock on the table<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      // and then they will grab an xlock on the region.<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      case REGION_SPLIT:<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      case REGION_MERGE:<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      case REGION_ASSIGN:<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      case REGION_UNASSIGN:<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      case REGION_EDIT:<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      case REGION_GC:<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      case MERGED_REGIONS_GC:<a name="line.609"></a>
-<span class="sourceLineNo">610</span>        return false;<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      default:<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        break;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    }<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        proc.getTableOperationType());<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  /**<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * Get lock info for a resource of specified type and name and log details<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   */<a name="line.620"></a>
-<span class="sourceLineNo">621</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    if (!LOG.isDebugEnabled()) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      return;<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    if (lockInfo != null) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.628"></a>
-<span class="sourceLineNo">629</span>          lockInfo.getSharedLockCount();<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      if (proc != null) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      }<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      LOG.debug(msg);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    }<a name="line.636"></a>
-<span class="sourceLineNo">637</span>  }<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>  /**<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   * Suspend the procedure if the specified table is already locked.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.641"></a>
-<span class="sourceLineNo">642</span>   * @param procedure the procedure trying to acquire the lock<a name="line.642"></a>
-<span class="sourceLineNo">643</span>   * @param table Table to lock<a name="line.643"></a>
-<span class="sourceLineNo">644</span>   * @return true if the procedure has to wait for the table to be available<a name="line.644"></a>
-<span class="sourceLineNo">645</span>   */<a name="line.645"></a>
-<span class="sourceLineNo">646</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    schedLock();<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    try {<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      final String namespace = table.getNamespaceAsString();<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      if (!namespaceLock.trySharedLock()) {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>        waitProcedure(namespaceLock, procedure);<a name="line.653"></a>
-<span class="sourceLineNo">654</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        return true;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      if (!tableLock.tryExclusiveLock(procedure)) {<a name="line.657"></a>
-<span class="sourceLineNo">658</span>        namespaceLock.releaseSharedLock();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>        waitProcedure(tableLock, procedure);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.TABLE, table.getNameAsString());<a name="line.660"></a>
+<span class="sourceLineNo">555</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    private final LockStatus namespaceLockStatus;<a name="line.556"></a>
+<span class="sourceLineNo">557</span><a name="line.557"></a>
+<span class="sourceLineNo">558</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>        LockStatus namespaceLockStatus) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      super(tableName, priority, tableLock);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      this.namespaceLockStatus = namespaceLockStatus;<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    }<a name="line.562"></a>
+<span class="sourceLineNo">563</span><a name="line.563"></a>
+<span class="sourceLineNo">564</span>    @Override<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    public boolean isAvailable() {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      // we can't execute operation on this table<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.568"></a>
+<span class="sourceLineNo">569</span>        return false;<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      }<a name="line.570"></a>
+<span class="sourceLineNo">571</span><a name="line.571"></a>
+<span class="sourceLineNo">572</span>      if (getLockStatus().hasExclusiveLock()) {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>        // if we have an exclusive lock already taken<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        // only child of the lock owner can be executed<a name="line.574"></a>
+<span class="sourceLineNo">575</span>        final Procedure nextProc = peek();<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>      // no xlock<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      return true;<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
+<span class="sourceLineNo">582</span><a name="line.582"></a>
+<span class="sourceLineNo">583</span>    @Override<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    }<a name="line.586"></a>
+<span class="sourceLineNo">587</span>  }<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>  // ============================================================================<a name="line.589"></a>
+<span class="sourceLineNo">590</span>  //  Table Locking Helpers<a name="line.590"></a>
+<span class="sourceLineNo">591</span>  // ============================================================================<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  /**<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @param proc must not be null<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   */<a name="line.594"></a>
+<span class="sourceLineNo">595</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    switch (proc.getTableOperationType()) {<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      case CREATE:<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      case DELETE:<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      case DISABLE:<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      case ENABLE:<a name="line.600"></a>
+<span class="sourceLineNo">601</span>        return true;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      case EDIT:<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        // we allow concurrent edit on the NS table<a name="line.603"></a>
+<span class="sourceLineNo">604</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      case READ:<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        return false;<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      // region operations are using the shared-lock on the table<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      // and then they will grab an xlock on the region.<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      case REGION_SPLIT:<a name="line.609"></a>
+<span class="sourceLineNo">610</span>      case REGION_MERGE:<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      case REGION_ASSIGN:<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      case REGION_UNASSIGN:<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      case REGION_EDIT:<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      case REGION_GC:<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      case MERGED_REGIONS_GC:<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        return false;<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      default:<a name="line.617"></a>
+<span class="sourceLineNo">618</span>        break;<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    }<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.620"></a>
+<span class="sourceLineNo">621</span>        proc.getTableOperationType());<a name="line.621"></a>
+<span class="sourceLineNo">622</span>  }<a name="line.622"></a>
+<span class="sourceLineNo">623</span><a name="line.623"></a>
+<span class="sourceLineNo">624</span>  /**<a name="line.624"></a>
+<span class="sourceLineNo">625</span>   * Get lock info for a resource of specified type and name and log details<a name="line.625"></a>
+<span class="sourceLineNo">626</span>   */<a name="line.626"></a>
+<span class="sourceLineNo">627</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    if (!LOG.isDebugEnabled()) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>      return;<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>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    if (lockInfo != null) {<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.634"></a>
+<span class="sourceLineNo">635</span>          lockInfo.getSharedLockCount();<a name="line.635"></a>
+<span class="sourceLineNo">636</span><a name="line.636"></a>
+<span class="sourceLineNo">637</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.637"></a>
+<span class="sourceLineNo">638</span>      if (proc != null) {<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      }<a name="line.640"></a>
+<span class="sourceLineNo">641</span>      LOG.debug(msg);<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>  }<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   * Suspend the procedure if the specified table is already locked.<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.647"></a>
+<span class="sourceLineNo">648</span>   * @param procedure the procedure trying to acquire the lock<a name="line.648"></a>
+<span class="sourceLineNo">649</span>   * @param table Table to lock<a name="line.649"></a>
+<span class="sourceLineNo">650</span>   * @return true if the procedure has to wait for the table to be available<a name="line.650"></a>
+<span class="sourceLineNo">651</span>   */<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    schedLock();<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    try {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>      final String namespace = table.getNamespaceAsString();<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      if (!namespaceLock.trySharedLock()) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>        waitProcedure(namespaceLock, procedure);<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.660"></a>
 <span class="sourceLineNo">661</span>        return true;<a name="line.661"></a>
 <span class="sourceLineNo">662</span>      }<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      removeFromRunQueue(tableRunQueue, getTableQueue(table));<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      return false;<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    } finally {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      schedUnlock();<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  }<a name="line.668"></a>
-<span class="sourceLineNo">669</span><a name="line.669"></a>
-<span class="sourceLineNo">670</span>  /**<a name="line.670"></a>
-<span class="sourceLineNo">671</span>   * Wake the procedures waiting for the specified table<a name="line.671"></a>
-<span class="sourceLineNo">672</span>   * @param procedure the procedure releasing the lock<a name="line.672"></a>
-<span class="sourceLineNo">673</span>   * @param table the name of the table that has the exclusive lock<a name="line.673"></a>
-<span class="sourceLineNo">674</span>   */<a name="line.674"></a>
-<span class="sourceLineNo">675</span>  public void wakeTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    schedLock();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    try {<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(table.getNamespaceAsString());<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      int waitingCount = 0;<a name="line.680"></a>
-<span class="sourceLineNo">681</span><a name="line.681"></a>
-<span class="sourceLineNo">682</span>      if (!tableLock.hasParentLock(procedure)) {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>        tableLock.releaseExclusiveLock(procedure);<a name="line.683"></a>
-<span class="sourceLineNo">684</span>        waitingCount += wakeWaitingProcedures(tableLock);<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      }<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      if (namespaceLock.releaseSharedLock()) {<a name="line.686"></a>
-<span class="sourceLineNo">687</span>        waitingCount += wakeWaitingProcedures(namespaceLock);<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      }<a name="line.688"></a>
-<span class="sourceLineNo">689</span>      addToRunQueue(tableRunQueue, getTableQueue(table));<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      wakePollIfNeeded(waitingCount);<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    } finally {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>      schedUnlock();<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><a name="line.695"></a>
-<span class="sourceLineNo">696</span>  /**<a name="line.696"></a>
-<span class="sourceLineNo">697</span>   * Suspend the procedure if the specified table is already locked.<a name="line.697"></a>
-<span class="sourceLineNo">698</span>   * other "read" operations in the table-queue may be executed concurrently,<a name="line.698"></a>
-<span class="sourceLineNo">699</span>   * @param procedure the procedure trying to acquire the lock<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   * @param table Table to lock<a name="line.700"></a>
-<span class="sourceLineNo">701</span>   * @return true if the procedure has to wait for the table to be available<a name="line.701"></a>
-<span class="sourceLineNo">702</span>   */<a name="line.702"></a>
-<span class="sourceLineNo">703</span>  public boolean waitTableSharedLock(final Procedure procedure, final TableName table) {<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    return waitTableQueueSharedLock(procedure, table) == null;<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>  private TableQueue waitTableQueueSharedLock(final Procedure procedure, final TableName table) {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    schedLock();<a name="line.708"></

<TRUNCATED>

[37/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html b/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
index 493d5f8..8a847dc 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
@@ -248,7 +248,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" tit
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#abort-java.lang.String-java.lang.Throwable-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#abortProcedure-long-boolean-">abortProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#addColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HColumnDescriptor-long-long-">addColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#addReplicationPeer-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">addReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balance--">balance</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balance-boolean-">balance</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balanceSwitch-boolean-">balanceSwitch</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#canCreateB
 aseZNode--">canCreateBaseZNode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#canUpdateTableDescriptor--">canUpdateTableDescriptor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkIfShouldMoveSystemRegionAsync--">checkIfShouldMoveSystemRegionAsync</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkInitialized--">checkInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkServiceStarted--">checkServiceStarted</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkTableModifiable-org.apache.hadoop.hbase.TableName-">checkTableModifiable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#configureInfoServer--">configureInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#constructMaster-java.lang.Class-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CoordinatedStateManager-">construct
 Master</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createMetaBootstrap-org.apache.hadoop.hbase.master.HMaster-org.apache.hadoop.hbase.monitoring.MonitoredTask-">createMetaBootstrap</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">createNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createQuotaSnapshotNotifier--">createQuotaSnapshotNotifier</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createRpcServices--">createRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createServerManager-org.apache.hadoop.hbase.master.MasterServices-">createServerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createSystemTable-org.apache.hadoop.hbase.HTableDescriptor-">createSystemTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.h
 tml#createTable-org.apache.hadoop.hbase.HTableDescriptor-byte:A:A-long-long-">createTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteColumn-org.apache.hadoop.hbase.TableName-byte:A-long-long-">deleteColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteNamespace-java.lang.String-long-long-">deleteNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteTable-org.apache.hadoop.hbase.TableName-long-long-">deleteTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableReplicationPeer-java.lang.String-">disableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableTable-org.apache.hadoop.hbase.TableName-long-long-">disableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#drainRegionServer-org.apache.hadoop.hbase.ServerName-">drainRegionServer</a>, <a href="../../../../../org/apache/hadoop/hb
 ase/master/HMaster.html#enableReplicationPeer-java.lang.String-">enableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#enableTable-org.apache.hadoop.hbase.TableName-long-long-">enableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAssignmentManager--">getAssignmentManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAverageLoad--">getAverageLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getCatalogJanitor--">getCatalogJanitor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClientIdAuditPrefix--">getClientIdAuditPrefix</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterSchema--">getClusterSchema</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterStatus--">getClusterStatus</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getDumpServlet--
 ">getDumpServlet</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getFavoredNodesManager--">getFavoredNodesManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getFsTableDescriptors--">getFsTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getHFileCleaner--">getHFileCleaner</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getInitializedEvent--">getInitializedEvent</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLastMajorCompactionTimestamp-org.apache.hadoop.hbase.TableName-">getLastMajorCompactionTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLastMajorCompactionTimestampForRegion-byte:A-">getLastMajorCompactionTimestampForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadBalancer--">getLoadBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.h
 tml#getLoadBalancerClassName--">getLoadBalancerClassName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadedCoprocessors--">getLoadedCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLockManager--">getLockManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLogCleaner--">getLogCleaner</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterActiveTime--">getMasterActiveTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessorHost--">getMasterCoprocessorHost</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessors--">getMasterCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterFileSystem--">getMasterFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterMetrics--">getMasterMetrics</a>, <a href="../../..
 /../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureExecutor--">getMasterProcedureExecutor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureManagerHost--">getMasterProcedureManagerHost</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterQuotaManager--">getMasterQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterRpcServices--">getMasterRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterStartTime--">getMasterStartTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterWalManager--">getMasterWalManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMergePlanCount--">getMergePlanCount</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMobCompactionState-org.apache.hadoop.hbase.TableName-">getMobCompactionState</a>, <a href="../../
 ../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespace-java.lang.String-">getNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespaces--">getNamespaces</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNumWALFiles--">getNumWALFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getProcessName--">getProcessName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getQuotaObserverChore--">getQuotaObserverChore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizer--">getRegionNormalizer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizerTracker--">getRegionNormalizerTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerFatalLogBuffer--">getRegionServerFatalLogBuffer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegio
 nServerInfoPort-org.apache.hadoop.hbase.ServerName-">getRegionServerInfoPort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerVersion-org.apache.hadoop.hbase.ServerName-">getRegionServerVersion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRemoteInetAddress-int-long-">getRemoteInetAddress</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerConfig-java.lang.String-">getReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerCrashProcessingEnabledEvent--">getServerCrashProcessingEnabledEvent</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerManager--">getServerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerName--">getServerName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotManager--">getSnapshotManager</a>, <a href="../.
 ./../../../org/apache/hadoop/hbase/master/HMaster.html#getSpaceQuotaSnapshotNotifier--">getSpaceQuotaSnapshotNotifier</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitOrMergeTracker--">getSplitOrMergeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitPlanCount--">getSplitPlanCount</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableDescriptors--">getTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableRegionForRow-org.apache.hadoop.hbase.TableName-byte:A-">getTableRegionForRow</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableStateManager--">getTableStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getWalProcedureStore--">getWalProcedureStore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getZooKeeper--">getZooKeeper</a>, <a href="../../../../../org/
 apache/hadoop/hbase/master/HMaster.html#initClusterSchemaService--">initClusterSchemaService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initializeZKBasedSystemTrackers--">initializeZKBasedSystemTrackers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initQuotaManager--">initQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isActiveMaster--">isActiveMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isBalancerOn--">isBalancerOn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCatalogJanitorEnabled--">isCatalogJanitorEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCleanerChoreEnabled--">isCleanerChoreEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInitializationStartsMetaRegionAssignment--">isInitializationStartsMetaRegionAssignment</a>, <a href="../../../../../org/apache/
 hadoop/hbase/master/HMaster.html#isInitialized--">isInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInMaintenanceMode--">isInMaintenanceMode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isNormalizerOn--">isNormalizerOn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isServerCrashProcessingEnabled--">isServerCrashProcessingEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isSplitOrMergeEnabled-org.apache.hadoop.hbase.client.MasterSwitchType-">isSplitOrMergeEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listDrainingRegionServers--">listDrainingRegionServers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listLocks--">listLocks</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listProcedures--">listProcedures</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#lis
 tReplicationPeers-java.lang.String-">listReplicationPeers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptors-java.lang.String-java.lang.String-java.util.List-boolean-">listTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptorsByNamespace-java.lang.String-">listTableDescriptorsByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNames-java.lang.String-java.lang.String-boolean-">listTableNames</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNamesByNamespace-java.lang.String-">listTableNamesByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#login-org.apache.hadoop.hbase.security.UserProvider-java.lang.String-">login</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#main-java.lang.String:A-">main</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMas
 ter.html#mergeRegions-org.apache.hadoop.hbase.HRegionInfo:A-boolean-long-long-">mergeRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HColumnDescriptor-long-long-">modifyColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">modifyNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HTableDescriptor-long-long-">modifyTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#move-byte:A-byte:A-">move</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#normalizeRegions--">normalizeRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#registerService-com.google.protobuf.Service-">registerService</a>, <a href="../../../../..
 /org/apache/hadoop/hbase/master/HMaster.html#removeDrainFromRegionServer-org.apache.hadoop.hbase.ServerName-">removeDrainFromRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#removeReplicationPeer-java.lang.String-">removeReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionEnd-org.apache.hadoop.hbase.TableName-">reportMobCompactionEnd</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionStart-org.apache.hadoop.hbase.TableName-">reportMobCompactionStart</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#requestMobCompaction-org.apache.hadoop.hbase.TableName-java.util.List-boolean-">requestMobCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#restoreSnapshot-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-long-long-boolean-">restoreSnapshot</a>, <a href="../../../..
 /../org/apache/hadoop/hbase/master/HMaster.html#setCatalogJanitorEnabled-boolean-">setCatalogJanitorEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setInitialized-boolean-">setInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setServerCrashProcessingEnabled-boolean-">setServerCrashProcessingEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#shutdown--">shutdown</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#splitRegion-org.apache.hadoop.hbase.HRegionInfo-byte:A-long-long-">splitRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopMaster--">stopMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopServiceThreads--">stopServiceThreads</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a>, <a href="..
 /../../../../org/apache/hadoop/hbase/master/HMaster.html#updateConfigurationForSpaceQuotaObserver-org.apache.hadoop.conf.Configuration-">updateConfigurationForSpaceQuotaObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updateReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#waitForMasterActive--">waitForMasterActive</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#abort-java.lang.String-java.lang.Throwable-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#abortProcedure-long-boolean-">abortProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#addColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HColumnDescriptor-long-long-">addColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#addReplicationPeer-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">addReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balance--">balance</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balance-boolean-">balance</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balanceSwitch-boolean-">balanceSwitch</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#canCreateB
 aseZNode--">canCreateBaseZNode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#canUpdateTableDescriptor--">canUpdateTableDescriptor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkIfShouldMoveSystemRegionAsync--">checkIfShouldMoveSystemRegionAsync</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkInitialized--">checkInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkServiceStarted--">checkServiceStarted</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkTableModifiable-org.apache.hadoop.hbase.TableName-">checkTableModifiable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#configureInfoServer--">configureInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#constructMaster-java.lang.Class-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CoordinatedStateManager-">construct
 Master</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createMetaBootstrap-org.apache.hadoop.hbase.master.HMaster-org.apache.hadoop.hbase.monitoring.MonitoredTask-">createMetaBootstrap</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">createNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createQuotaSnapshotNotifier--">createQuotaSnapshotNotifier</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createRpcServices--">createRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createServerManager-org.apache.hadoop.hbase.master.MasterServices-">createServerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createSystemTable-org.apache.hadoop.hbase.HTableDescriptor-">createSystemTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.h
 tml#createTable-org.apache.hadoop.hbase.HTableDescriptor-byte:A:A-long-long-">createTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteColumn-org.apache.hadoop.hbase.TableName-byte:A-long-long-">deleteColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteNamespace-java.lang.String-long-long-">deleteNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteTable-org.apache.hadoop.hbase.TableName-long-long-">deleteTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableReplicationPeer-java.lang.String-">disableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableTable-org.apache.hadoop.hbase.TableName-long-long-">disableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#drainRegionServer-org.apache.hadoop.hbase.ServerName-">drainRegionServer</a>, <a href="../../../../../org/apache/hadoop/hb
 ase/master/HMaster.html#enableReplicationPeer-java.lang.String-">enableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#enableTable-org.apache.hadoop.hbase.TableName-long-long-">enableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAssignmentManager--">getAssignmentManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAverageLoad--">getAverageLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getCatalogJanitor--">getCatalogJanitor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClientIdAuditPrefix--">getClientIdAuditPrefix</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterSchema--">getClusterSchema</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterStatus--">getClusterStatus</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getDumpServlet--
 ">getDumpServlet</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getFavoredNodesManager--">getFavoredNodesManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getFsTableDescriptors--">getFsTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getHFileCleaner--">getHFileCleaner</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getInitializedEvent--">getInitializedEvent</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLastMajorCompactionTimestamp-org.apache.hadoop.hbase.TableName-">getLastMajorCompactionTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLastMajorCompactionTimestampForRegion-byte:A-">getLastMajorCompactionTimestampForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadBalancer--">getLoadBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.h
 tml#getLoadBalancerClassName--">getLoadBalancerClassName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadedCoprocessors--">getLoadedCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLockManager--">getLockManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLogCleaner--">getLogCleaner</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterActiveTime--">getMasterActiveTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessorHost--">getMasterCoprocessorHost</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessors--">getMasterCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterFileSystem--">getMasterFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterMetrics--">getMasterMetrics</a>, <a href="../../..
 /../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureExecutor--">getMasterProcedureExecutor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureManagerHost--">getMasterProcedureManagerHost</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterQuotaManager--">getMasterQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterRpcServices--">getMasterRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterStartTime--">getMasterStartTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterWalManager--">getMasterWalManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMergePlanCount--">getMergePlanCount</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMobCompactionState-org.apache.hadoop.hbase.TableName-">getMobCompactionState</a>, <a href="../../
 ../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespace-java.lang.String-">getNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespaces--">getNamespaces</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNumWALFiles--">getNumWALFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getProcessName--">getProcessName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getQuotaObserverChore--">getQuotaObserverChore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizer--">getRegionNormalizer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizerTracker--">getRegionNormalizerTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerFatalLogBuffer--">getRegionServerFatalLogBuffer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegio
 nServerInfoPort-org.apache.hadoop.hbase.ServerName-">getRegionServerInfoPort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerVersion-org.apache.hadoop.hbase.ServerName-">getRegionServerVersion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRemoteInetAddress-int-long-">getRemoteInetAddress</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerConfig-java.lang.String-">getReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerCrashProcessingEnabledEvent--">getServerCrashProcessingEnabledEvent</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerManager--">getServerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerName--">getServerName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotManager--">getSnapshotManager</a>, <a href="../.
 ./../../../org/apache/hadoop/hbase/master/HMaster.html#getSpaceQuotaSnapshotNotifier--">getSpaceQuotaSnapshotNotifier</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitOrMergeTracker--">getSplitOrMergeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitPlanCount--">getSplitPlanCount</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableDescriptors--">getTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableRegionForRow-org.apache.hadoop.hbase.TableName-byte:A-">getTableRegionForRow</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableStateManager--">getTableStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getWalProcedureStore--">getWalProcedureStore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getZooKeeper--">getZooKeeper</a>, <a href="../../../../../org/
 apache/hadoop/hbase/master/HMaster.html#initClusterSchemaService--">initClusterSchemaService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initializeZKBasedSystemTrackers--">initializeZKBasedSystemTrackers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initQuotaManager--">initQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isActiveMaster--">isActiveMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isBalancerOn--">isBalancerOn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCatalogJanitorEnabled--">isCatalogJanitorEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCleanerChoreEnabled--">isCleanerChoreEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInitialized--">isInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInMaintenanceMode--">is
 InMaintenanceMode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isNormalizerOn--">isNormalizerOn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isServerCrashProcessingEnabled--">isServerCrashProcessingEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isSplitOrMergeEnabled-org.apache.hadoop.hbase.client.MasterSwitchType-">isSplitOrMergeEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listDrainingRegionServers--">listDrainingRegionServers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listLocks--">listLocks</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listProcedures--">listProcedures</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listReplicationPeers-java.lang.String-">listReplicationPeers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptors-java.lang.
 String-java.lang.String-java.util.List-boolean-">listTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptorsByNamespace-java.lang.String-">listTableDescriptorsByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNames-java.lang.String-java.lang.String-boolean-">listTableNames</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNamesByNamespace-java.lang.String-">listTableNamesByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#login-org.apache.hadoop.hbase.security.UserProvider-java.lang.String-">login</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#main-java.lang.String:A-">main</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mergeRegions-org.apache.hadoop.hbase.HRegionInfo:A-boolean-long-long-">mergeRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.h
 tml#modifyColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HColumnDescriptor-long-long-">modifyColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">modifyNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HTableDescriptor-long-long-">modifyTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#move-byte:A-byte:A-">move</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#normalizeRegions--">normalizeRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#recoverMeta--">recoverMeta</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#registerService-com.google.protobuf.Service-">registerService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#removeDrainFromRe
 gionServer-org.apache.hadoop.hbase.ServerName-">removeDrainFromRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#removeReplicationPeer-java.lang.String-">removeReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionEnd-org.apache.hadoop.hbase.TableName-">reportMobCompactionEnd</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionStart-org.apache.hadoop.hbase.TableName-">reportMobCompactionStart</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#requestMobCompaction-org.apache.hadoop.hbase.TableName-java.util.List-boolean-">requestMobCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#restoreSnapshot-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-long-long-boolean-">restoreSnapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setCatalogJani
 torEnabled-boolean-">setCatalogJanitorEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setInitialized-boolean-">setInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setServerCrashProcessingEnabled-boolean-">setServerCrashProcessingEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#shutdown--">shutdown</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#splitRegion-org.apache.hadoop.hbase.HRegionInfo-byte:A-long-long-">splitRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopMaster--">stopMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopServiceThreads--">stopServiceThreads</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updat
 eConfigurationForSpaceQuotaObserver-org.apache.hadoop.conf.Configuration-">updateConfigurationForSpaceQuotaObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updateReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#waitForMasterActive--">waitForMasterActive</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html b/devapidocs/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html
index 44fa3d0..f1c510e 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/MasterMetaBootstrap.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};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre><a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.Private</a>
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.46">MasterMetaBootstrap</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.45">MasterMetaBootstrap</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Used by the HMaster on startup to split meta logs and assign the meta table.</div>
 </li>
@@ -140,14 +140,6 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#master">master</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#previouslyFailedMetaRSs">previouslyFailedMetaRSs</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#previouslyFailedServers">previouslyFailedServers</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#status">status</a></span></code>&nbsp;</td>
 </tr>
@@ -185,43 +177,28 @@ extends <a href="http://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>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#assignMeta--">assignMeta</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i1" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#assignMeta-java.util.Set-int-">assignMeta</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;previouslyFailedMetaRSs,
-          int&nbsp;replicaId)</code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#assignMeta-int-">assignMeta</a></span>(int&nbsp;replicaId)</code>
 <div class="block">Check <code>hbase:meta</code> is assigned.</div>
 </td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i1" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#assignMetaReplicas--">assignMetaReplicas</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<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/MasterMetaBootstrap.html#enableCrashedServerProcessing-boolean-">enableCrashedServerProcessing</a></span>(boolean&nbsp;waitForMeta)</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
-<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#getPreviouselyFailedMetaServersFromZK--">getPreviouselyFailedMetaServersFromZK</a></span>()</code>
-<div class="block">This function returns a set of region server names under hbase:meta recovering region ZK node</div>
-</td>
-</tr>
-<tr id="i5" class="rowColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#processDeadServers--">processDeadServers</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#splitMetaLogBeforeAssignment-org.apache.hadoop.hbase.ServerName-">splitMetaLogBeforeAssignment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;currentMetaServer)</code>&nbsp;</td>
-</tr>
-<tr id="i7" 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/MasterMetaBootstrap.html#splitMetaLogsBeforeAssignment--">splitMetaLogsBeforeAssignment</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#recoverMeta--">recoverMeta</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#unassignExcessMetaReplica-int-">unassignExcessMetaReplica</a></span>(int&nbsp;numMetaReplicasConfigured)</code>&nbsp;</td>
 </tr>
@@ -253,7 +230,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.47">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.46">LOG</a></pre>
 </li>
 </ul>
 <a name="status">
@@ -262,34 +239,16 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>status</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.49">status</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.48">status</a></pre>
 </li>
 </ul>
 <a name="master">
 <!--   -->
 </a>
-<ul class="blockList">
-<li class="blockList">
-<h4>master</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.50">master</a></pre>
-</li>
-</ul>
-<a name="previouslyFailedServers">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>previouslyFailedServers</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.52">previouslyFailedServers</a></pre>
-</li>
-</ul>
-<a name="previouslyFailedMetaRSs">
-<!--   -->
-</a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>previouslyFailedMetaRSs</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.53">previouslyFailedMetaRSs</a></pre>
+<h4>master</h4>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.49">master</a></pre>
 </li>
 </ul>
 </li>
@@ -306,7 +265,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MasterMetaBootstrap</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.55">MasterMetaBootstrap</a>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.51">MasterMetaBootstrap</a>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master,
                            <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)</pre>
 </li>
 </ul>
@@ -318,37 +277,19 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="splitMetaLogsBeforeAssignment--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>splitMetaLogsBeforeAssignment</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.60">splitMetaLogsBeforeAssignment</a>()
-                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
-                                          org.apache.zookeeper.KeeperException</pre>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
-</dl>
-</li>
-</ul>
-<a name="assignMeta--">
+<a name="recoverMeta--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>assignMeta</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.86">assignMeta</a>()
-                throws <a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
-                       org.apache.zookeeper.KeeperException</pre>
+<h4>recoverMeta</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.56">recoverMeta</a>()
+                 throws <a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
 </dl>
 </li>
 </ul>
@@ -358,12 +299,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>processDeadServers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.90">processDeadServers</a>()
-                        throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-</dl>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.62">processDeadServers</a>()</pre>
 </li>
 </ul>
 <a name="assignMetaReplicas--">
@@ -372,7 +308,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>assignMetaReplicas</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.98">assignMetaReplicas</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.76">assignMetaReplicas</a>()
                         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
                                org.apache.zookeeper.KeeperException</pre>
@@ -384,37 +320,22 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 </dl>
 </li>
 </ul>
-<a name="splitMetaLogBeforeAssignment-org.apache.hadoop.hbase.ServerName-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>splitMetaLogBeforeAssignment</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.109">splitMetaLogBeforeAssignment</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;currentMetaServer)
-                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-</dl>
-</li>
-</ul>
 <a name="unassignExcessMetaReplica-int-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>unassignExcessMetaReplica</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.113">unassignExcessMetaReplica</a>(int&nbsp;numMetaReplicasConfigured)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.86">unassignExcessMetaReplica</a>(int&nbsp;numMetaReplicasConfigured)</pre>
 </li>
 </ul>
-<a name="assignMeta-java.util.Set-int-">
+<a name="assignMeta-int-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>assignMeta</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.140">assignMeta</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;previouslyFailedMetaRSs,
-                          int&nbsp;replicaId)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.113">assignMeta</a>(int&nbsp;replicaId)
                    throws <a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                           org.apache.zookeeper.KeeperException</pre>
@@ -430,36 +351,17 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <a name="enableCrashedServerProcessing-boolean-">
 <!--   -->
 </a>
-<ul class="blockList">
+<ul class="blockListLast">
 <li class="blockList">
 <h4>enableCrashedServerProcessing</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.181">enableCrashedServerProcessing</a>(boolean&nbsp;waitForMeta)
-                                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
-                                           <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.153">enableCrashedServerProcessing</a>(boolean&nbsp;waitForMeta)
+                                    throws <a href="http://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>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
 </dl>
 </li>
 </ul>
-<a name="getPreviouselyFailedMetaServersFromZK--">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>getPreviouselyFailedMetaServersFromZK</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.201">getPreviouselyFailedMetaServersFromZK</a>()
-                                                       throws org.apache.zookeeper.KeeperException</pre>
-<div class="block">This function returns a set of region server names under hbase:meta recovering region ZK node</div>
-<dl>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>Set of meta server names which were recorded in ZK</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
-</dl>
-</li>
-</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/MasterServices.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/MasterServices.html b/devapidocs/org/apache/hadoop/hbase/master/MasterServices.html
index f36d9e6..4e81327 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/MasterServices.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/MasterServices.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":6,"i20":6,"i21":6,"i22":6,"i23":6,"i24":6,"i25":6,"i26":6,"i27":6,"i28":6,"i29":6,"i30":6,"i31":6,"i32":6,"i33":6,"i34":6,"i35":6,"i36":6,"i37":6,"i38":6,"i39":6,"i40":6,"i41":6,"i42":6,"i43":6,"i44":6,"i45":6,"i46":6,"i47":6,"i48":6,"i49":6,"i50":6,"i51":6,"i52":6,"i53":6,"i54":6,"i55":6,"i56":6,"i57":6,"i58":6};
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":6,"i20":6,"i21":6,"i22":6,"i23":6,"i24":6,"i25":6,"i26":6,"i27":6,"i28":6,"i29":6,"i30":6,"i31":6,"i32":6,"i33":6,"i34":6,"i35":6,"i36":6,"i37":6,"i38":6,"i39":6,"i40":6,"i41":6,"i42":6,"i43":6,"i44":6,"i45":6,"i46":6,"i47":6,"i48":6,"i49":6,"i50":6,"i51":6,"i52":6,"i53":6,"i54":6,"i55":6,"i56":6,"i57":6,"i58":6,"i59":6};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -417,23 +417,29 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
 </tr>
 <tr id="i53" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html#recoverMeta--">recoverMeta</a></span>()</code>
+<div class="block">Recover meta table.</div>
+</td>
+</tr>
+<tr id="i54" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html#registerService-com.google.protobuf.Service-">registerService</a></span>(com.google.protobuf.Service&nbsp;instance)</code>
 <div class="block">Registers a new protocol buffer <code>Service</code> subclass as a master coprocessor endpoint.</div>
 </td>
 </tr>
-<tr id="i54" class="altColor">
+<tr id="i55" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html#removeDrainFromRegionServer-org.apache.hadoop.hbase.ServerName-">removeDrainFromRegionServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server)</code>
 <div class="block">Remove drain from a region server to allow additional regions assignments.</div>
 </td>
 </tr>
-<tr id="i55" class="rowColor">
+<tr id="i56" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html#removeReplicationPeer-java.lang.String-">removeReplicationPeer</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</code>
 <div class="block">Removes a peer and stops the replication</div>
 </td>
 </tr>
-<tr id="i56" class="altColor">
+<tr id="i57" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html#splitRegion-org.apache.hadoop.hbase.HRegionInfo-byte:A-long-long-">splitRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;regionInfo,
            byte[]&nbsp;splitRow,
@@ -442,7 +448,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
 <div class="block">Split a region.</div>
 </td>
 </tr>
-<tr id="i57" class="rowColor">
+<tr id="i58" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
              boolean&nbsp;preserveSplits,
@@ -451,7 +457,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
 <div class="block">Truncate a table</div>
 </td>
 </tr>
-<tr id="i58" class="altColor">
+<tr id="i59" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updateReplicationPeerConfig</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                            <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)</code>
@@ -1468,12 +1474,29 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
 <a name="checkIfShouldMoveSystemRegionAsync--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>checkIfShouldMoveSystemRegionAsync</h4>
 <pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.502">checkIfShouldMoveSystemRegionAsync</a>()</pre>
 </li>
 </ul>
+<a name="recoverMeta--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>recoverMeta</h4>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.509">recoverMeta</a>()
+             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<div class="block">Recover meta table. Will result in no-op is meta is already initialized. Any code that has
+ access to master and requires to access meta during process initialization can call this
+ method to make sure meta is initialized.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/MasterWalManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/MasterWalManager.html b/devapidocs/org/apache/hadoop/hbase/master/MasterWalManager.html
index e946aa2..9834578 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/MasterWalManager.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/MasterWalManager.html
@@ -229,7 +229,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 </td>
 </tr>
 <tr id="i1" class="rowColor">
-<td class="colFirst"><code>(package private) <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getFailedServersFromLogFolders--">getFailedServersFromLogFolders</a></span>()</code>
 <div class="block">Inspect the log directory to find dead servers which need recovery work</div>
 </td>
@@ -544,7 +544,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getFailedServersFromLogFolders</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.154">getFailedServersFromLogFolders</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.154">getFailedServersFromLogFolders</a>()</pre>
 <div class="block">Inspect the log directory to find dead servers which need recovery work</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>


[22/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
index 596b800..681f621 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
@@ -1456,364 +1456,366 @@
 <span class="sourceLineNo">1448</span>    synchronized (regionNode) {<a name="line.1448"></a>
 <span class="sourceLineNo">1449</span>      State state = regionNode.transitionState(State.OPEN, RegionStates.STATES_EXPECTED_ON_OPEN);<a name="line.1449"></a>
 <span class="sourceLineNo">1450</span>      if (isMetaRegion(hri)) {<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>        setMetaInitialized(hri, true);<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>      }<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>      regionStates.addRegionToServer(regionNode.getRegionLocation(), regionNode);<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>      // TODO: OPENING Updates hbase:meta too... we need to do both here and there?<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>      // That is a lot of hbase:meta writing.<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>        regionNode.getRegionLocation(), regionNode.getLastHost(), regionNode.getOpenSeqNum(),<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>        regionNode.getProcedure().getProcId());<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>      sendRegionOpenedNotification(hri, regionNode.getRegionLocation());<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>    }<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span>  }<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span><a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>  public void markRegionAsClosing(final RegionStateNode regionNode) throws IOException {<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>    final HRegionInfo hri = regionNode.getRegionInfo();<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>    synchronized (regionNode) {<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>      State state = regionNode.transitionState(State.CLOSING, RegionStates.STATES_EXPECTED_ON_CLOSE);<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>      // Set meta has not initialized early. so people trying to create/edit tables will wait<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>      if (isMetaRegion(hri)) {<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>        setMetaInitialized(hri, false);<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>      }<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>      regionStates.addRegionToServer(regionNode.getRegionLocation(), regionNode);<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>        regionNode.getRegionLocation(), regionNode.getLastHost(), HConstants.NO_SEQNUM,<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>        regionNode.getProcedure().getProcId());<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>    }<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span><a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>    // update the operation count metrics<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>    metrics.incrementOperationCounter();<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>  }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>  public void undoRegionAsClosing(final RegionStateNode regionNode) {<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>    // TODO: Metrics. Do opposite of metrics.incrementOperationCounter();<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>    // There is nothing to undo?<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>  }<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span><a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>  public void markRegionAsClosed(final RegionStateNode regionNode) throws IOException {<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>    final HRegionInfo hri = regionNode.getRegionInfo();<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>    synchronized (regionNode) {<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>      State state = regionNode.transitionState(State.CLOSED, RegionStates.STATES_EXPECTED_ON_CLOSE);<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>      regionStates.removeRegionFromServer(regionNode.getRegionLocation(), regionNode);<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>      regionNode.setLastHost(regionNode.getRegionLocation());<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>      regionNode.setRegionLocation(null);<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>        regionNode.getRegionLocation()/*null*/, regionNode.getLastHost(),<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>        HConstants.NO_SEQNUM, regionNode.getProcedure().getProcId());<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span>      sendRegionClosedNotification(hri);<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>    }<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>  }<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span><a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>  public void markRegionAsSplit(final HRegionInfo parent, final ServerName serverName,<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>      final HRegionInfo daughterA, final HRegionInfo daughterB)<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>  throws IOException {<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>    // Update hbase:meta. Parent will be marked offline and split up in hbase:meta.<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span>    // The parent stays in regionStates until cleared when removed by CatalogJanitor.<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>    // Update its state in regionStates to it shows as offline and split when read<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>    // later figuring what regions are in a table and what are not: see<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>    // regionStates#getRegionsOfTable<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>    final RegionStateNode node = regionStates.getOrCreateRegionNode(parent);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>    node.setState(State.SPLIT);<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>    regionStateStore.splitRegion(parent, daughterA, daughterB, serverName);<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>    if (shouldAssignFavoredNodes(parent)) {<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>      List&lt;ServerName&gt; onlineServers = this.master.getServerManager().getOnlineServersList();<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span>          generateFavoredNodesForDaughter(onlineServers, parent, daughterA, daughterB);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>    }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>  }<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span><a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>  /**<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>   * When called here, the merge has happened. The two merged regions have been<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>   * unassigned and the above markRegionClosed has been called on each so they have been<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>   * disassociated from a hosting Server. The merged region will be open after this call. The<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>   * merged regions are removed from hbase:meta below&gt; Later they are deleted from the filesystem<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>   * by the catalog janitor running against hbase:meta. It notices when the merged region no<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>   * longer holds references to the old regions.<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span>   */<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>  public void markRegionAsMerged(final HRegionInfo child, final ServerName serverName,<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>      final HRegionInfo mother, final HRegionInfo father) throws IOException {<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>    final RegionStateNode node = regionStates.getOrCreateRegionNode(child);<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>    node.setState(State.MERGED);<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>    regionStates.deleteRegion(mother);<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>    regionStates.deleteRegion(father);<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>    regionStateStore.mergeRegions(child, mother, father, serverName);<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>    if (shouldAssignFavoredNodes(child)) {<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>        generateFavoredNodesForMergedRegion(child, mother, father);<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>    }<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>  }<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span><a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>  /*<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>   * Favored nodes should be applied only when FavoredNodes balancer is configured and the region<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>   * belongs to a non-system table.<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>   */<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>  private boolean shouldAssignFavoredNodes(HRegionInfo region) {<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>    return this.shouldAssignRegionsWithFavoredNodes &amp;&amp;<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>        FavoredNodesManager.isFavoredNodeApplicable(region);<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>  }<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span><a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>  // ============================================================================================<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>  //  Assign Queue (Assign/Balance)<a name="line.1549"></a>
+<span class="sourceLineNo">1451</span>        master.getTableStateManager().setTableState(TableName.META_TABLE_NAME,<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>            TableState.State.ENABLED);<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>        setMetaInitialized(hri, true);<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>      }<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>      regionStates.addRegionToServer(regionNode.getRegionLocation(), regionNode);<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>      // TODO: OPENING Updates hbase:meta too... we need to do both here and there?<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span>      // That is a lot of hbase:meta writing.<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span>        regionNode.getRegionLocation(), regionNode.getLastHost(), regionNode.getOpenSeqNum(),<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>        regionNode.getProcedure().getProcId());<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>      sendRegionOpenedNotification(hri, regionNode.getRegionLocation());<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span>    }<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>  }<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span><a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>  public void markRegionAsClosing(final RegionStateNode regionNode) throws IOException {<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>    final HRegionInfo hri = regionNode.getRegionInfo();<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>    synchronized (regionNode) {<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>      State state = regionNode.transitionState(State.CLOSING, RegionStates.STATES_EXPECTED_ON_CLOSE);<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>      // Set meta has not initialized early. so people trying to create/edit tables will wait<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>      if (isMetaRegion(hri)) {<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>        setMetaInitialized(hri, false);<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>      }<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>      regionStates.addRegionToServer(regionNode.getRegionLocation(), regionNode);<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>        regionNode.getRegionLocation(), regionNode.getLastHost(), HConstants.NO_SEQNUM,<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>        regionNode.getProcedure().getProcId());<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span>    }<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span><a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>    // update the operation count metrics<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>    metrics.incrementOperationCounter();<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span>  }<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span><a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>  public void undoRegionAsClosing(final RegionStateNode regionNode) {<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>    // TODO: Metrics. Do opposite of metrics.incrementOperationCounter();<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span>    // There is nothing to undo?<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>  }<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span><a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>  public void markRegionAsClosed(final RegionStateNode regionNode) throws IOException {<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>    final HRegionInfo hri = regionNode.getRegionInfo();<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>    synchronized (regionNode) {<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>      State state = regionNode.transitionState(State.CLOSED, RegionStates.STATES_EXPECTED_ON_CLOSE);<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>      regionStates.removeRegionFromServer(regionNode.getRegionLocation(), regionNode);<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>      regionNode.setLastHost(regionNode.getRegionLocation());<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>      regionNode.setRegionLocation(null);<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>        regionNode.getRegionLocation()/*null*/, regionNode.getLastHost(),<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span>        HConstants.NO_SEQNUM, regionNode.getProcedure().getProcId());<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span>      sendRegionClosedNotification(hri);<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>    }<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>  }<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span><a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>  public void markRegionAsSplit(final HRegionInfo parent, final ServerName serverName,<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>      final HRegionInfo daughterA, final HRegionInfo daughterB)<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>  throws IOException {<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span>    // Update hbase:meta. Parent will be marked offline and split up in hbase:meta.<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>    // The parent stays in regionStates until cleared when removed by CatalogJanitor.<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>    // Update its state in regionStates to it shows as offline and split when read<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>    // later figuring what regions are in a table and what are not: see<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>    // regionStates#getRegionsOfTable<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>    final RegionStateNode node = regionStates.getOrCreateRegionNode(parent);<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>    node.setState(State.SPLIT);<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>    regionStateStore.splitRegion(parent, daughterA, daughterB, serverName);<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span>    if (shouldAssignFavoredNodes(parent)) {<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>      List&lt;ServerName&gt; onlineServers = this.master.getServerManager().getOnlineServersList();<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>          generateFavoredNodesForDaughter(onlineServers, parent, daughterA, daughterB);<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>    }<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span>  }<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span><a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>  /**<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>   * When called here, the merge has happened. The two merged regions have been<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>   * unassigned and the above markRegionClosed has been called on each so they have been<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>   * disassociated from a hosting Server. The merged region will be open after this call. The<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>   * merged regions are removed from hbase:meta below&gt; Later they are deleted from the filesystem<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span>   * by the catalog janitor running against hbase:meta. It notices when the merged region no<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span>   * longer holds references to the old regions.<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>   */<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>  public void markRegionAsMerged(final HRegionInfo child, final ServerName serverName,<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>      final HRegionInfo mother, final HRegionInfo father) throws IOException {<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>    final RegionStateNode node = regionStates.getOrCreateRegionNode(child);<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>    node.setState(State.MERGED);<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>    regionStates.deleteRegion(mother);<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>    regionStates.deleteRegion(father);<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>    regionStateStore.mergeRegions(child, mother, father, serverName);<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>    if (shouldAssignFavoredNodes(child)) {<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>        generateFavoredNodesForMergedRegion(child, mother, father);<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span>    }<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>  }<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span><a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>  /*<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>   * Favored nodes should be applied only when FavoredNodes balancer is configured and the region<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>   * belongs to a non-system table.<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>   */<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>  private boolean shouldAssignFavoredNodes(HRegionInfo region) {<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>    return this.shouldAssignRegionsWithFavoredNodes &amp;&amp;<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>        FavoredNodesManager.isFavoredNodeApplicable(region);<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>  }<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span><a name="line.1549"></a>
 <span class="sourceLineNo">1550</span>  // ============================================================================================<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>  private final ArrayList&lt;RegionStateNode&gt; pendingAssignQueue = new ArrayList&lt;RegionStateNode&gt;();<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>  private final ReentrantLock assignQueueLock = new ReentrantLock();<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>  private final Condition assignQueueFullCond = assignQueueLock.newCondition();<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span><a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>  /**<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>   * Add the assign operation to the assignment queue.<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>   * The pending assignment operation will be processed,<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>   * and each region will be assigned by a server using the balancer.<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>   */<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>  protected void queueAssign(final RegionStateNode regionNode) {<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span>    getProcedureScheduler().suspendEvent(regionNode.getProcedureEvent());<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span><a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>    // TODO: quick-start for meta and the other sys-tables?<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>    assignQueueLock.lock();<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>    try {<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>      pendingAssignQueue.add(regionNode);<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>      if (regionNode.isSystemTable() ||<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>          pendingAssignQueue.size() == 1 ||<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>          pendingAssignQueue.size() &gt;= assignDispatchWaitQueueMaxSize) {<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>        assignQueueFullCond.signal();<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>      }<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>    } finally {<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>      assignQueueLock.unlock();<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>    }<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>  }<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span><a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>  private void startAssignmentThread() {<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>    assignThread = new Thread("AssignmentThread") {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>      @Override<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>      public void run() {<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>        while (isRunning()) {<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>          processAssignQueue();<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>        }<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>        pendingAssignQueue.clear();<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>      }<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>    };<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>    assignThread.start();<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>  }<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span><a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>  private void stopAssignmentThread() {<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>    assignQueueSignal();<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>    try {<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>      while (assignThread.isAlive()) {<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>        assignQueueSignal();<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>        assignThread.join(250);<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>      }<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>    } catch (InterruptedException e) {<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>      LOG.warn("join interrupted", e);<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>      Thread.currentThread().interrupt();<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>    }<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>  }<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span><a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>  private void assignQueueSignal() {<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>    assignQueueLock.lock();<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>    try {<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>      assignQueueFullCond.signal();<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>    } finally {<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span>      assignQueueLock.unlock();<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>    }<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>  }<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span><a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings("WA_AWAIT_NOT_IN_LOOP")<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>  private HashMap&lt;HRegionInfo, RegionStateNode&gt; waitOnAssignQueue() {<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>    HashMap&lt;HRegionInfo, RegionStateNode&gt; regions = null;<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span><a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>    assignQueueLock.lock();<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>    try {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>      if (pendingAssignQueue.isEmpty() &amp;&amp; isRunning()) {<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        assignQueueFullCond.await();<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>      }<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span><a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>      if (!isRunning()) return null;<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>      assignQueueFullCond.await(assignDispatchWaitMillis, TimeUnit.MILLISECONDS);<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>      regions = new HashMap&lt;HRegionInfo, RegionStateNode&gt;(pendingAssignQueue.size());<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>      for (RegionStateNode regionNode: pendingAssignQueue) {<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>        regions.put(regionNode.getRegionInfo(), regionNode);<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>      }<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>      pendingAssignQueue.clear();<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>    } catch (InterruptedException e) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>      LOG.warn("got interrupted ", e);<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>      Thread.currentThread().interrupt();<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>    } finally {<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>      assignQueueLock.unlock();<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>    }<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>    return regions;<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>  }<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span><a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>  private void processAssignQueue() {<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>    final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions = waitOnAssignQueue();<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>    if (regions == null || regions.size() == 0 || !isRunning()) {<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>      return;<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>    }<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span><a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>    if (LOG.isTraceEnabled()) {<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>      LOG.trace("PROCESS ASSIGN QUEUE regionCount=" + regions.size());<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span>    }<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span><a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>    // TODO: Optimize balancer. pass a RegionPlan?<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span>    final HashMap&lt;HRegionInfo, ServerName&gt; retainMap = new HashMap&lt;HRegionInfo, ServerName&gt;();<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span>    final List&lt;HRegionInfo&gt; rrList = new ArrayList&lt;HRegionInfo&gt;();<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span>    for (RegionStateNode regionNode: regions.values()) {<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>      if (regionNode.getRegionLocation() != null) {<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>        retainMap.put(regionNode.getRegionInfo(), regionNode.getRegionLocation());<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>      } else {<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>        rrList.add(regionNode.getRegionInfo());<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span>      }<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>    }<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span><a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>    // TODO: connect with the listener to invalidate the cache<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>    final LoadBalancer balancer = getBalancer();<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span><a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>    // TODO use events<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>    List&lt;ServerName&gt; servers = master.getServerManager().createDestinationServersList();<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>    for (int i = 0; servers.size() &lt; 1; ++i) {<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>      if (i % 4 == 0) {<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>        LOG.warn("no server available, unable to find a location for " + regions.size() +<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span>            " unassigned regions. waiting");<a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>      }<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span><a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>      // the was AM killed<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>      if (!isRunning()) {<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>        LOG.debug("aborting assignment-queue with " + regions.size() + " not assigned");<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>        return;<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>      }<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span><a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>      Threads.sleep(250);<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>      servers = master.getServerManager().createDestinationServersList();<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>    }<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span><a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>    final boolean isTraceEnabled = LOG.isTraceEnabled();<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span>    if (isTraceEnabled) {<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>      LOG.trace("available servers count=" + servers.size() + ": " + servers);<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>    }<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span><a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>    // ask the balancer where to place regions<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>    if (!retainMap.isEmpty()) {<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>      if (isTraceEnabled) {<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>        LOG.trace("retain assign regions=" + retainMap);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>      }<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>      try {<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span>        acceptPlan(regions, balancer.retainAssignment(retainMap, servers));<a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>      } catch (HBaseIOException e) {<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>        LOG.warn("unable to retain assignment", e);<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>        addToPendingAssignment(regions, retainMap.keySet());<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span>      }<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>    }<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span><a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>    // TODO: Do we need to split retain and round-robin?<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span>    // the retain seems to fallback to round-robin/random if the region is not in the map.<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span>    if (!rrList.isEmpty()) {<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>      Collections.sort(rrList);<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>      if (isTraceEnabled) {<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>        LOG.trace("round robin regions=" + rrList);<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>      }<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>      try {<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span>        acceptPlan(regions, balancer.roundRobinAssignment(rrList, servers));<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>      } catch (HBaseIOException e) {<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span>        LOG.warn("unable to round-robin assignment", e);<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>        addToPendingAssignment(regions, rrList);<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>      }<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>    }<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>  }<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span><a name="line.1713"></a>
-<span class="sourceLineNo">1714</span>  private void acceptPlan(final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions,<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      final Map&lt;ServerName, List&lt;HRegionInfo&gt;&gt; plan) throws HBaseIOException {<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>    final ProcedureEvent[] events = new ProcedureEvent[regions.size()];<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>    final long st = System.currentTimeMillis();<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span><a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>    if (plan == null) {<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span>      throw new HBaseIOException("unable to compute plans for regions=" + regions.size());<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>    }<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span><a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    if (plan.isEmpty()) return;<a name="line.1723"></a>
+<span class="sourceLineNo">1551</span>  //  Assign Queue (Assign/Balance)<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>  // ============================================================================================<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>  private final ArrayList&lt;RegionStateNode&gt; pendingAssignQueue = new ArrayList&lt;RegionStateNode&gt;();<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>  private final ReentrantLock assignQueueLock = new ReentrantLock();<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span>  private final Condition assignQueueFullCond = assignQueueLock.newCondition();<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span><a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>  /**<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>   * Add the assign operation to the assignment queue.<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>   * The pending assignment operation will be processed,<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>   * and each region will be assigned by a server using the balancer.<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>   */<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>  protected void queueAssign(final RegionStateNode regionNode) {<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>    getProcedureScheduler().suspendEvent(regionNode.getProcedureEvent());<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span><a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>    // TODO: quick-start for meta and the other sys-tables?<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>    assignQueueLock.lock();<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>    try {<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>      pendingAssignQueue.add(regionNode);<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>      if (regionNode.isSystemTable() ||<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>          pendingAssignQueue.size() == 1 ||<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>          pendingAssignQueue.size() &gt;= assignDispatchWaitQueueMaxSize) {<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>        assignQueueFullCond.signal();<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>      }<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>    } finally {<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>      assignQueueLock.unlock();<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    }<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>  }<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span><a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>  private void startAssignmentThread() {<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>    assignThread = new Thread("AssignmentThread") {<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>      @Override<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>      public void run() {<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>        while (isRunning()) {<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>          processAssignQueue();<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>        }<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>        pendingAssignQueue.clear();<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>      }<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>    };<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>    assignThread.start();<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span>  }<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span><a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>  private void stopAssignmentThread() {<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>    assignQueueSignal();<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>    try {<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>      while (assignThread.isAlive()) {<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>        assignQueueSignal();<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>        assignThread.join(250);<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>      }<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span>    } catch (InterruptedException e) {<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>      LOG.warn("join interrupted", e);<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>      Thread.currentThread().interrupt();<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>    }<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>  }<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span><a name="line.1604"></a>
+<span class="sourceLineNo">1605</span>  private void assignQueueSignal() {<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span>    assignQueueLock.lock();<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>    try {<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>      assignQueueFullCond.signal();<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>    } finally {<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>      assignQueueLock.unlock();<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>    }<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>  }<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span><a name="line.1613"></a>
+<span class="sourceLineNo">1614</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings("WA_AWAIT_NOT_IN_LOOP")<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span>  private HashMap&lt;HRegionInfo, RegionStateNode&gt; waitOnAssignQueue() {<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span>    HashMap&lt;HRegionInfo, RegionStateNode&gt; regions = null;<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span><a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>    assignQueueLock.lock();<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>    try {<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>      if (pendingAssignQueue.isEmpty() &amp;&amp; isRunning()) {<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>        assignQueueFullCond.await();<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>      }<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span><a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>      if (!isRunning()) return null;<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>      assignQueueFullCond.await(assignDispatchWaitMillis, TimeUnit.MILLISECONDS);<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span>      regions = new HashMap&lt;HRegionInfo, RegionStateNode&gt;(pendingAssignQueue.size());<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>      for (RegionStateNode regionNode: pendingAssignQueue) {<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span>        regions.put(regionNode.getRegionInfo(), regionNode);<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span>      }<a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>      pendingAssignQueue.clear();<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>    } catch (InterruptedException e) {<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span>      LOG.warn("got interrupted ", e);<a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>      Thread.currentThread().interrupt();<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>    } finally {<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>      assignQueueLock.unlock();<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span>    }<a name="line.1636"></a>
+<span class="sourceLineNo">1637</span>    return regions;<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span>  }<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span><a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>  private void processAssignQueue() {<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span>    final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions = waitOnAssignQueue();<a name="line.1641"></a>
+<span class="sourceLineNo">1642</span>    if (regions == null || regions.size() == 0 || !isRunning()) {<a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>      return;<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>    }<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span><a name="line.1645"></a>
+<span class="sourceLineNo">1646</span>    if (LOG.isTraceEnabled()) {<a name="line.1646"></a>
+<span class="sourceLineNo">1647</span>      LOG.trace("PROCESS ASSIGN QUEUE regionCount=" + regions.size());<a name="line.1647"></a>
+<span class="sourceLineNo">1648</span>    }<a name="line.1648"></a>
+<span class="sourceLineNo">1649</span><a name="line.1649"></a>
+<span class="sourceLineNo">1650</span>    // TODO: Optimize balancer. pass a RegionPlan?<a name="line.1650"></a>
+<span class="sourceLineNo">1651</span>    final HashMap&lt;HRegionInfo, ServerName&gt; retainMap = new HashMap&lt;HRegionInfo, ServerName&gt;();<a name="line.1651"></a>
+<span class="sourceLineNo">1652</span>    final List&lt;HRegionInfo&gt; rrList = new ArrayList&lt;HRegionInfo&gt;();<a name="line.1652"></a>
+<span class="sourceLineNo">1653</span>    for (RegionStateNode regionNode: regions.values()) {<a name="line.1653"></a>
+<span class="sourceLineNo">1654</span>      if (regionNode.getRegionLocation() != null) {<a name="line.1654"></a>
+<span class="sourceLineNo">1655</span>        retainMap.put(regionNode.getRegionInfo(), regionNode.getRegionLocation());<a name="line.1655"></a>
+<span class="sourceLineNo">1656</span>      } else {<a name="line.1656"></a>
+<span class="sourceLineNo">1657</span>        rrList.add(regionNode.getRegionInfo());<a name="line.1657"></a>
+<span class="sourceLineNo">1658</span>      }<a name="line.1658"></a>
+<span class="sourceLineNo">1659</span>    }<a name="line.1659"></a>
+<span class="sourceLineNo">1660</span><a name="line.1660"></a>
+<span class="sourceLineNo">1661</span>    // TODO: connect with the listener to invalidate the cache<a name="line.1661"></a>
+<span class="sourceLineNo">1662</span>    final LoadBalancer balancer = getBalancer();<a name="line.1662"></a>
+<span class="sourceLineNo">1663</span><a name="line.1663"></a>
+<span class="sourceLineNo">1664</span>    // TODO use events<a name="line.1664"></a>
+<span class="sourceLineNo">1665</span>    List&lt;ServerName&gt; servers = master.getServerManager().createDestinationServersList();<a name="line.1665"></a>
+<span class="sourceLineNo">1666</span>    for (int i = 0; servers.size() &lt; 1; ++i) {<a name="line.1666"></a>
+<span class="sourceLineNo">1667</span>      if (i % 4 == 0) {<a name="line.1667"></a>
+<span class="sourceLineNo">1668</span>        LOG.warn("no server available, unable to find a location for " + regions.size() +<a name="line.1668"></a>
+<span class="sourceLineNo">1669</span>            " unassigned regions. waiting");<a name="line.1669"></a>
+<span class="sourceLineNo">1670</span>      }<a name="line.1670"></a>
+<span class="sourceLineNo">1671</span><a name="line.1671"></a>
+<span class="sourceLineNo">1672</span>      // the was AM killed<a name="line.1672"></a>
+<span class="sourceLineNo">1673</span>      if (!isRunning()) {<a name="line.1673"></a>
+<span class="sourceLineNo">1674</span>        LOG.debug("aborting assignment-queue with " + regions.size() + " not assigned");<a name="line.1674"></a>
+<span class="sourceLineNo">1675</span>        return;<a name="line.1675"></a>
+<span class="sourceLineNo">1676</span>      }<a name="line.1676"></a>
+<span class="sourceLineNo">1677</span><a name="line.1677"></a>
+<span class="sourceLineNo">1678</span>      Threads.sleep(250);<a name="line.1678"></a>
+<span class="sourceLineNo">1679</span>      servers = master.getServerManager().createDestinationServersList();<a name="line.1679"></a>
+<span class="sourceLineNo">1680</span>    }<a name="line.1680"></a>
+<span class="sourceLineNo">1681</span><a name="line.1681"></a>
+<span class="sourceLineNo">1682</span>    final boolean isTraceEnabled = LOG.isTraceEnabled();<a name="line.1682"></a>
+<span class="sourceLineNo">1683</span>    if (isTraceEnabled) {<a name="line.1683"></a>
+<span class="sourceLineNo">1684</span>      LOG.trace("available servers count=" + servers.size() + ": " + servers);<a name="line.1684"></a>
+<span class="sourceLineNo">1685</span>    }<a name="line.1685"></a>
+<span class="sourceLineNo">1686</span><a name="line.1686"></a>
+<span class="sourceLineNo">1687</span>    // ask the balancer where to place regions<a name="line.1687"></a>
+<span class="sourceLineNo">1688</span>    if (!retainMap.isEmpty()) {<a name="line.1688"></a>
+<span class="sourceLineNo">1689</span>      if (isTraceEnabled) {<a name="line.1689"></a>
+<span class="sourceLineNo">1690</span>        LOG.trace("retain assign regions=" + retainMap);<a name="line.1690"></a>
+<span class="sourceLineNo">1691</span>      }<a name="line.1691"></a>
+<span class="sourceLineNo">1692</span>      try {<a name="line.1692"></a>
+<span class="sourceLineNo">1693</span>        acceptPlan(regions, balancer.retainAssignment(retainMap, servers));<a name="line.1693"></a>
+<span class="sourceLineNo">1694</span>      } catch (HBaseIOException e) {<a name="line.1694"></a>
+<span class="sourceLineNo">1695</span>        LOG.warn("unable to retain assignment", e);<a name="line.1695"></a>
+<span class="sourceLineNo">1696</span>        addToPendingAssignment(regions, retainMap.keySet());<a name="line.1696"></a>
+<span class="sourceLineNo">1697</span>      }<a name="line.1697"></a>
+<span class="sourceLineNo">1698</span>    }<a name="line.1698"></a>
+<span class="sourceLineNo">1699</span><a name="line.1699"></a>
+<span class="sourceLineNo">1700</span>    // TODO: Do we need to split retain and round-robin?<a name="line.1700"></a>
+<span class="sourceLineNo">1701</span>    // the retain seems to fallback to round-robin/random if the region is not in the map.<a name="line.1701"></a>
+<span class="sourceLineNo">1702</span>    if (!rrList.isEmpty()) {<a name="line.1702"></a>
+<span class="sourceLineNo">1703</span>      Collections.sort(rrList);<a name="line.1703"></a>
+<span class="sourceLineNo">1704</span>      if (isTraceEnabled) {<a name="line.1704"></a>
+<span class="sourceLineNo">1705</span>        LOG.trace("round robin regions=" + rrList);<a name="line.1705"></a>
+<span class="sourceLineNo">1706</span>      }<a name="line.1706"></a>
+<span class="sourceLineNo">1707</span>      try {<a name="line.1707"></a>
+<span class="sourceLineNo">1708</span>        acceptPlan(regions, balancer.roundRobinAssignment(rrList, servers));<a name="line.1708"></a>
+<span class="sourceLineNo">1709</span>      } catch (HBaseIOException e) {<a name="line.1709"></a>
+<span class="sourceLineNo">1710</span>        LOG.warn("unable to round-robin assignment", e);<a name="line.1710"></a>
+<span class="sourceLineNo">1711</span>        addToPendingAssignment(regions, rrList);<a name="line.1711"></a>
+<span class="sourceLineNo">1712</span>      }<a name="line.1712"></a>
+<span class="sourceLineNo">1713</span>    }<a name="line.1713"></a>
+<span class="sourceLineNo">1714</span>  }<a name="line.1714"></a>
+<span class="sourceLineNo">1715</span><a name="line.1715"></a>
+<span class="sourceLineNo">1716</span>  private void acceptPlan(final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions,<a name="line.1716"></a>
+<span class="sourceLineNo">1717</span>      final Map&lt;ServerName, List&lt;HRegionInfo&gt;&gt; plan) throws HBaseIOException {<a name="line.1717"></a>
+<span class="sourceLineNo">1718</span>    final ProcedureEvent[] events = new ProcedureEvent[regions.size()];<a name="line.1718"></a>
+<span class="sourceLineNo">1719</span>    final long st = System.currentTimeMillis();<a name="line.1719"></a>
+<span class="sourceLineNo">1720</span><a name="line.1720"></a>
+<span class="sourceLineNo">1721</span>    if (plan == null) {<a name="line.1721"></a>
+<span class="sourceLineNo">1722</span>      throw new HBaseIOException("unable to compute plans for regions=" + regions.size());<a name="line.1722"></a>
+<span class="sourceLineNo">1723</span>    }<a name="line.1723"></a>
 <span class="sourceLineNo">1724</span><a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>    int evcount = 0;<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span>    for (Map.Entry&lt;ServerName, List&lt;HRegionInfo&gt;&gt; entry: plan.entrySet()) {<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>      final ServerName server = entry.getKey();<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span>      for (HRegionInfo hri: entry.getValue()) {<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>        final RegionStateNode regionNode = regions.get(hri);<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>        regionNode.setRegionLocation(server);<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>        events[evcount++] = regionNode.getProcedureEvent();<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>      }<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span>    }<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>    getProcedureScheduler().wakeEvents(evcount, events);<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span><a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>    final long et = System.currentTimeMillis();<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    if (LOG.isTraceEnabled()) {<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span>      LOG.trace("ASSIGN ACCEPT " + events.length + " -&gt; " +<a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>          StringUtils.humanTimeDiff(et - st));<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>    }<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>  }<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span><a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>  private void addToPendingAssignment(final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions,<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>      final Collection&lt;HRegionInfo&gt; pendingRegions) {<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>    assignQueueLock.lock();<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>    try {<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>      for (HRegionInfo hri: pendingRegions) {<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>        pendingAssignQueue.add(regions.get(hri));<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span>      }<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>    } finally {<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span>      assignQueueLock.unlock();<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>    }<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>  }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>  /**<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>   * Get a list of servers that this region can not assign to.<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>   * For system table, we must assign them to a server with highest version.<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>   */<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>  public List&lt;ServerName&gt; getExcludedServersForSystemTable() {<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span>    List&lt;Pair&lt;ServerName, String&gt;&gt; serverList = master.getServerManager().getOnlineServersList()<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>        .stream()<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>        .map((s)-&gt;new Pair&lt;&gt;(s, master.getRegionServerVersion(s)))<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>        .collect(Collectors.toList());<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>    if (serverList.isEmpty()) {<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span>      return new ArrayList&lt;&gt;();<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>    }<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>    String highestVersion = Collections.max(serverList,<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>        (o1, o2) -&gt; VersionInfo.compareVersion(o1.getSecond(), o2.getSecond())).getSecond();<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>    return serverList.stream()<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span>        .filter((p)-&gt;!p.getSecond().equals(highestVersion))<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>        .map(Pair::getFirst)<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>        .collect(Collectors.toList());<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>  }<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span><a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>  // ============================================================================================<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span>  //  Server Helpers<a name="line.1776"></a>
+<span class="sourceLineNo">1725</span>    if (plan.isEmpty()) return;<a name="line.1725"></a>
+<span class="sourceLineNo">1726</span><a name="line.1726"></a>
+<span class="sourceLineNo">1727</span>    int evcount = 0;<a name="line.1727"></a>
+<span class="sourceLineNo">1728</span>    for (Map.Entry&lt;ServerName, List&lt;HRegionInfo&gt;&gt; entry: plan.entrySet()) {<a name="line.1728"></a>
+<span class="sourceLineNo">1729</span>      final ServerName server = entry.getKey();<a name="line.1729"></a>
+<span class="sourceLineNo">1730</span>      for (HRegionInfo hri: entry.getValue()) {<a name="line.1730"></a>
+<span class="sourceLineNo">1731</span>        final RegionStateNode regionNode = regions.get(hri);<a name="line.1731"></a>
+<span class="sourceLineNo">1732</span>        regionNode.setRegionLocation(server);<a name="line.1732"></a>
+<span class="sourceLineNo">1733</span>        events[evcount++] = regionNode.getProcedureEvent();<a name="line.1733"></a>
+<span class="sourceLineNo">1734</span>      }<a name="line.1734"></a>
+<span class="sourceLineNo">1735</span>    }<a name="line.1735"></a>
+<span class="sourceLineNo">1736</span>    getProcedureScheduler().wakeEvents(evcount, events);<a name="line.1736"></a>
+<span class="sourceLineNo">1737</span><a name="line.1737"></a>
+<span class="sourceLineNo">1738</span>    final long et = System.currentTimeMillis();<a name="line.1738"></a>
+<span class="sourceLineNo">1739</span>    if (LOG.isTraceEnabled()) {<a name="line.1739"></a>
+<span class="sourceLineNo">1740</span>      LOG.trace("ASSIGN ACCEPT " + events.length + " -&gt; " +<a name="line.1740"></a>
+<span class="sourceLineNo">1741</span>          StringUtils.humanTimeDiff(et - st));<a name="line.1741"></a>
+<span class="sourceLineNo">1742</span>    }<a name="line.1742"></a>
+<span class="sourceLineNo">1743</span>  }<a name="line.1743"></a>
+<span class="sourceLineNo">1744</span><a name="line.1744"></a>
+<span class="sourceLineNo">1745</span>  private void addToPendingAssignment(final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions,<a name="line.1745"></a>
+<span class="sourceLineNo">1746</span>      final Collection&lt;HRegionInfo&gt; pendingRegions) {<a name="line.1746"></a>
+<span class="sourceLineNo">1747</span>    assignQueueLock.lock();<a name="line.1747"></a>
+<span class="sourceLineNo">1748</span>    try {<a name="line.1748"></a>
+<span class="sourceLineNo">1749</span>      for (HRegionInfo hri: pendingRegions) {<a name="line.1749"></a>
+<span class="sourceLineNo">1750</span>        pendingAssignQueue.add(regions.get(hri));<a name="line.1750"></a>
+<span class="sourceLineNo">1751</span>      }<a name="line.1751"></a>
+<span class="sourceLineNo">1752</span>    } finally {<a name="line.1752"></a>
+<span class="sourceLineNo">1753</span>      assignQueueLock.unlock();<a name="line.1753"></a>
+<span class="sourceLineNo">1754</span>    }<a name="line.1754"></a>
+<span class="sourceLineNo">1755</span>  }<a name="line.1755"></a>
+<span class="sourceLineNo">1756</span><a name="line.1756"></a>
+<span class="sourceLineNo">1757</span>  /**<a name="line.1757"></a>
+<span class="sourceLineNo">1758</span>   * Get a list of servers that this region can not assign to.<a name="line.1758"></a>
+<span class="sourceLineNo">1759</span>   * For system table, we must assign them to a server with highest version.<a name="line.1759"></a>
+<span class="sourceLineNo">1760</span>   */<a name="line.1760"></a>
+<span class="sourceLineNo">1761</span>  public List&lt;ServerName&gt; getExcludedServersForSystemTable() {<a name="line.1761"></a>
+<span class="sourceLineNo">1762</span>    List&lt;Pair&lt;ServerName, String&gt;&gt; serverList = master.getServerManager().getOnlineServersList()<a name="line.1762"></a>
+<span class="sourceLineNo">1763</span>        .stream()<a name="line.1763"></a>
+<span class="sourceLineNo">1764</span>        .map((s)-&gt;new Pair&lt;&gt;(s, master.getRegionServerVersion(s)))<a name="line.1764"></a>
+<span class="sourceLineNo">1765</span>        .collect(Collectors.toList());<a name="line.1765"></a>
+<span class="sourceLineNo">1766</span>    if (serverList.isEmpty()) {<a name="line.1766"></a>
+<span class="sourceLineNo">1767</span>      return new ArrayList&lt;&gt;();<a name="line.1767"></a>
+<span class="sourceLineNo">1768</span>    }<a name="line.1768"></a>
+<span class="sourceLineNo">1769</span>    String highestVersion = Collections.max(serverList,<a name="line.1769"></a>
+<span class="sourceLineNo">1770</span>        (o1, o2) -&gt; VersionInfo.compareVersion(o1.getSecond(), o2.getSecond())).getSecond();<a name="line.1770"></a>
+<span class="sourceLineNo">1771</span>    return serverList.stream()<a name="line.1771"></a>
+<span class="sourceLineNo">1772</span>        .filter((p)-&gt;!p.getSecond().equals(highestVersion))<a name="line.1772"></a>
+<span class="sourceLineNo">1773</span>        .map(Pair::getFirst)<a name="line.1773"></a>
+<span class="sourceLineNo">1774</span>        .collect(Collectors.toList());<a name="line.1774"></a>
+<span class="sourceLineNo">1775</span>  }<a name="line.1775"></a>
+<span class="sourceLineNo">1776</span><a name="line.1776"></a>
 <span class="sourceLineNo">1777</span>  // ============================================================================================<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>  @Override<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>  public void serverAdded(final ServerName serverName) {<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span>  }<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span><a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>  @Override<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>  public void serverRemoved(final ServerName serverName) {<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span>    final ServerStateNode serverNode = regionStates.getServerNode(serverName);<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>    if (serverNode == null) return;<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span><a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>    // just in case, wake procedures waiting for this server report<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>    wakeServerReportEvent(serverNode);<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span>  }<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span><a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>  public int getServerVersion(final ServerName serverName) {<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span>    final ServerStateNode node = regionStates.getServerNode(serverName);<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>    return node != null ? node.getVersionNumber() : 0;<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>  }<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span><a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>  public void killRegionServer(final ServerName serverName) {<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>    final ServerStateNode serverNode = regionStates.getServerNode(serverName);<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>    killRegionServer(serverNode);<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>  }<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span><a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>  public void killRegionServer(final ServerStateNode serverNode) {<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span>    /** Don't do this. Messes up accounting. Let ServerCrashProcedure do this.<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span>    for (RegionStateNode regionNode: serverNode.getRegions()) {<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>      regionNode.offline();<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>    }*/<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>    master.getServerManager().expireServer(serverNode.getServerName());<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>  }<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span>}<a name="line.1808"></a>
+<span class="sourceLineNo">1778</span>  //  Server Helpers<a name="line.1778"></a>
+<span class="sourceLineNo">1779</span>  // ============================================================================================<a name="line.1779"></a>
+<span class="sourceLineNo">1780</span>  @Override<a name="line.1780"></a>
+<span class="sourceLineNo">1781</span>  public void serverAdded(final ServerName serverName) {<a name="line.1781"></a>
+<span class="sourceLineNo">1782</span>  }<a name="line.1782"></a>
+<span class="sourceLineNo">1783</span><a name="line.1783"></a>
+<span class="sourceLineNo">1784</span>  @Override<a name="line.1784"></a>
+<span class="sourceLineNo">1785</span>  public void serverRemoved(final ServerName serverName) {<a name="line.1785"></a>
+<span class="sourceLineNo">1786</span>    final ServerStateNode serverNode = regionStates.getServerNode(serverName);<a name="line.1786"></a>
+<span class="sourceLineNo">1787</span>    if (serverNode == null) return;<a name="line.1787"></a>
+<span class="sourceLineNo">1788</span><a name="line.1788"></a>
+<span class="sourceLineNo">1789</span>    // just in case, wake procedures waiting for this server report<a name="line.1789"></a>
+<span class="sourceLineNo">1790</span>    wakeServerReportEvent(serverNode);<a name="line.1790"></a>
+<span class="sourceLineNo">1791</span>  }<a name="line.1791"></a>
+<span class="sourceLineNo">1792</span><a name="line.1792"></a>
+<span class="sourceLineNo">1793</span>  public int getServerVersion(final ServerName serverName) {<a name="line.1793"></a>
+<span class="sourceLineNo">1794</span>    final ServerStateNode node = regionStates.getServerNode(serverName);<a name="line.1794"></a>
+<span class="sourceLineNo">1795</span>    return node != null ? node.getVersionNumber() : 0;<a name="line.1795"></a>
+<span class="sourceLineNo">1796</span>  }<a name="line.1796"></a>
+<span class="sourceLineNo">1797</span><a name="line.1797"></a>
+<span class="sourceLineNo">1798</span>  public void killRegionServer(final ServerName serverName) {<a name="line.1798"></a>
+<span class="sourceLineNo">1799</span>    final ServerStateNode serverNode = regionStates.getServerNode(serverName);<a name="line.1799"></a>
+<span class="sourceLineNo">1800</span>    killRegionServer(serverNode);<a name="line.1800"></a>
+<span class="sourceLineNo">1801</span>  }<a name="line.1801"></a>
+<span class="sourceLineNo">1802</span><a name="line.1802"></a>
+<span class="sourceLineNo">1803</span>  public void killRegionServer(final ServerStateNode serverNode) {<a name="line.1803"></a>
+<span class="sourceLineNo">1804</span>    /** Don't do this. Messes up accounting. Let ServerCrashProcedure do this.<a name="line.1804"></a>
+<span class="sourceLineNo">1805</span>    for (RegionStateNode regionNode: serverNode.getRegions()) {<a name="line.1805"></a>
+<span class="sourceLineNo">1806</span>      regionNode.offline();<a name="line.1806"></a>
+<span class="sourceLineNo">1807</span>    }*/<a name="line.1807"></a>
+<span class="sourceLineNo">1808</span>    master.getServerManager().expireServer(serverNode.getServerName());<a name="line.1808"></a>
+<span class="sourceLineNo">1809</span>  }<a name="line.1809"></a>
+<span class="sourceLineNo">1810</span>}<a name="line.1810"></a>
 
 
 


[17/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueueKeyComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueueKeyComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueueKeyComparator.html
index 38cee64..d900251 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueueKeyComparator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueueKeyComparator.html
@@ -220,1065 +220,1075 @@
 <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>    final Procedure pollResult = rq.peek();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      removeFromRunQueue(fairq, rq);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      return null;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>    rq.poll();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    if (rq.isEmpty() || xlockReq) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      removeFromRunQueue(fairq, rq);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      // if the rq is in the fairq because of runnable child<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      // check if the next procedure is still a child.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      Procedure nextProc = rq.peek();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        removeFromRunQueue(fairq, rq);<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>    return pollResult;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">215</span>    if (pollResult == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      return null;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      removeFromRunQueue(fairq, rq);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      return null;<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>    rq.poll();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    if (rq.isEmpty() || xlockReq) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      removeFromRunQueue(fairq, rq);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      // if the rq is in the fairq because of runnable child<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      // check if the next procedure is still a child.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      Procedure nextProc = rq.peek();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        removeFromRunQueue(fairq, rq);<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      String resourceName, LockAndQueue queue) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    LockInfo info = new LockInfo();<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    info.setResourceType(resourceType);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    info.setResourceName(resourceName);<a name="line.243"></a>
+<span class="sourceLineNo">238</span>    return pollResult;<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      String resourceName, LockAndQueue queue) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    LockInfo info = new LockInfo();<a name="line.243"></a>
 <span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    if (queue.hasExclusiveLock()) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.246"></a>
+<span class="sourceLineNo">245</span>    info.setResourceType(resourceType);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    info.setResourceName(resourceName);<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      info.setSharedLockCount(queue.getSharedLockCount());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        continue;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.263"></a>
+<span class="sourceLineNo">248</span>    if (queue.hasExclusiveLock()) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      info.setSharedLockCount(queue.getSharedLockCount());<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>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        continue;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
 <span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>      switch (lockProcedure.getType()) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      case EXCLUSIVE:<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        break;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      case SHARED:<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.270"></a>
+<span class="sourceLineNo">265</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>      switch (lockProcedure.getType()) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      case EXCLUSIVE:<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.270"></a>
 <span class="sourceLineNo">271</span>        break;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.275"></a>
+<span class="sourceLineNo">272</span>      case SHARED:<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        break;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
 <span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">277</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.278"></a>
 <span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return info;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">280</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
 <span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Override<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    schedLock();<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.288"></a>
+<span class="sourceLineNo">283</span>    return info;<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>  @Override<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    schedLock();<a name="line.288"></a>
 <span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          .entrySet()) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        String serverName = entry.getKey().getServerName();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        LockAndQueue queue = entry.getValue();<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>        if (queue.isLocked()) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              serverName, queue);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          lockInfos.add(lockInfo);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          .entrySet()) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        String namespaceName = entry.getKey();<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        LockAndQueue queue = entry.getValue();<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>        if (queue.isLocked()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              namespaceName, queue);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>          lockInfos.add(lockInfo);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        }<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.314"></a>
-<span class="sourceLineNo">315</span>          .entrySet()) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        String tableName = entry.getKey().getNameAsString();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        LockAndQueue queue = entry.getValue();<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>        if (queue.isLocked()) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.320"></a>
-<span class="sourceLineNo">321</span>              tableName, queue);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          lockInfos.add(lockInfo);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        String regionName = entry.getKey();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        LockAndQueue queue = entry.getValue();<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>        if (queue.isLocked()) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              regionName, queue);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          lockInfos.add(lockInfo);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      }<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>      return lockInfos;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    } finally {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      schedUnlock();<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>  @Override<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    LockAndQueue queue = null;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    schedLock();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    try {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      switch (resourceType) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        case SERVER:<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.350"></a>
-<span class="sourceLineNo">351</span>          break;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        case NAMESPACE:<a name="line.352"></a>
-<span class="sourceLineNo">353</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.353"></a>
+<span class="sourceLineNo">290</span>    try {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          .entrySet()) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        String serverName = entry.getKey().getServerName();<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        LockAndQueue queue = entry.getValue();<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>        if (queue.isLocked()) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              serverName, queue);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          lockInfos.add(lockInfo);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          .entrySet()) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        String namespaceName = entry.getKey();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        LockAndQueue queue = entry.getValue();<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>        if (queue.isLocked()) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.311"></a>
+<span class="sourceLineNo">312</span>              namespaceName, queue);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>          lockInfos.add(lockInfo);<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>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.317"></a>
+<span class="sourceLineNo">318</span>          .entrySet()) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        String tableName = entry.getKey().getNameAsString();<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        LockAndQueue queue = entry.getValue();<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>        if (queue.isLocked()) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.323"></a>
+<span class="sourceLineNo">324</span>              tableName, queue);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>          lockInfos.add(lockInfo);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        String regionName = entry.getKey();<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        LockAndQueue queue = entry.getValue();<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>        if (queue.isLocked()) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.334"></a>
+<span class="sourceLineNo">335</span>              regionName, queue);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          lockInfos.add(lockInfo);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return lockInfos;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    } finally {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      schedUnlock();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    LockAndQueue queue = null;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    schedLock();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    try {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      switch (resourceType) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        case SERVER:<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.353"></a>
 <span class="sourceLineNo">354</span>          break;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        case TABLE:<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.356"></a>
+<span class="sourceLineNo">355</span>        case NAMESPACE:<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.356"></a>
 <span class="sourceLineNo">357</span>          break;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        case REGION:<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          queue = locking.regionLocks.get(resourceName);<a name="line.359"></a>
+<span class="sourceLineNo">358</span>        case TABLE:<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.359"></a>
 <span class="sourceLineNo">360</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    } finally {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      schedUnlock();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public void clear() {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    schedLock();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    try {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      clearQueue();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      locking.clear();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    } finally {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      schedUnlock();<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>  protected void clearQueue() {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    // Remove Servers<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      serverBuckets[i] = null;<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>    // Remove Tables<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    tableMap = null;<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
+<span class="sourceLineNo">361</span>        case REGION:<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          queue = locking.regionLocks.get(resourceName);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    } finally {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      schedUnlock();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  @Override<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  public void clear() {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    schedLock();<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    try {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      clearQueue();<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      locking.clear();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    } finally {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      schedUnlock();<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><a name="line.382"></a>
+<span class="sourceLineNo">383</span>  protected void clearQueue() {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // Remove Servers<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      serverBuckets[i] = null;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>    // Remove Tables<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    tableMap = null;<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    while (treeMap != null) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Override<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  protected int queueSize() {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    int count = 0;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // Server queues<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      while (serverIter.hasNext()) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        count += serverIter.next().size();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>    // Table queues<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    while (tableIter.hasNext()) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      count += tableIter.next().size();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    return count;<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 completionCleanup(final Procedure proc) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    if (proc instanceof TableProcedureInterface) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      boolean tableDeleted;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (proc.hasException()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          // create failed because the table already exist<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        } else {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          // the operation failed because the table does not exist<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      } else {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        // the table was deleted<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if (tableDeleted) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        return;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    } else {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      return;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      fairq.add(queue);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      fairq.remove(queue);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>  // ============================================================================<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  //  Table Queue Lookup Helpers<a name="line.466"></a>
-<span class="sourceLineNo">467</span>  // ============================================================================<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    if (node != null) return node;<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    return node;<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private void removeTableQueue(TableName tableName) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    locking.removeTableLock(tableName);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  }<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    return proc instanceof TableProcedureInterface;<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>  private static TableName getTableName(Procedure proc) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  }<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>  //  Server Queue Lookup Helpers<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  // ============================================================================<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    if (node != null) return node;<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    return node;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  }<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    return Math.abs(hashCode) % buckets.length;<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>  private static boolean isServerProcedure(Procedure proc) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  // ============================================================================<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  //  Table and Server Queue Implementation<a name="line.518"></a>
-<span class="sourceLineNo">519</span>  // ============================================================================<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    @Override<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      return node.compareKey((ServerName)key);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      super(serverName, serverLock);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>    @Override<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      switch (spi.getServerOperationType()) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        case CRASH_HANDLER:<a name="line.536"></a>
-<span class="sourceLineNo">537</span>          return true;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        default:<a name="line.538"></a>
-<span class="sourceLineNo">539</span>          break;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      }<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    @Override<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    public int compareKey(TableQueue node, Object key) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      return node.compareKey((TableName)key);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    }<a name="line.549"></a>
-<span class="sourceLineNo">550</span>  }<a name="line.550"></a>
-<span class="sourceLineNo">551</span><a name="line.551"></a>
-<span class="sourceLineNo">552</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    private final LockStatus namespaceLockStatus;<a name="line.553"></a>
+<span class="sourceLineNo">394</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    while (treeMap != null) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  @Override<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  protected int queueSize() {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    int count = 0;<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>    // Server queues<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      while (serverIter.hasNext()) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        count += serverIter.next().size();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>    // Table queues<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    while (tableIter.hasNext()) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      count += tableIter.next().size();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    return count;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  @Override<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  public void completionCleanup(final Procedure proc) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    if (proc instanceof TableProcedureInterface) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      boolean tableDeleted;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      if (proc.hasException()) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>          // create failed because the table already exist<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        } else {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          // the operation failed because the table does not exist<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      } else {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        // the table was deleted<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      }<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      if (tableDeleted) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        return;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      }<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } else {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      return;<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><a name="line.454"></a>
+<span class="sourceLineNo">455</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      fairq.add(queue);<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>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      fairq.remove(queue);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  }<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>  // ============================================================================<a name="line.468"></a>
+<span class="sourceLineNo">469</span>  //  Table Queue Lookup Helpers<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  // ============================================================================<a name="line.470"></a>
+<span class="sourceLineNo">471</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    if (node != null) return node;<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    return node;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  }<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>  private void removeTableQueue(TableName tableName) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    locking.removeTableLock(tableName);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span><a name="line.486"></a>
+<span class="sourceLineNo">487</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    return proc instanceof TableProcedureInterface;<a name="line.488"></a>
+<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>  private static TableName getTableName(Procedure proc) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  }<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>  // ============================================================================<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  //  Server Queue Lookup Helpers<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  // ============================================================================<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    if (node != null) return node;<a name="line.501"></a>
+<span class="sourceLineNo">502</span><a name="line.502"></a>
+<span class="sourceLineNo">503</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    return node;<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>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return Math.abs(hashCode) % buckets.length;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>  private static boolean isServerProcedure(Procedure proc) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
+<span class="sourceLineNo">519</span><a name="line.519"></a>
+<span class="sourceLineNo">520</span>  // ============================================================================<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  //  Table and Server Queue Implementation<a name="line.521"></a>
+<span class="sourceLineNo">522</span>  // ============================================================================<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    @Override<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      return node.compareKey((ServerName)key);<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>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      super(serverName, serverLock);<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>    @Override<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      switch (spi.getServerOperationType()) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        case CRASH_HANDLER:<a name="line.539"></a>
+<span class="sourceLineNo">540</span>          return true;<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        default:<a name="line.541"></a>
+<span class="sourceLineNo">542</span>          break;<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    @Override<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    public int compareKey(TableQueue node, Object key) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      return node.compareKey((TableName)key);<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><a name="line.554"></a>
-<span class="sourceLineNo">555</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        LockStatus namespaceLockStatus) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      super(tableName, priority, tableLock);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      this.namespaceLockStatus = namespaceLockStatus;<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>    @Override<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    public boolean isAvailable() {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      // we can't execute operation on this table<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>        return false;<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>      if (getLockStatus().hasExclusiveLock()) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        // if we have an exclusive lock already taken<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        // only child of the lock owner can be executed<a name="line.571"></a>
-<span class="sourceLineNo">572</span>        final Procedure nextProc = peek();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>      // no xlock<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return true;<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>    @Override<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
-<span class="sourceLineNo">585</span><a name="line.585"></a>
-<span class="sourceLineNo">586</span>  // ============================================================================<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  //  Table Locking Helpers<a name="line.587"></a>
-<span class="sourceLineNo">588</span>  // ============================================================================<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    switch (proc.getTableOperationType()) {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      case CREATE:<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      case DELETE:<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      case DISABLE:<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      case ENABLE:<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        return true;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      case EDIT:<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        // we allow concurrent edit on the NS table<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      case READ:<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        return false;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      // region operations are using the shared-lock on the table<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      // and then they will grab an xlock on the region.<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      case REGION_SPLIT:<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      case REGION_MERGE:<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      case REGION_ASSIGN:<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      case REGION_UNASSIGN:<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      case REGION_EDIT:<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      case REGION_GC:<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      case MERGED_REGIONS_GC:<a name="line.609"></a>
-<span class="sourceLineNo">610</span>        return false;<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      default:<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        break;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    }<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        proc.getTableOperationType());<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  /**<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * Get lock info for a resource of specified type and name and log details<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   */<a name="line.620"></a>
-<span class="sourceLineNo">621</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    if (!LOG.isDebugEnabled()) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      return;<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    if (lockInfo != null) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.628"></a>
-<span class="sourceLineNo">629</span>          lockInfo.getSharedLockCount();<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      if (proc != null) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      }<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      LOG.debug(msg);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    }<a name="line.636"></a>
-<span class="sourceLineNo">637</span>  }<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>  /**<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   * Suspend the procedure if the specified table is already locked.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.641"></a>
-<span class="sourceLineNo">642</span>   * @param procedure the procedure trying to acquire the lock<a name="line.642"></a>
-<span class="sourceLineNo">643</span>   * @param table Table to lock<a name="line.643"></a>
-<span class="sourceLineNo">644</span>   * @return true if the procedure has to wait for the table to be available<a name="line.644"></a>
-<span class="sourceLineNo">645</span>   */<a name="line.645"></a>
-<span class="sourceLineNo">646</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    schedLock();<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    try {<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      final String namespace = table.getNamespaceAsString();<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      if (!namespaceLock.trySharedLock()) {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>        waitProcedure(namespaceLock, procedure);<a name="line.653"></a>
-<span class="sourceLineNo">654</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        return true;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      if (!tableLock.tryExclusiveLock(procedure)) {<a name="line.657"></a>
-<span class="sourceLineNo">658</span>        namespaceLock.releaseSharedLock();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>        waitProcedure(tableLock, procedure);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.TABLE, table.getNameAsString());<a name="line.660"></a>
+<span class="sourceLineNo">555</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    private final LockStatus namespaceLockStatus;<a name="line.556"></a>
+<span class="sourceLineNo">557</span><a name="line.557"></a>
+<span class="sourceLineNo">558</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>        LockStatus namespaceLockStatus) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      super(tableName, priority, tableLock);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      this.namespaceLockStatus = namespaceLockStatus;<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    }<a name="line.562"></a>
+<span class="sourceLineNo">563</span><a name="line.563"></a>
+<span class="sourceLineNo">564</span>    @Override<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    public boolean isAvailable() {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      // we can't execute operation on this table<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.568"></a>
+<span class="sourceLineNo">569</span>        return false;<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      }<a name="line.570"></a>
+<span class="sourceLineNo">571</span><a name="line.571"></a>
+<span class="sourceLineNo">572</span>      if (getLockStatus().hasExclusiveLock()) {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>        // if we have an exclusive lock already taken<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        // only child of the lock owner can be executed<a name="line.574"></a>
+<span class="sourceLineNo">575</span>        final Procedure nextProc = peek();<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>      // no xlock<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      return true;<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
+<span class="sourceLineNo">582</span><a name="line.582"></a>
+<span class="sourceLineNo">583</span>    @Override<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    }<a name="line.586"></a>
+<span class="sourceLineNo">587</span>  }<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>  // ============================================================================<a name="line.589"></a>
+<span class="sourceLineNo">590</span>  //  Table Locking Helpers<a name="line.590"></a>
+<span class="sourceLineNo">591</span>  // ============================================================================<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  /**<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @param proc must not be null<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   */<a name="line.594"></a>
+<span class="sourceLineNo">595</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    switch (proc.getTableOperationType()) {<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      case CREATE:<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      case DELETE:<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      case DISABLE:<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      case ENABLE:<a name="line.600"></a>
+<span class="sourceLineNo">601</span>        return true;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      case EDIT:<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        // we allow concurrent edit on the NS table<a name="line.603"></a>
+<span class="sourceLineNo">604</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      case READ:<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        return false;<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      // region operations are using the shared-lock on the table<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      // and then they will grab an xlock on the region.<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      case REGION_SPLIT:<a name="line.609"></a>
+<span class="sourceLineNo">610</span>      case REGION_MERGE:<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      case REGION_ASSIGN:<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      case REGION_UNASSIGN:<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      case REGION_EDIT:<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      case REGION_GC:<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      case MERGED_REGIONS_GC:<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        return false;<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      default:<a name="line.617"></a>
+<span class="sourceLineNo">618</span>        break;<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    }<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.620"></a>
+<span class="sourceLineNo">621</span>        proc.getTableOperationType());<a name="line.621"></a>
+<span class="sourceLineNo">622</span>  }<a name="line.622"></a>
+<span class="sourceLineNo">623</span><a name="line.623"></a>
+<span class="sourceLineNo">624</span>  /**<a name="line.624"></a>
+<span class="sourceLineNo">625</span>   * Get lock info for a resource of specified type and name and log details<a name="line.625"></a>
+<span class="sourceLineNo">626</span>   */<a name="line.626"></a>
+<span class="sourceLineNo">627</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    if (!LOG.isDebugEnabled()) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>      return;<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>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    if (lockInfo != null) {<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.634"></a>
+<span class="sourceLineNo">635</span>          lockInfo.getSharedLockCount();<a name="line.635"></a>
+<span class="sourceLineNo">636</span><a name="line.636"></a>
+<span class="sourceLineNo">637</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.637"></a>
+<span class="sourceLineNo">638</span>      if (proc != null) {<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      }<a name="line.640"></a>
+<span class="sourceLineNo">641</span>      LOG.debug(msg);<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>  }<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   * Suspend the procedure if the specified table is already locked.<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.647"></a>
+<span class="sourceLineNo">648</span>   * @param procedure the procedure trying to acquire the lock<a name="line.648"></a>
+<span class="sourceLineNo">649</span>   * @param table Table to lock<a name="line.649"></a>
+<span class="sourceLineNo">650</span>   * @return true if the procedure has to wait for the table to be available<a name="line.650"></a>
+<span class="sourceLineNo">651</span>   */<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    schedLock();<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    try {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>      final String namespace = table.getNamespaceAsString();<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      if (!namespaceLock.trySharedLock()) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>        waitProcedure(namespaceLock, procedure);<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.660"></a>
 <span class="sourceLineNo">661</span>        return true;<a name="line.661"></a>
 <span class="sourceLineNo">662</span>      }<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      removeFromRunQueue(tableRunQueue, getTableQueue(table));<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      return false;<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    } finally {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      schedUnlock();<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  }<a name="line.668"></a>
-<span class="sourceLineNo">669</span><a name="line.669"></a>
-<span class="sourceLineNo">670</span>  /**<a name="line.670"></a>
-<span class="sourceLineNo">671</span>   * Wake the procedures waiting for the specified table<a name="line.671"></a>
-<span class="sourceLineNo">672</span>   * @param procedure the procedure releasing the lock<a name="line.672"></a>
-<span class="sourceLineNo">673</span>   * @param table the name of the table that has the exclusive lock<a name="line.673"></a>
-<span class="sourceLineNo">674</span>   */<a name="line.674"></a>
-<span class="sourceLineNo">675</span>  public void wakeTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    schedLock();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    try {<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(table.getNamespaceAsString());<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      int waitingCount = 0;<a name="line.680"></a>
-<span class="sourceLineNo">681</span><a name="line.681"></a>
-<span class="sourceLineNo">682</span>      if (!tableLock.hasParentLock(procedure)) {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>        tableLock.releaseExclusiveLock(procedure);<a name="line.683"></a>
-<span class="sourceLineNo">684</span>        waitingCount += wakeWaitingProcedures(tableLock);<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      }<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      if (namespaceLock.releaseSharedLock()) {<a name="line.686"></a>
-<span class="sourceLineNo">687</span>        waitingCount += wakeWaitingProcedures(namespaceLock);<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      }<a name="line.688"></a>
-<span class="sourceLineNo">689</span>      addToRunQueue(tableRunQueue, getTableQueue(table));<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      wakePollIfNeeded(waitingCount);<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    } finally {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>      schedUnlock();<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><a name="line.695"></a>
-<span class="sourceLineNo">696</span>  /**<a name="line.696"></a>
-<span class="sourceLineNo">697</span>   * Suspend the procedure if the specified table is already locked.<a name="line.697"></a>
-<span class="sourceLineNo">698</span>   * other "read" operations in the table-queue may be executed concurrently,<a name="line.698"></a>
-<span class="sourceLineNo">699</span>   * @param procedure the procedure trying to acquire the lock<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   * @param table Table to lock<a name="line.700"></a>
-<span class="sourceLineNo">701</span>   * @return true if the procedure has to wait for the table to be available<a name="line.701"></a>
-<span class="sourceLineNo">702</span>   */<a name="line.702"></a>
-<span class="sourceLineNo">703</span>  public boolean waitTableSharedLock(final Procedure procedure, final TableName table) {<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    return waitTableQueueSharedLock(procedure, table) == null;<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>  private TableQueue waitTableQueueSharedLock(final Procedure procedure, final TableName table) {<a name="line.707"></a>
-<span class="sourceLineNo">70

<TRUNCATED>

[11/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html
index 8eaf486..991b238 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html
@@ -6,7 +6,7 @@
 </head>
 <body>
 <div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
 <span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
 <span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
 <span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
@@ -29,421 +29,383 @@
 <span class="sourceLineNo">021</span>import java.io.InputStream;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import java.io.OutputStream;<a name="line.22"></a>
 <span class="sourceLineNo">023</span>import java.util.ArrayList;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.Collection;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.Iterator;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.List;<a name="line.26"></a>
-<span class="sourceLineNo">027</span><a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.ServerName;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.TableName;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.master.MasterServices;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.master.MasterWalManager;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.master.assignment.RegionTransitionProcedure;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.procedure2.ProcedureMetrics;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.procedure2.ProcedureYieldException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.procedure2.StateMachineProcedure;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionInfo;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState;<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>/**<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * Handle crashed server. This is a port to ProcedureV2 of what used to be euphemistically called<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * ServerShutdownHandler.<a name="line.50"></a>
-<span class="sourceLineNo">051</span> *<a name="line.51"></a>
-<span class="sourceLineNo">052</span> * &lt;p&gt;The procedure flow varies dependent on whether meta is assigned and if we are to split logs.<a name="line.52"></a>
-<span class="sourceLineNo">053</span> *<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * &lt;p&gt;We come in here after ServerManager has noticed a server has expired. Procedures<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * queued on the rpc should have been notified about fail and should be concurrently<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * getting themselves ready to assign elsewhere.<a name="line.56"></a>
-<span class="sourceLineNo">057</span> */<a name="line.57"></a>
-<span class="sourceLineNo">058</span>public class ServerCrashProcedure<a name="line.58"></a>
-<span class="sourceLineNo">059</span>extends StateMachineProcedure&lt;MasterProcedureEnv, ServerCrashState&gt;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>implements ServerProcedureInterface {<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private static final Log LOG = LogFactory.getLog(ServerCrashProcedure.class);<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>   * Name of the crashed server to process.<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   */<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private ServerName serverName;<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  /**<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   * Whether DeadServer knows that we are processing it.<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   */<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private boolean notifiedDeadServer = false;<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>   * Regions that were on the crashed server.<a name="line.74"></a>
-<span class="sourceLineNo">075</span>   */<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private List&lt;HRegionInfo&gt; regionsOnCrashedServer;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private boolean carryingMeta = false;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  private boolean shouldSplitWal;<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>   * Cycles on same state. Good for figuring if we are stuck.<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   */<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  private int cycles = 0;<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>  /**<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   * Ordinal of the previous state. So we can tell if we are progressing or not. TODO: if useful,<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   * move this back up into StateMachineProcedure<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   */<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private int previousState;<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  /**<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   * Call this constructor queuing up a Procedure.<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   * @param serverName Name of the crashed server.<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   * @param shouldSplitWal True if we should split WALs as part of crashed server processing.<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * @param carryingMeta True if carrying hbase:meta table region.<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   */<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  public ServerCrashProcedure(<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      final MasterProcedureEnv env,<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      final ServerName serverName,<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      final boolean shouldSplitWal,<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      final boolean carryingMeta) {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    this.serverName = serverName;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    this.shouldSplitWal = shouldSplitWal;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    this.carryingMeta = carryingMeta;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    this.setOwner(env.getRequestUser());<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  }<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  /**<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * Used when deserializing from a procedure store; we'll construct one of these then call<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * {@link #deserializeStateData(InputStream)}. Do not use directly.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  public ServerCrashProcedure() {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    super();<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  }<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  @Override<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  protected Flow executeFromState(MasterProcedureEnv env, ServerCrashState state)<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      throws ProcedureSuspendedException, ProcedureYieldException {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    if (LOG.isTraceEnabled()) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      LOG.trace(state  + " " + this + "; cycles=" + this.cycles);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // Keep running count of cycles<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    if (state.ordinal() != this.previousState) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      this.previousState = state.ordinal();<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      this.cycles = 0;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    } else {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      this.cycles++;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    final MasterServices services = env.getMasterServices();<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    // HBASE-14802<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    // If we have not yet notified that we are processing a dead server, we should do now.<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    if (!notifiedDeadServer) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      services.getServerManager().getDeadServers().notifyServer(serverName);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      notifiedDeadServer = true;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>    try {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      switch (state) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      case SERVER_CRASH_START:<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        LOG.info("Start " + this);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        // If carrying meta, process it first. Else, get list of regions on crashed server.<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        if (this.carryingMeta) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>          setNextState(ServerCrashState.SERVER_CRASH_PROCESS_META);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>        } else {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>          setNextState(ServerCrashState.SERVER_CRASH_GET_REGIONS);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        }<a name="line.147"></a>
+<span class="sourceLineNo">024</span>import java.util.Iterator;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.List;<a name="line.25"></a>
+<span class="sourceLineNo">026</span><a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.LogFactory;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.ServerName;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.TableName;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.master.MasterServices;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.master.MasterWalManager;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.master.assignment.RegionTransitionProcedure;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.procedure2.ProcedureMetrics;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.procedure2.ProcedureYieldException;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.procedure2.StateMachineProcedure;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionInfo;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState;<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>/**<a name="line.47"></a>
+<span class="sourceLineNo">048</span> * Handle crashed server. This is a port to ProcedureV2 of what used to be euphemistically called<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * ServerShutdownHandler.<a name="line.49"></a>
+<span class="sourceLineNo">050</span> *<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * &lt;p&gt;The procedure flow varies dependent on whether meta is assigned and if we are to split logs.<a name="line.51"></a>
+<span class="sourceLineNo">052</span> *<a name="line.52"></a>
+<span class="sourceLineNo">053</span> * &lt;p&gt;We come in here after ServerManager has noticed a server has expired. Procedures<a name="line.53"></a>
+<span class="sourceLineNo">054</span> * queued on the rpc should have been notified about fail and should be concurrently<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * getting themselves ready to assign elsewhere.<a name="line.55"></a>
+<span class="sourceLineNo">056</span> */<a name="line.56"></a>
+<span class="sourceLineNo">057</span>public class ServerCrashProcedure<a name="line.57"></a>
+<span class="sourceLineNo">058</span>extends StateMachineProcedure&lt;MasterProcedureEnv, ServerCrashState&gt;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>implements ServerProcedureInterface {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static final Log LOG = LogFactory.getLog(ServerCrashProcedure.class);<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  /**<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   * Name of the crashed server to process.<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   */<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private ServerName serverName;<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>   * Whether DeadServer knows that we are processing it.<a name="line.68"></a>
+<span class="sourceLineNo">069</span>   */<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private boolean notifiedDeadServer = false;<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  /**<a name="line.72"></a>
+<span class="sourceLineNo">073</span>   * Regions that were on the crashed server.<a name="line.73"></a>
+<span class="sourceLineNo">074</span>   */<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private List&lt;HRegionInfo&gt; regionsOnCrashedServer;<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private boolean carryingMeta = false;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  private boolean shouldSplitWal;<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>   * Call this constructor queuing up a Procedure.<a name="line.81"></a>
+<span class="sourceLineNo">082</span>   * @param serverName Name of the crashed server.<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   * @param shouldSplitWal True if we should split WALs as part of crashed server processing.<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   * @param carryingMeta True if carrying hbase:meta table region.<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   */<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  public ServerCrashProcedure(<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      final MasterProcedureEnv env,<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      final ServerName serverName,<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      final boolean shouldSplitWal,<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      final boolean carryingMeta) {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    this.serverName = serverName;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    this.shouldSplitWal = shouldSplitWal;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    this.carryingMeta = carryingMeta;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    this.setOwner(env.getRequestUser());<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  }<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  /**<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * Used when deserializing from a procedure store; we'll construct one of these then call<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * {@link #deserializeStateData(InputStream)}. Do not use directly.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  public ServerCrashProcedure() {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    super();<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>  @Override<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  protected Flow executeFromState(MasterProcedureEnv env, ServerCrashState state)<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      throws ProcedureSuspendedException, ProcedureYieldException {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    final MasterServices services = env.getMasterServices();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    // HBASE-14802<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    // If we have not yet notified that we are processing a dead server, we should do now.<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    if (!notifiedDeadServer) {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      services.getServerManager().getDeadServers().notifyServer(serverName);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      notifiedDeadServer = true;<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>    try {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      switch (state) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      case SERVER_CRASH_START:<a name="line.118"></a>
+<span class="sourceLineNo">119</span>        LOG.info("Start " + this);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        // If carrying meta, process it first. Else, get list of regions on crashed server.<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        if (this.carryingMeta) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>          setNextState(ServerCrashState.SERVER_CRASH_PROCESS_META);<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        } else {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>          setNextState(ServerCrashState.SERVER_CRASH_GET_REGIONS);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>        break;<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>      case SERVER_CRASH_GET_REGIONS:<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        // If hbase:meta is not assigned, yield.<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        if (env.getAssignmentManager().waitMetaLoaded(this)) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>          throw new ProcedureSuspendedException();<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>        this.regionsOnCrashedServer = services.getAssignmentManager().getRegionStates()<a name="line.134"></a>
+<span class="sourceLineNo">135</span>          .getServerRegionInfoSet(serverName);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>        // Where to go next? Depends on whether we should split logs at all or<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        // if we should do distributed log splitting.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        if (!this.shouldSplitWal) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>          setNextState(ServerCrashState.SERVER_CRASH_ASSIGN);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        } else {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>          setNextState(ServerCrashState.SERVER_CRASH_SPLIT_LOGS);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>        }<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        break;<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>      case SERVER_CRASH_PROCESS_META:<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        processMeta(env);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        setNextState(ServerCrashState.SERVER_CRASH_GET_REGIONS);<a name="line.147"></a>
 <span class="sourceLineNo">148</span>        break;<a name="line.148"></a>
 <span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>      case SERVER_CRASH_GET_REGIONS:<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        // If hbase:meta is not assigned, yield.<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        if (env.getAssignmentManager().waitMetaLoaded(this)) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>          throw new ProcedureSuspendedException();<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>        this.regionsOnCrashedServer = services.getAssignmentManager().getRegionStates()<a name="line.156"></a>
-<span class="sourceLineNo">157</span>          .getServerRegionInfoSet(serverName);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        // Where to go next? Depends on whether we should split logs at all or<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        // if we should do distributed log splitting.<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        if (!this.shouldSplitWal) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          setNextState(ServerCrashState.SERVER_CRASH_ASSIGN);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        } else {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>          setNextState(ServerCrashState.SERVER_CRASH_SPLIT_LOGS);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        break;<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>      case SERVER_CRASH_PROCESS_META:<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        processMeta(env);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        setNextState(ServerCrashState.SERVER_CRASH_GET_REGIONS);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        break;<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>      case SERVER_CRASH_SPLIT_LOGS:<a name="line.172"></a>
-<span class="sourceLineNo">173</span>        splitLogs(env);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        setNextState(ServerCrashState.SERVER_CRASH_ASSIGN);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>        break;<a name="line.175"></a>
+<span class="sourceLineNo">150</span>      case SERVER_CRASH_SPLIT_LOGS:<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        splitLogs(env);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        setNextState(ServerCrashState.SERVER_CRASH_ASSIGN);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        break;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>      case SERVER_CRASH_ASSIGN:<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        // If no regions to assign, skip assign and skip to the finish.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        // Filter out meta regions. Those are handled elsewhere in this procedure.<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        // Filter changes this.regionsOnCrashedServer.<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        if (filterDefaultMetaRegions(regionsOnCrashedServer)) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>          if (LOG.isTraceEnabled()) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>            LOG.trace("Assigning regions " +<a name="line.161"></a>
+<span class="sourceLineNo">162</span>              HRegionInfo.getShortNameToLog(regionsOnCrashedServer) + ", " + this +<a name="line.162"></a>
+<span class="sourceLineNo">163</span>              "; cycles=" + getCycles());<a name="line.163"></a>
+<span class="sourceLineNo">164</span>          }<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          handleRIT(env, regionsOnCrashedServer);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>          AssignmentManager am = env.getAssignmentManager();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          addChildProcedure(am.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>              createAssignProcedures(am.getOrderedRegions(regionsOnCrashedServer), true));<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        }<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        setNextState(ServerCrashState.SERVER_CRASH_FINISH);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        break;<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span>      case SERVER_CRASH_FINISH:<a name="line.173"></a>
+<span class="sourceLineNo">174</span>        services.getServerManager().getDeadServers().finish(serverName);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        return Flow.NO_MORE_STATE;<a name="line.175"></a>
 <span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>      case SERVER_CRASH_ASSIGN:<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        // If no regions to assign, skip assign and skip to the finish.<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        // Filter out meta regions. Those are handled elsewhere in this procedure.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        // Filter changes this.regionsOnCrashedServer.<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        if (filterDefaultMetaRegions(regionsOnCrashedServer)) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          if (LOG.isTraceEnabled()) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>            LOG.trace("Assigning regions " +<a name="line.183"></a>
-<span class="sourceLineNo">184</span>              HRegionInfo.getShortNameToLog(regionsOnCrashedServer) + ", " + this +<a name="line.184"></a>
-<span class="sourceLineNo">185</span>              "; cycles=" + this.cycles);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>          handleRIT(env, regionsOnCrashedServer);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          AssignmentManager am = env.getAssignmentManager();<a name="line.188"></a>
-<span class="sourceLineNo">189</span>          addChildProcedure(am.<a name="line.189"></a>
-<span class="sourceLineNo">190</span>              createAssignProcedures(am.getOrderedRegions(regionsOnCrashedServer), true));<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        setNextState(ServerCrashState.SERVER_CRASH_FINISH);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        break;<a name="line.193"></a>
-<span class="sourceLineNo">194</span><a name="line.194"></a>
-<span class="sourceLineNo">195</span>      case SERVER_CRASH_FINISH:<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        services.getServerManager().getDeadServers().finish(serverName);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>        return Flow.NO_MORE_STATE;<a name="line.197"></a>
+<span class="sourceLineNo">177</span>      default:<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        throw new UnsupportedOperationException("unhandled state=" + state);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    } catch (IOException e) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      LOG.warn("Failed state=" + state + ", retry " + this + "; cycles=" + getCycles(), e);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    }<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    return Flow.HAS_MORE_STATE;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  /**<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @param env<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * @throws IOException<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  private void processMeta(final MasterProcedureEnv env) throws IOException {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    if (LOG.isDebugEnabled()) LOG.debug(this + "; Processing hbase:meta that was on " +<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        this.serverName);<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>    // Assign meta if still carrying it. Check again: region may be assigned because of RIT timeout<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    final AssignmentManager am = env.getMasterServices().getAssignmentManager();<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    for (HRegionInfo hri: am.getRegionStates().getServerRegionInfoSet(serverName)) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      if (!isDefaultMetaRegion(hri)) continue;<a name="line.197"></a>
 <span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>      default:<a name="line.199"></a>
-<span class="sourceLineNo">200</span>        throw new UnsupportedOperationException("unhandled state=" + state);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    } catch (IOException e) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      LOG.warn("Failed state=" + state + ", retry " + this + "; cycles=" + this.cycles, e);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    return Flow.HAS_MORE_STATE;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  }<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>  /**<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   * @param env<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * @throws IOException<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   * @throws InterruptedException<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private void processMeta(final MasterProcedureEnv env) throws IOException {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    if (LOG.isDebugEnabled()) LOG.debug("Processing hbase:meta that was on " + this.serverName);<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>    if (this.shouldSplitWal) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      // TODO: Matteo. We BLOCK here but most important thing to be doing at this moment.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      env.getMasterServices().getMasterWalManager().splitMetaLog(serverName);<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>    // Assign meta if still carrying it. Check again: region may be assigned because of RIT timeout<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    final AssignmentManager am = env.getMasterServices().getAssignmentManager();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    for (HRegionInfo hri: am.getRegionStates().getServerRegionInfoSet(serverName)) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      if (!isDefaultMetaRegion(hri)) continue;<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>      am.offlineRegion(hri);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      addChildProcedure(am.createAssignProcedure(hri, true));<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  private boolean filterDefaultMetaRegions(final List&lt;HRegionInfo&gt; regions) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    if (regions == null) return false;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    final Iterator&lt;HRegionInfo&gt; it = regions.iterator();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    while (it.hasNext()) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      final HRegionInfo hri = it.next();<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      if (isDefaultMetaRegion(hri)) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        it.remove();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      }<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    return !regions.isEmpty();<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  }<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>  private boolean isDefaultMetaRegion(final HRegionInfo hri) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    return hri.getTable().equals(TableName.META_TABLE_NAME) &amp;&amp;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      RegionReplicaUtil.isDefaultReplica(hri);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  }<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>  private void splitLogs(final MasterProcedureEnv env) throws IOException {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    if (LOG.isDebugEnabled()) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      LOG.debug("Splitting WALs " + this);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    MasterWalManager mwm = env.getMasterServices().getMasterWalManager();<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    AssignmentManager am = env.getMasterServices().getAssignmentManager();<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    // TODO: For Matteo. Below BLOCKs!!!! Redo so can relinquish executor while it is running.<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    // PROBLEM!!! WE BLOCK HERE.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    mwm.splitLog(this.serverName);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if (LOG.isDebugEnabled()) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      LOG.debug("Done splitting WALs " + this);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    am.getRegionStates().logSplit(this.serverName);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  }<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>  static int size(final Collection&lt;HRegionInfo&gt; hris) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    return hris == null? 0: hris.size();<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  }<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>  @Override<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  protected void rollbackState(MasterProcedureEnv env, ServerCrashState state)<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  throws IOException {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    // Can't rollback.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    throw new UnsupportedOperationException("unhandled state=" + state);<a name="line.271"></a>
+<span class="sourceLineNo">199</span>      am.offlineRegion(hri);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      addChildProcedure(new RecoverMetaProcedure(serverName, this.shouldSplitWal));<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  private boolean filterDefaultMetaRegions(final List&lt;HRegionInfo&gt; regions) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    if (regions == null) return false;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    regions.removeIf(this::isDefaultMetaRegion);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    return !regions.isEmpty();<a name="line.207"></a>
+<span class="sourceLineNo">208</span>  }<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>  private boolean isDefaultMetaRegion(final HRegionInfo hri) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    return hri.getTable().equals(TableName.META_TABLE_NAME) &amp;&amp;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      RegionReplicaUtil.isDefaultReplica(hri);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
+<span class="sourceLineNo">214</span><a name="line.214"></a>
+<span class="sourceLineNo">215</span>  private void splitLogs(final MasterProcedureEnv env) throws IOException {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    if (LOG.isDebugEnabled()) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      LOG.debug("Splitting WALs " + this);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    }<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    MasterWalManager mwm = env.getMasterServices().getMasterWalManager();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    AssignmentManager am = env.getMasterServices().getAssignmentManager();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    // TODO: For Matteo. Below BLOCKs!!!! Redo so can relinquish executor while it is running.<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    // PROBLEM!!! WE BLOCK HERE.<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    mwm.splitLog(this.serverName);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    if (LOG.isDebugEnabled()) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      LOG.debug("Done splitting WALs " + this);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    am.getRegionStates().logSplit(this.serverName);<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>  @Override<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  protected void rollbackState(MasterProcedureEnv env, ServerCrashState state)<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  throws IOException {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // Can't rollback.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    throw new UnsupportedOperationException("unhandled state=" + state);<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>  @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  protected ServerCrashState getState(int stateId) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return ServerCrashState.forNumber(stateId);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  @Override<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  protected int getStateId(ServerCrashState state) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    return state.getNumber();<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>  @Override<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  protected ServerCrashState getInitialState() {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    return ServerCrashState.SERVER_CRASH_START;<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>  @Override<a name="line.252"></a>
+<span class="sourceLineNo">253</span>  protected boolean abort(MasterProcedureEnv env) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    // TODO<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    return false;<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>  @Override<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  protected LockState acquireLock(final MasterProcedureEnv env) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    // TODO: Put this BACK AFTER AMv2 goes in!!!!<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    // if (env.waitFailoverCleanup(this)) return LockState.LOCK_EVENT_WAIT;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    if (env.waitServerCrashProcessingEnabled(this)) return LockState.LOCK_EVENT_WAIT;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    if (env.getProcedureScheduler().waitServerExclusiveLock(this, getServerName())) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      return LockState.LOCK_EVENT_WAIT;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    return LockState.LOCK_ACQUIRED;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>  @Override<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  protected void releaseLock(final MasterProcedureEnv env) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    env.getProcedureScheduler().wakeServerExclusiveLock(this, getServerName());<a name="line.271"></a>
 <span class="sourceLineNo">272</span>  }<a name="line.272"></a>
 <span class="sourceLineNo">273</span><a name="line.273"></a>
 <span class="sourceLineNo">274</span>  @Override<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  protected ServerCrashState getState(int stateId) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    return ServerCrashState.valueOf(stateId);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  @Override<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  protected int getStateId(ServerCrashState state) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    return state.getNumber();<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 ServerCrashState getInitialState() {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    return ServerCrashState.SERVER_CRASH_START;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  }<a name="line.287"></a>
+<span class="sourceLineNo">275</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    sb.append(getClass().getSimpleName());<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    sb.append(" server=");<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    sb.append(serverName);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    sb.append(", splitWal=");<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    sb.append(shouldSplitWal);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    sb.append(", meta=");<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    sb.append(carryingMeta);<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>  public void serializeStateData(final OutputStream stream) throws IOException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    super.serializeStateData(stream);<a name="line.287"></a>
 <span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>  @Override<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  protected boolean abort(MasterProcedureEnv env) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    // TODO<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    return false;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  @Override<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  protected LockState acquireLock(final MasterProcedureEnv env) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    // TODO: Put this BACK AFTER AMv2 goes in!!!!<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    // if (env.waitFailoverCleanup(this)) return LockState.LOCK_EVENT_WAIT;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    if (env.waitServerCrashProcessingEnabled(this)) return LockState.LOCK_EVENT_WAIT;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    if (env.getProcedureScheduler().waitServerExclusiveLock(this, getServerName())) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      return LockState.LOCK_EVENT_WAIT;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    return LockState.LOCK_ACQUIRED;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  }<a name="line.304"></a>
+<span class="sourceLineNo">289</span>    MasterProcedureProtos.ServerCrashStateData.Builder state =<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      MasterProcedureProtos.ServerCrashStateData.newBuilder().<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      setServerName(ProtobufUtil.toServerName(this.serverName)).<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      setCarryingMeta(this.carryingMeta).<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      setShouldSplitWal(this.shouldSplitWal);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    if (this.regionsOnCrashedServer != null &amp;&amp; !this.regionsOnCrashedServer.isEmpty()) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      for (HRegionInfo hri: this.regionsOnCrashedServer) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        state.addRegionsOnCrashedServer(HRegionInfo.convert(hri));<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>    state.build().writeDelimitedTo(stream);<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>  @Override<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  public void deserializeStateData(final InputStream stream) throws IOException {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    super.deserializeStateData(stream);<a name="line.304"></a>
 <span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>  @Override<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  protected void releaseLock(final MasterProcedureEnv env) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    env.getProcedureScheduler().wakeServerExclusiveLock(this, getServerName());<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>  @Override<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    sb.append(getClass().getSimpleName());<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    sb.append(" server=");<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    sb.append(serverName);<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    sb.append(", splitWal=");<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    sb.append(shouldSplitWal);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    sb.append(", meta=");<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    sb.append(carryingMeta);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  @Override<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  public void serializeStateData(final OutputStream stream) throws IOException {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    super.serializeStateData(stream);<a name="line.324"></a>
+<span class="sourceLineNo">306</span>    MasterProcedureProtos.ServerCrashStateData state =<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      MasterProcedureProtos.ServerCrashStateData.parseDelimitedFrom(stream);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    this.serverName = ProtobufUtil.toServerName(state.getServerName());<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    this.carryingMeta = state.hasCarryingMeta()? state.getCarryingMeta(): false;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    // shouldSplitWAL has a default over in pb so this invocation will always work.<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    this.shouldSplitWal = state.getShouldSplitWal();<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    int size = state.getRegionsOnCrashedServerCount();<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    if (size &gt; 0) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      this.regionsOnCrashedServer = new ArrayList&lt;HRegionInfo&gt;(size);<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      for (RegionInfo ri: state.getRegionsOnCrashedServerList()) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        this.regionsOnCrashedServer.add(HRegionInfo.convert(ri));<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  @Override<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  public ServerName getServerName() {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    return this.serverName;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
 <span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    MasterProcedureProtos.ServerCrashStateData.Builder state =<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      MasterProcedureProtos.ServerCrashStateData.newBuilder().<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      setServerName(ProtobufUtil.toServerName(this.serverName)).<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      setCarryingMeta(this.carryingMeta).<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      setShouldSplitWal(this.shouldSplitWal);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    if (this.regionsOnCrashedServer != null &amp;&amp; !this.regionsOnCrashedServer.isEmpty()) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      for (HRegionInfo hri: this.regionsOnCrashedServer) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>        state.addRegionsOnCrashedServer(HRegionInfo.convert(hri));<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>    state.build().writeDelimitedTo(stream);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  @Override<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  public void deserializeStateData(final InputStream stream) throws IOException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    super.deserializeStateData(stream);<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>    MasterProcedureProtos.ServerCrashStateData state =<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      MasterProcedureProtos.ServerCrashStateData.parseDelimitedFrom(stream);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    this.serverName = ProtobufUtil.toServerName(state.getServerName());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    this.carryingMeta = state.hasCarryingMeta()? state.getCarryingMeta(): false;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    // shouldSplitWAL has a default over in pb so this invocation will always work.<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    this.shouldSplitWal = state.getShouldSplitWal();<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    int size = state.getRegionsOnCrashedServerCount();<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    if (size &gt; 0) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      this.regionsOnCrashedServer = new ArrayList&lt;HRegionInfo&gt;(size);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      for (RegionInfo ri: state.getRegionsOnCrashedServerList()) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        this.regionsOnCrashedServer.add(HRegionInfo.convert(ri));<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>  }<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>  public ServerName getServerName() {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    return this.serverName;<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>  @Override<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  public boolean hasMetaTableRegion() {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    return this.carryingMeta;<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  }<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  @Override<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  public ServerOperationType getServerOperationType() {<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    return ServerOperationType.CRASH_HANDLER;<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>  /**<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * For this procedure, yield at end of each successful flow step so that all crashed servers<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * can make progress rather than do the default which has each procedure running to completion<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * before we move to the next. For crashed servers, especially if running with distributed log<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   * replay, we will want all servers to come along; we do not want the scenario where a server is<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * stuck waiting for regions to online so it can replay edits.<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   */<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  @Override<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  protected boolean isYieldBeforeExecuteFromState(MasterProcedureEnv env, ServerCrashState state) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    return true;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  @Override<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  protected boolean shouldWaitClientAck(MasterProcedureEnv env) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    // The operation is triggered internally on the server<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    // the client does not know about this procedure.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    return false;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>  /**<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   * Handle any outstanding RIT that are up against this.serverName, the crashed server.<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   * Notify them of crash. Remove assign entries from the passed in &lt;code&gt;regions&lt;/code&gt;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>   * otherwise we have two assigns going on and they will fight over who has lock.<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   * Notify Unassigns also.<a name="line.396"></a>
-<span class="sourceLineNo">397</span>   * @param crashedServer Server that crashed.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * @param regions Regions that were on crashed server<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * @return Subset of &lt;code&gt;regions&lt;/code&gt; that were RIT against &lt;code&gt;crashedServer&lt;/code&gt;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   */<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private void handleRIT(final MasterProcedureEnv env, final List&lt;HRegionInfo&gt; regions) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    if (regions == null) return;<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    AssignmentManager am = env.getMasterServices().getAssignmentManager();<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    final Iterator&lt;HRegionInfo&gt; it = regions.iterator();<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    ServerCrashException sce = null;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    while (it.hasNext()) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      final HRegionInfo hri = it.next();<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      RegionTransitionProcedure rtp = am.getRegionStates().getRegionTransitionProcedure(hri);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      if (rtp == null) continue;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      // Make sure the RIT is against this crashed server. In the case where there are many<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      // processings of a crashed server -- backed up for whatever reason (slow WAL split) --<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      // then a previous SCP may have already failed an assign, etc., and it may have a new<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      // location target; DO NOT fail these else we make for assign flux.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      ServerName rtpServerName = rtp.getServer(env);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      if (rtpServerName == null) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        LOG.warn("RIT with ServerName null! " + rtp);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        continue;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      if (!rtpServerName.equals(this.serverName)) continue;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      LOG.info("pid=" + getProcId() + " found RIT " + rtp + "; " +<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        rtp.getRegionState(env).toShortString());<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      // Notify RIT on server crash.<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      if (sce == null) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        sce = new ServerCrashException(getProcId(), getServerName());<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      }<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      rtp.remoteCallFailed(env, this.serverName, sce);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      if (rtp instanceof AssignProcedure) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        // If an assign, include it in our return and remove from passed-in list of regions.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        it.remove();<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      }<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><a name="line.433"></a>
-<span class="sourceLineNo">434</span>  @Override<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    return env.getMasterServices().getMasterMetrics().getServerCrashProcMetrics();<a name="line.436"></a>
-<span class="sourceLineNo">437</span>  }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>}<a name="line.438"></a>
+<span class="sourceLineNo">326</span>  @Override<a name="line.326"></a>
+<span class="sourceLineNo">327</span>  public boolean hasMetaTableRegion() {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    return this.carryingMeta;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  }<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>  @Override<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public ServerOperationType getServerOperationType() {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    return ServerOperationType.CRASH_HANDLER;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  /**<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * For this procedure, yield at end of each successful flow step so that all crashed servers<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * can make progress rather than do the default which has each procedure running to completion<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * before we move to the next. For crashed servers, especially if running with distributed log<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * replay, we will want all servers to come along; we do not want the scenario where a server is<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * stuck waiting for regions to online so it can replay edits.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   */<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  @Override<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  protected boolean isYieldBeforeExecuteFromState(MasterProcedureEnv env, ServerCrashState state) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    return true;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  @Override<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  protected boolean shouldWaitClientAck(MasterProcedureEnv env) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // The operation is triggered internally on the server<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    // the client does not know about this procedure.<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    return false;<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>   * Handle any outstanding RIT that are up against this.serverName, the crashed server.<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * Notify them of crash. Remove assign entries from the passed in &lt;code&gt;regions&lt;/code&gt;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   * otherwise we have two assigns going on and they will fight over who has lock.<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   * Notify Unassigns also.<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   * @param env<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   * @param regions Regions that were on crashed server<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   */<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  private void handleRIT(final MasterProcedureEnv env, final List&lt;HRegionInfo&gt; regions) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    if (regions == null) return;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    AssignmentManager am = env.getMasterServices().getAssignmentManager();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    final Iterator&lt;HRegionInfo&gt; it = regions.iterator();<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    ServerCrashException sce = null;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    while (it.hasNext()) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      final HRegionInfo hri = it.next();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      RegionTransitionProcedure rtp = am.getRegionStates().getRegionTransitionProcedure(hri);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      if (rtp == null) continue;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      // Make sure the RIT is against this crashed server. In the case where there are many<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      // processings of a crashed server -- backed up for whatever reason (slow WAL split) --<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      // then a previous SCP may have already failed an assign, etc., and it may have a new<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      // location target; DO NOT fail these else we make for assign flux.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      ServerName rtpServerName = rtp.getServer(env);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      if (rtpServerName == null) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        LOG.warn("RIT with ServerName null! " + rtp);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        continue;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      }<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      if (!rtpServerName.equals(this.serverName)) continue;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      LOG.info("pid=" + getProcId() + " found RIT " + rtp + "; " +<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        rtp.getRegionState(env).toShortString());<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      // Notify RIT on server crash.<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      if (sce == null) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        sce = new ServerCrashException(getProcId(), getServerName());<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      }<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      rtp.remoteCallFailed(env, this.serverName, sce);<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      if (rtp instanceof AssignProcedure) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        // If an assign, include it in our return and remove from passed-in list of regions.<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        it.remove();<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>  }<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 ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    return env.getMasterServices().getMasterMetrics().getServerCrashProcMetrics();<a name="line.398"></a>
+<span class="sourceLineNo">399</span>  }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>}<a name="line.400"></a>
 
 
 


[26/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
index b3d1843..2e9004e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
@@ -131,3324 +131,3321 @@
 <span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.procedure.ModifyColumnFamilyProcedure;<a name="line.123"></a>
 <span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.124"></a>
 <span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.replication.ReplicationManager;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.procedure2.LockInfo;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.procedure2.ProcedureUtil;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.replication.ReplicationFactory;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.replication.ReplicationQueuesZKImpl;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.replication.master.TableCFsUpdater;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.replication.regionserver.Replication;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.ZKDataMigrator;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.zookeeper.DrainingServerTracker;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.zookeeper.RegionServerTracker;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.zookeeper.SplitOrMergeTracker;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.zookeeper.KeeperException;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.eclipse.jetty.server.Server;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Lists;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Maps;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import com.google.protobuf.Descriptors;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import com.google.protobuf.Service;<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>/**<a name="line.207"></a>
-<span class="sourceLineNo">208</span> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.208"></a>
-<span class="sourceLineNo">209</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.209"></a>
-<span class="sourceLineNo">210</span> * run the cluster.  All others park themselves in their constructor until<a name="line.210"></a>
-<span class="sourceLineNo">211</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.211"></a>
-<span class="sourceLineNo">212</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.212"></a>
-<span class="sourceLineNo">213</span> *<a name="line.213"></a>
-<span class="sourceLineNo">214</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.214"></a>
-<span class="sourceLineNo">215</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.215"></a>
-<span class="sourceLineNo">216</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.216"></a>
-<span class="sourceLineNo">217</span> *<a name="line.217"></a>
-<span class="sourceLineNo">218</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.218"></a>
-<span class="sourceLineNo">219</span> *<a name="line.219"></a>
-<span class="sourceLineNo">220</span> * @see org.apache.zookeeper.Watcher<a name="line.220"></a>
-<span class="sourceLineNo">221</span> */<a name="line.221"></a>
-<span class="sourceLineNo">222</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.222"></a>
-<span class="sourceLineNo">223</span>@SuppressWarnings("deprecation")<a name="line.223"></a>
-<span class="sourceLineNo">224</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private static final Log LOG = LogFactory.getLog(HMaster.class.getName());<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   */<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  private static class InitializationMonitor extends HasThread {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.237"></a>
-<span class="sourceLineNo">238</span>     * true, do nothing otherwise.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>     */<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    public static final boolean HALT_DEFAULT = false;<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>    private final HMaster master;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    private final long timeout;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    private final boolean haltOnTimeout;<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    InitializationMonitor(HMaster master) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      super("MasterInitializationMonitor");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      this.master = master;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      this.setDaemon(true);<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>    @Override<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    public void run() {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      try {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>          Thread.sleep(timeout);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          if (master.isInitialized()) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          } else {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.264"></a>
-<span class="sourceLineNo">265</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.265"></a>
-<span class="sourceLineNo">266</span>            if (haltOnTimeout) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.267"></a>
-<span class="sourceLineNo">268</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.268"></a>
-<span class="sourceLineNo">269</span>              System.exit(-1);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>            }<a name="line.270"></a>
-<span class="sourceLineNo">271</span>          }<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        }<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      } catch (InterruptedException ie) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  //instance into web context.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  public static final String MASTER = "master";<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  // Manager and zk listener for master election<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  private final ActiveMasterManager activeMasterManager;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  // Region server tracker<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  RegionServerTracker regionServerTracker;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  // Draining region server tracker<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  private DrainingServerTracker drainingServerTracker;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  // Tracker for load balancer state<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>  // Tracker for split and merge state<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // Tracker for region normalizer state<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>  //Tracker for master maintenance mode setting<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>  private ClusterSchemaService clusterSchemaService;<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  // Metrics for the HMaster<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  final MetricsMaster metricsMaster;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  // file system manager for the master FS operations<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  private MasterFileSystem fileSystemManager;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  private MasterWalManager walManager;<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  // server manager to deal with region server info<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  private volatile ServerManager serverManager;<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  // manager of assignment nodes in zookeeper<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private AssignmentManager assignmentManager;<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  // manager of replication<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  private ReplicationManager replicationManager;<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  // buffer for "fatal error" notices from region servers<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  // in the cluster. This is only used for assisting<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  // operations/debugging.<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  // flag set after we become the active master (used for testing)<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  private volatile boolean activeMaster = false;<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>  // flag set after we complete initialization once active,<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  // it is not private since it's used in unit tests<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  private final ProcedureEvent initialized = new ProcedureEvent("master initialized");<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>  // flag set after master services are started,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // initialization may have not completed yet.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  volatile boolean serviceStarted = false;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  // flag set after we complete assignMeta.<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  private final ProcedureEvent serverCrashProcessingEnabled =<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    new ProcedureEvent("server crash processing");<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>  // Maximum time we should run balancer for<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  private final int maxBlancingTime;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  // Maximum percent of regions in transition when balancing<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  private final double maxRitPercent;<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private final LockManager lockManager = new LockManager(this);<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>  private LoadBalancer balancer;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  private RegionNormalizer normalizer;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private BalancerChore balancerChore;<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  private RegionNormalizerChore normalizerChore;<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  private ClusterStatusChore clusterStatusChore;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  CatalogJanitor catalogJanitorChore;<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  private ReplicationMetaCleaner replicationMetaCleaner;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private ReplicationZKNodeCleanerChore replicationZKNodeCleanerChore;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  private LogCleaner logCleaner;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  private HFileCleaner hfileCleaner;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  private MobCompactionChore mobCompactChore;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  // used to synchronize the mobCompactionStates<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // save the information of mob compactions in tables.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.364"></a>
-<span class="sourceLineNo">365</span><a name="line.365"></a>
-<span class="sourceLineNo">366</span>  MasterCoprocessorHost cpHost;<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private final boolean preLoadTableDescriptors;<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  // Time stamps for when a hmaster became active<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  private long masterActiveTime;<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private final boolean masterCheckCompression;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>  //should we check encryption settings at master side, default true<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private final boolean masterCheckEncryption;<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>  // monitor for snapshot of hbase tables<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  SnapshotManager snapshotManager;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  // monitor for distributed procedures<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  private MasterProcedureManagerHost mpmHost;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private volatile MasterQuotaManager quotaManager;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private QuotaObserverChore quotaObserverChore;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  private WALProcedureStore procedureStore;<a name="line.393"></a>
-<span class="sourceLineNo">394</span><a name="line.394"></a>
-<span class="sourceLineNo">395</span>  // handle table states<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  private TableStateManager tableStateManager;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  private long splitPlanCount;<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  private long mergePlanCount;<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>  /** flag used in test cases in order to simulate RS failures during master initialization */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  private volatile boolean initializationBeforeMetaAssignment = false;<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  /* Handle favored nodes information */<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  private FavoredNodesManager favoredNodesManager;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  private Server masterJettyServer;<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>  public static class RedirectServlet extends HttpServlet {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    private final int regionServerInfoPort;<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    private final String regionServerHostname;<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>    /**<a name="line.415"></a>
-<span class="sourceLineNo">416</span>     * @param infoServer that we're trying to send all requests to<a name="line.416"></a>
-<span class="sourceLineNo">417</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>     */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>       regionServerInfoPort = infoServer.getPort();<a name="line.420"></a>
-<span class="sourceLineNo">421</span>       regionServerHostname = hostname;<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 doGet(HttpServletRequest request,<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      String redirectHost = regionServerHostname;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      if(redirectHost == null) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        redirectHost = request.getServerName();<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.431"></a>
-<span class="sourceLineNo">432</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.432"></a>
-<span class="sourceLineNo">433</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.433"></a>
-<span class="sourceLineNo">434</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.434"></a>
-<span class="sourceLineNo">435</span>              "to an appropriate hostname.");<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.437"></a>
-<span class="sourceLineNo">438</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.438"></a>
-<span class="sourceLineNo">439</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          return;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      String redirectUrl = request.getScheme() + "://"<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        + request.getRequestURI();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      response.sendRedirect(redirectUrl);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  /**<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * Initializes the HMaster. The steps are as follows:<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * &lt;p&gt;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   * &lt;ol&gt;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * &lt;/ol&gt;<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * &lt;p&gt;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * Remaining steps of initialization occur in<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * the master becomes the active one.<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   */<a name="line.463"></a>
-<span class="sourceLineNo">464</span>  public HMaster(final Configuration conf, CoordinatedStateManager csm)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      throws IOException, KeeperException {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    super(conf, csm);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      conf.getLong("hbase.master.buffer.for.rs.fatals", 1*1024*1024));<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>    LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // Disable usage of meta replicas in the master<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.474"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.replication.ReplicationManager;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.procedure2.LockInfo;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.procedure2.ProcedureUtil;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.replication.ReplicationFactory;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.replication.ReplicationQueuesZKImpl;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.replication.master.TableCFsUpdater;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.replication.regionserver.Replication;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.ZKDataMigrator;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.zookeeper.DrainingServerTracker;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.zookeeper.RegionServerTracker;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.SplitOrMergeTracker;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.zookeeper.KeeperException;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.eclipse.jetty.server.Server;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Lists;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Maps;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import com.google.protobuf.Descriptors;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import com.google.protobuf.Service;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.209"></a>
+<span class="sourceLineNo">210</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.210"></a>
+<span class="sourceLineNo">211</span> * run the cluster.  All others park themselves in their constructor until<a name="line.211"></a>
+<span class="sourceLineNo">212</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.212"></a>
+<span class="sourceLineNo">213</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.213"></a>
+<span class="sourceLineNo">214</span> *<a name="line.214"></a>
+<span class="sourceLineNo">215</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.215"></a>
+<span class="sourceLineNo">216</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.216"></a>
+<span class="sourceLineNo">217</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.217"></a>
+<span class="sourceLineNo">218</span> *<a name="line.218"></a>
+<span class="sourceLineNo">219</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.219"></a>
+<span class="sourceLineNo">220</span> *<a name="line.220"></a>
+<span class="sourceLineNo">221</span> * @see org.apache.zookeeper.Watcher<a name="line.221"></a>
+<span class="sourceLineNo">222</span> */<a name="line.222"></a>
+<span class="sourceLineNo">223</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.223"></a>
+<span class="sourceLineNo">224</span>@SuppressWarnings("deprecation")<a name="line.224"></a>
+<span class="sourceLineNo">225</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  private static final Log LOG = LogFactory.getLog(HMaster.class.getName());<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   */<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  private static class InitializationMonitor extends HasThread {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.238"></a>
+<span class="sourceLineNo">239</span>     * true, do nothing otherwise.<a name="line.239"></a>
+<span class="sourceLineNo">240</span>     */<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public static final boolean HALT_DEFAULT = false;<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>    private final HMaster master;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    private final long timeout;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    private final boolean haltOnTimeout;<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    InitializationMonitor(HMaster master) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      super("MasterInitializationMonitor");<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      this.master = master;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      this.setDaemon(true);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    @Override<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    public void run() {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      try {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          Thread.sleep(timeout);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          if (master.isInitialized()) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          } else {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.265"></a>
+<span class="sourceLineNo">266</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.266"></a>
+<span class="sourceLineNo">267</span>            if (haltOnTimeout) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.268"></a>
+<span class="sourceLineNo">269</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.269"></a>
+<span class="sourceLineNo">270</span>              System.exit(-1);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>            }<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      } catch (InterruptedException ie) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      }<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  //instance into web context.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  public static final String MASTER = "master";<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  // Manager and zk listener for master election<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  private final ActiveMasterManager activeMasterManager;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  // Region server tracker<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  RegionServerTracker regionServerTracker;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  // Draining region server tracker<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  private DrainingServerTracker drainingServerTracker;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  // Tracker for load balancer state<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>  // Tracker for split and merge state<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  // Tracker for region normalizer state<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>  //Tracker for master maintenance mode setting<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>  private ClusterSchemaService clusterSchemaService;<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>  // Metrics for the HMaster<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  final MetricsMaster metricsMaster;<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  // file system manager for the master FS operations<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  private MasterFileSystem fileSystemManager;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  private MasterWalManager walManager;<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  // server manager to deal with region server info<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  private volatile ServerManager serverManager;<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  // manager of assignment nodes in zookeeper<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  private AssignmentManager assignmentManager;<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // manager of replication<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private ReplicationManager replicationManager;<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  // buffer for "fatal error" notices from region servers<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  // in the cluster. This is only used for assisting<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  // operations/debugging.<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  // flag set after we become the active master (used for testing)<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  private volatile boolean activeMaster = false;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // flag set after we complete initialization once active,<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  // it is not private since it's used in unit tests<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  private final ProcedureEvent initialized = new ProcedureEvent("master initialized");<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>  // flag set after master services are started,<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  // initialization may have not completed yet.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  volatile boolean serviceStarted = false;<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  // flag set after we complete assignMeta.<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  private final ProcedureEvent serverCrashProcessingEnabled =<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    new ProcedureEvent("server crash processing");<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  // Maximum time we should run balancer for<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  private final int maxBlancingTime;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  // Maximum percent of regions in transition when balancing<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  private final double maxRitPercent;<a name="line.342"></a>
+<span class="sourceLineNo">343</span><a name="line.343"></a>
+<span class="sourceLineNo">344</span>  private final LockManager lockManager = new LockManager(this);<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private LoadBalancer balancer;<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  private RegionNormalizer normalizer;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  private BalancerChore balancerChore;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private RegionNormalizerChore normalizerChore;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  private ClusterStatusChore clusterStatusChore;<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.351"></a>
+<span class="sourceLineNo">352</span><a name="line.352"></a>
+<span class="sourceLineNo">353</span>  CatalogJanitor catalogJanitorChore;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>  private ReplicationMetaCleaner replicationMetaCleaner;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  private ReplicationZKNodeCleanerChore replicationZKNodeCleanerChore;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  private LogCleaner logCleaner;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  private HFileCleaner hfileCleaner;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  private MobCompactionChore mobCompactChore;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  // used to synchronize the mobCompactionStates<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  // save the information of mob compactions in tables.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  MasterCoprocessorHost cpHost;<a name="line.367"></a>
+<span class="sourceLineNo">368</span><a name="line.368"></a>
+<span class="sourceLineNo">369</span>  private final boolean preLoadTableDescriptors;<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>  // Time stamps for when a hmaster became active<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  private long masterActiveTime;<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private final boolean masterCheckCompression;<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  //should we check encryption settings at master side, default true<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  private final boolean masterCheckEncryption;<a name="line.378"></a>
+<span class="sourceLineNo">379</span><a name="line.379"></a>
+<span class="sourceLineNo">380</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>  // monitor for snapshot of hbase tables<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  SnapshotManager snapshotManager;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  // monitor for distributed procedures<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  private MasterProcedureManagerHost mpmHost;<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.387"></a>
+<span class="sourceLineNo">388</span>  private volatile MasterQuotaManager quotaManager;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  private QuotaObserverChore quotaObserverChore;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.391"></a>
+<span class="sourceLineNo">392</span><a name="line.392"></a>
+<span class="sourceLineNo">393</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private WALProcedureStore procedureStore;<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>  // handle table states<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private TableStateManager tableStateManager;<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>  private long splitPlanCount;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>  private long mergePlanCount;<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>  /* Handle favored nodes information */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  private FavoredNodesManager favoredNodesManager;<a name="line.403"></a>
+<span class="sourceLineNo">404</span><a name="line.404"></a>
+<span class="sourceLineNo">405</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  private Server masterJettyServer;<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  public static class RedirectServlet extends HttpServlet {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    private final int regionServerInfoPort;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    private final String regionServerHostname;<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>    /**<a name="line.413"></a>
+<span class="sourceLineNo">414</span>     * @param infoServer that we're trying to send all requests to<a name="line.414"></a>
+<span class="sourceLineNo">415</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>     */<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>       regionServerInfoPort = infoServer.getPort();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>       regionServerHostname = hostname;<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 doGet(HttpServletRequest request,<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      String redirectHost = regionServerHostname;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      if(redirectHost == null) {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        redirectHost = request.getServerName();<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.429"></a>
+<span class="sourceLineNo">430</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.430"></a>
+<span class="sourceLineNo">431</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.431"></a>
+<span class="sourceLineNo">432</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.432"></a>
+<span class="sourceLineNo">433</span>              "to an appropriate hostname.");<a name="line.433"></a>
+<span class="sourceLineNo">434</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.434"></a>
+<span class="sourceLineNo">435</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.435"></a>
+<span class="sourceLineNo">436</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.436"></a>
+<span class="sourceLineNo">437</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          return;<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>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      String redirectUrl = request.getScheme() + "://"<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        + request.getRequestURI();<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      response.sendRedirect(redirectUrl);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  }<a name="line.448"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   * Initializes the HMaster. The steps are as follows:<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   * &lt;p&gt;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * &lt;ol&gt;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.454"></a>
+<span class="sourceLineNo">455</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.455"></a>
+<span class="sourceLineNo">456</span>   * &lt;/ol&gt;<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   * &lt;p&gt;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * Remaining steps of initialization occur in<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * the master becomes the active one.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  public HMaster(final Configuration conf, CoordinatedStateManager csm)<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      throws IOException, KeeperException {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    super(conf, csm);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      conf.getLong("hbase.master.buffer.for.rs.fatals", 1*1024*1024));<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>    LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.469"></a>
+<span class="sourceLineNo">470</span><a name="line.470"></a>
+<span class="sourceLineNo">471</span>    // Disable usage of meta replicas in the master<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span>    Replication.decorateMasterConfiguration(this.conf);<a name="line.474"></a>
 <span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    Replication.decorateMasterConfiguration(this.conf);<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>    // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    // config param for task trackers, but we can piggyback off of it.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<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>    // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>    // should we check encryption settings at master side, default true<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.488"></a>
+<span class="sourceLineNo">476</span>    // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    // config param for task trackers, but we can piggyback off of it.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<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">482</span>    // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.483"></a>
+<span class="sourceLineNo">484</span><a name="line.484"></a>
+<span class="sourceLineNo">485</span>    // should we check encryption settings at master side, default true<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.486"></a>
+<span class="sourceLineNo">487</span><a name="line.487"></a>
+<span class="sourceLineNo">488</span>    this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.488"></a>
 <span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.490"></a>
-<span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>    // preload table descriptor at startup<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>    this.maxBlancingTime = getMaxBalancingTime();<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.497"></a>
+<span class="sourceLineNo">490</span>    // preload table descriptor at startup<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.491"></a>
+<span class="sourceLineNo">492</span><a name="line.492"></a>
+<span class="sourceLineNo">493</span>    this.maxBlancingTime = getMaxBalancingTime();<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>    // Do we publish the status?<a name="line.497"></a>
 <span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    // Do we publish the status?<a name="line.499"></a>
-<span class="sourceLineNo">500</span><a name="line.500"></a>
-<span class="sourceLineNo">501</span>    boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    Class&lt;? extends ClusterStatusPublisher.Publisher&gt; publisherClass =<a name="line.503"></a>
-<span class="sourceLineNo">504</span>        conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.504"></a>
-<span class="sourceLineNo">505</span>            ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.505"></a>
-<span class="sourceLineNo">506</span>            ClusterStatusPublisher.Publisher.class);<a name="line.506"></a>
-<span class="sourceLineNo">507</span><a name="line.507"></a>
-<span class="sourceLineNo">508</span>    if (shouldPublish) {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      if (publisherClass == null) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.510"></a>
-<span class="sourceLineNo">511</span>            ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.511"></a>
-<span class="sourceLineNo">512</span>            " is not set - not publishing status");<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      } else {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>        getChoreService().scheduleChore(clusterStatusPublisherChore);<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><a name="line.518"></a>
-<span class="sourceLineNo">519</span>    // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      setInitLatch(new CountDownLatch(1));<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      activeMasterManager = new ActiveMasterManager(zooKeeper, this.serverName, this);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      int infoPort = putUpJettyServer();<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      startActiveMasterManager(infoPort);<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    } else {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      activeMasterManager = null;<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>  // return the actual infoPort, -1 means disable info server.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>  private int putUpJettyServer() throws IOException {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    if (!conf.getBoolean("hbase.master.infoserver.redirect", true)) {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      return -1;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    final int infoPort = conf.getInt("hbase.master.info.port.orig",<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      HConstants.DEFAULT_MASTER_INFOPORT);<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    // -1 is for disabling info server, so no redirecting<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    if (infoPort &lt; 0 || infoServer == null) {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      return -1;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    }<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    if(infoPort == infoServer.getPort()) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      return infoPort;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    final String addr = conf.get("hbase.master.info.bindAddress", "0.0.0.0");<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    if (!Addressing.isLocalAddress(InetAddress.getByName(addr))) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      String msg =<a name="line.546"></a>
-<span class="sourceLineNo">547</span>          "Failed to start redirecting jetty server. Address " + addr<a name="line.547"></a>
-<span class="sourceLineNo">548</span>              + " does not belong to this host. Correct configuration parameter: "<a name="line.548"></a>
-<span class="sourceLineNo">549</span>              + "hbase.master.info.bindAddress";<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      LOG.error(msg);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      throw new IOException(msg);<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>    // TODO I'm pretty sure we could just add another binding to the InfoServer run by<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    // the RegionServer and have it run the RedirectServlet instead of standing up<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    // a second entire stack here.<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    masterJettyServer = new Server();<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    final ServerConnector connector = new ServerConnector(masterJettyServer);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    connector.setHost(addr);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>    connector.setPort(infoPort);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    masterJettyServer.addConnector(connector);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    masterJettyServer.setStopAtShutdown(true);<a name="line.562"></a>
+<span class="sourceLineNo">499</span>    boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.499"></a>
+<span class="sourceLineNo">500</span>        HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    Class&lt;? extends ClusterStatusPublisher.Publisher&gt; publisherClass =<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.502"></a>
+<span class="sourceLineNo">503</span>            ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.503"></a>
+<span class="sourceLineNo">504</span>            ClusterStatusPublisher.Publisher.class);<a name="line.504"></a>
+<span class="sourceLineNo">505</span><a name="line.505"></a>
+<span class="sourceLineNo">506</span>    if (shouldPublish) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      if (publisherClass == null) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>        LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.508"></a>
+<span class="sourceLineNo">509</span>            ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.509"></a>
+<span class="sourceLineNo">510</span>            " is not set - not publishing status");<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      } else {<a name="line.511"></a>
+<span class="sourceLineNo">512</span>        clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>        getChoreService().scheduleChore(clusterStatusPublisherChore);<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><a

<TRUNCATED>

[15/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html
index 38cee64..d900251 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html
@@ -220,1065 +220,1075 @@
 <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>    final Procedure pollResult = rq.peek();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      removeFromRunQueue(fairq, rq);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      return null;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>    rq.poll();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    if (rq.isEmpty() || xlockReq) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      removeFromRunQueue(fairq, rq);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      // if the rq is in the fairq because of runnable child<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      // check if the next procedure is still a child.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      Procedure nextProc = rq.peek();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        removeFromRunQueue(fairq, rq);<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>    return pollResult;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">215</span>    if (pollResult == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      return null;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      removeFromRunQueue(fairq, rq);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      return null;<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>    rq.poll();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    if (rq.isEmpty() || xlockReq) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      removeFromRunQueue(fairq, rq);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      // if the rq is in the fairq because of runnable child<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      // check if the next procedure is still a child.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      Procedure nextProc = rq.peek();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        removeFromRunQueue(fairq, rq);<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      String resourceName, LockAndQueue queue) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    LockInfo info = new LockInfo();<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    info.setResourceType(resourceType);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    info.setResourceName(resourceName);<a name="line.243"></a>
+<span class="sourceLineNo">238</span>    return pollResult;<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      String resourceName, LockAndQueue queue) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    LockInfo info = new LockInfo();<a name="line.243"></a>
 <span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    if (queue.hasExclusiveLock()) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.246"></a>
+<span class="sourceLineNo">245</span>    info.setResourceType(resourceType);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    info.setResourceName(resourceName);<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      info.setSharedLockCount(queue.getSharedLockCount());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        continue;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.263"></a>
+<span class="sourceLineNo">248</span>    if (queue.hasExclusiveLock()) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      info.setSharedLockCount(queue.getSharedLockCount());<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>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        continue;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
 <span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>      switch (lockProcedure.getType()) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      case EXCLUSIVE:<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        break;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      case SHARED:<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.270"></a>
+<span class="sourceLineNo">265</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>      switch (lockProcedure.getType()) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      case EXCLUSIVE:<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.270"></a>
 <span class="sourceLineNo">271</span>        break;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.275"></a>
+<span class="sourceLineNo">272</span>      case SHARED:<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        break;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
 <span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">277</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.278"></a>
 <span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return info;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">280</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
 <span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Override<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    schedLock();<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.288"></a>
+<span class="sourceLineNo">283</span>    return info;<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>  @Override<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    schedLock();<a name="line.288"></a>
 <span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          .entrySet()) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        String serverName = entry.getKey().getServerName();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        LockAndQueue queue = entry.getValue();<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>        if (queue.isLocked()) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              serverName, queue);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          lockInfos.add(lockInfo);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          .entrySet()) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        String namespaceName = entry.getKey();<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        LockAndQueue queue = entry.getValue();<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>        if (queue.isLocked()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              namespaceName, queue);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>          lockInfos.add(lockInfo);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        }<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.314"></a>
-<span class="sourceLineNo">315</span>          .entrySet()) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        String tableName = entry.getKey().getNameAsString();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        LockAndQueue queue = entry.getValue();<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>        if (queue.isLocked()) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.320"></a>
-<span class="sourceLineNo">321</span>              tableName, queue);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          lockInfos.add(lockInfo);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        String regionName = entry.getKey();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        LockAndQueue queue = entry.getValue();<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>        if (queue.isLocked()) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              regionName, queue);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          lockInfos.add(lockInfo);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      }<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>      return lockInfos;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    } finally {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      schedUnlock();<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>  @Override<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    LockAndQueue queue = null;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    schedLock();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    try {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      switch (resourceType) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        case SERVER:<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.350"></a>
-<span class="sourceLineNo">351</span>          break;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        case NAMESPACE:<a name="line.352"></a>
-<span class="sourceLineNo">353</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.353"></a>
+<span class="sourceLineNo">290</span>    try {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          .entrySet()) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        String serverName = entry.getKey().getServerName();<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        LockAndQueue queue = entry.getValue();<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>        if (queue.isLocked()) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              serverName, queue);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          lockInfos.add(lockInfo);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          .entrySet()) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        String namespaceName = entry.getKey();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        LockAndQueue queue = entry.getValue();<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>        if (queue.isLocked()) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.311"></a>
+<span class="sourceLineNo">312</span>              namespaceName, queue);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>          lockInfos.add(lockInfo);<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>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.317"></a>
+<span class="sourceLineNo">318</span>          .entrySet()) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        String tableName = entry.getKey().getNameAsString();<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        LockAndQueue queue = entry.getValue();<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>        if (queue.isLocked()) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.323"></a>
+<span class="sourceLineNo">324</span>              tableName, queue);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>          lockInfos.add(lockInfo);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        String regionName = entry.getKey();<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        LockAndQueue queue = entry.getValue();<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>        if (queue.isLocked()) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.334"></a>
+<span class="sourceLineNo">335</span>              regionName, queue);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          lockInfos.add(lockInfo);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return lockInfos;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    } finally {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      schedUnlock();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    LockAndQueue queue = null;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    schedLock();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    try {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      switch (resourceType) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        case SERVER:<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.353"></a>
 <span class="sourceLineNo">354</span>          break;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        case TABLE:<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.356"></a>
+<span class="sourceLineNo">355</span>        case NAMESPACE:<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.356"></a>
 <span class="sourceLineNo">357</span>          break;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        case REGION:<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          queue = locking.regionLocks.get(resourceName);<a name="line.359"></a>
+<span class="sourceLineNo">358</span>        case TABLE:<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.359"></a>
 <span class="sourceLineNo">360</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    } finally {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      schedUnlock();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public void clear() {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    schedLock();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    try {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      clearQueue();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      locking.clear();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    } finally {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      schedUnlock();<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>  protected void clearQueue() {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    // Remove Servers<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      serverBuckets[i] = null;<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>    // Remove Tables<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    tableMap = null;<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
+<span class="sourceLineNo">361</span>        case REGION:<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          queue = locking.regionLocks.get(resourceName);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    } finally {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      schedUnlock();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  @Override<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  public void clear() {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    schedLock();<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    try {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      clearQueue();<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      locking.clear();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    } finally {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      schedUnlock();<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><a name="line.382"></a>
+<span class="sourceLineNo">383</span>  protected void clearQueue() {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // Remove Servers<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      serverBuckets[i] = null;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>    // Remove Tables<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    tableMap = null;<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    while (treeMap != null) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Override<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  protected int queueSize() {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    int count = 0;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // Server queues<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      while (serverIter.hasNext()) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        count += serverIter.next().size();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>    // Table queues<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    while (tableIter.hasNext()) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      count += tableIter.next().size();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    return count;<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 completionCleanup(final Procedure proc) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    if (proc instanceof TableProcedureInterface) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      boolean tableDeleted;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (proc.hasException()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          // create failed because the table already exist<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        } else {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          // the operation failed because the table does not exist<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      } else {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        // the table was deleted<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if (tableDeleted) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        return;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    } else {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      return;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      fairq.add(queue);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      fairq.remove(queue);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>  // ============================================================================<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  //  Table Queue Lookup Helpers<a name="line.466"></a>
-<span class="sourceLineNo">467</span>  // ============================================================================<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    if (node != null) return node;<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    return node;<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private void removeTableQueue(TableName tableName) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    locking.removeTableLock(tableName);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  }<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    return proc instanceof TableProcedureInterface;<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>  private static TableName getTableName(Procedure proc) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  }<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>  //  Server Queue Lookup Helpers<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  // ============================================================================<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    if (node != null) return node;<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    return node;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  }<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    return Math.abs(hashCode) % buckets.length;<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>  private static boolean isServerProcedure(Procedure proc) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  // ============================================================================<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  //  Table and Server Queue Implementation<a name="line.518"></a>
-<span class="sourceLineNo">519</span>  // ============================================================================<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    @Override<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      return node.compareKey((ServerName)key);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      super(serverName, serverLock);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>    @Override<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      switch (spi.getServerOperationType()) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        case CRASH_HANDLER:<a name="line.536"></a>
-<span class="sourceLineNo">537</span>          return true;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        default:<a name="line.538"></a>
-<span class="sourceLineNo">539</span>          break;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      }<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    @Override<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    public int compareKey(TableQueue node, Object key) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      return node.compareKey((TableName)key);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    }<a name="line.549"></a>
-<span class="sourceLineNo">550</span>  }<a name="line.550"></a>
-<span class="sourceLineNo">551</span><a name="line.551"></a>
-<span class="sourceLineNo">552</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    private final LockStatus namespaceLockStatus;<a name="line.553"></a>
+<span class="sourceLineNo">394</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    while (treeMap != null) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  @Override<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  protected int queueSize() {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    int count = 0;<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>    // Server queues<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      while (serverIter.hasNext()) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        count += serverIter.next().size();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>    // Table queues<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    while (tableIter.hasNext()) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      count += tableIter.next().size();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    return count;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  @Override<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  public void completionCleanup(final Procedure proc) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    if (proc instanceof TableProcedureInterface) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      boolean tableDeleted;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      if (proc.hasException()) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>          // create failed because the table already exist<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        } else {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          // the operation failed because the table does not exist<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      } else {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        // the table was deleted<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      }<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      if (tableDeleted) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        return;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      }<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } else {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      return;<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><a name="line.454"></a>
+<span class="sourceLineNo">455</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      fairq.add(queue);<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>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      fairq.remove(queue);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  }<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>  // ============================================================================<a name="line.468"></a>
+<span class="sourceLineNo">469</span>  //  Table Queue Lookup Helpers<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  // ============================================================================<a name="line.470"></a>
+<span class="sourceLineNo">471</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    if (node != null) return node;<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    return node;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  }<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>  private void removeTableQueue(TableName tableName) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    locking.removeTableLock(tableName);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span><a name="line.486"></a>
+<span class="sourceLineNo">487</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    return proc instanceof TableProcedureInterface;<a name="line.488"></a>
+<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>  private static TableName getTableName(Procedure proc) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  }<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>  // ============================================================================<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  //  Server Queue Lookup Helpers<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  // ============================================================================<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    if (node != null) return node;<a name="line.501"></a>
+<span class="sourceLineNo">502</span><a name="line.502"></a>
+<span class="sourceLineNo">503</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    return node;<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>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return Math.abs(hashCode) % buckets.length;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>  private static boolean isServerProcedure(Procedure proc) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
+<span class="sourceLineNo">519</span><a name="line.519"></a>
+<span class="sourceLineNo">520</span>  // ============================================================================<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  //  Table and Server Queue Implementation<a name="line.521"></a>
+<span class="sourceLineNo">522</span>  // ============================================================================<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    @Override<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      return node.compareKey((ServerName)key);<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>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      super(serverName, serverLock);<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>    @Override<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      switch (spi.getServerOperationType()) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        case CRASH_HANDLER:<a name="line.539"></a>
+<span class="sourceLineNo">540</span>          return true;<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        default:<a name="line.541"></a>
+<span class="sourceLineNo">542</span>          break;<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    @Override<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    public int compareKey(TableQueue node, Object key) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      return node.compareKey((TableName)key);<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><a name="line.554"></a>
-<span class="sourceLineNo">555</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        LockStatus namespaceLockStatus) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      super(tableName, priority, tableLock);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      this.namespaceLockStatus = namespaceLockStatus;<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>    @Override<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    public boolean isAvailable() {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      // we can't execute operation on this table<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>        return false;<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>      if (getLockStatus().hasExclusiveLock()) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        // if we have an exclusive lock already taken<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        // only child of the lock owner can be executed<a name="line.571"></a>
-<span class="sourceLineNo">572</span>        final Procedure nextProc = peek();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>      // no xlock<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return true;<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>    @Override<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
-<span class="sourceLineNo">585</span><a name="line.585"></a>
-<span class="sourceLineNo">586</span>  // ============================================================================<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  //  Table Locking Helpers<a name="line.587"></a>
-<span class="sourceLineNo">588</span>  // ============================================================================<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    switch (proc.getTableOperationType()) {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      case CREATE:<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      case DELETE:<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      case DISABLE:<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      case ENABLE:<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        return true;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      case EDIT:<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        // we allow concurrent edit on the NS table<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      case READ:<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        return false;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      // region operations are using the shared-lock on the table<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      // and then they will grab an xlock on the region.<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      case REGION_SPLIT:<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      case REGION_MERGE:<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      case REGION_ASSIGN:<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      case REGION_UNASSIGN:<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      case REGION_EDIT:<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      case REGION_GC:<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      case MERGED_REGIONS_GC:<a name="line.609"></a>
-<span class="sourceLineNo">610</span>        return false;<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      default:<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        break;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    }<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        proc.getTableOperationType());<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  /**<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * Get lock info for a resource of specified type and name and log details<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   */<a name="line.620"></a>
-<span class="sourceLineNo">621</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    if (!LOG.isDebugEnabled()) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      return;<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    if (lockInfo != null) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.628"></a>
-<span class="sourceLineNo">629</span>          lockInfo.getSharedLockCount();<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      if (proc != null) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      }<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      LOG.debug(msg);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    }<a name="line.636"></a>
-<span class="sourceLineNo">637</span>  }<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>  /**<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   * Suspend the procedure if the specified table is already locked.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.641"></a>
-<span class="sourceLineNo">642</span>   * @param procedure the procedure trying to acquire the lock<a name="line.642"></a>
-<span class="sourceLineNo">643</span>   * @param table Table to lock<a name="line.643"></a>
-<span class="sourceLineNo">644</span>   * @return true if the procedure has to wait for the table to be available<a name="line.644"></a>
-<span class="sourceLineNo">645</span>   */<a name="line.645"></a>
-<span class="sourceLineNo">646</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    schedLock();<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    try {<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      final String namespace = table.getNamespaceAsString();<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      if (!namespaceLock.trySharedLock()) {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>        waitProcedure(namespaceLock, procedure);<a name="line.653"></a>
-<span class="sourceLineNo">654</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        return true;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      if (!tableLock.tryExclusiveLock(procedure)) {<a name="line.657"></a>
-<span class="sourceLineNo">658</span>        namespaceLock.releaseSharedLock();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>        waitProcedure(tableLock, procedure);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.TABLE, table.getNameAsString());<a name="line.660"></a>
+<span class="sourceLineNo">555</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    private final LockStatus namespaceLockStatus;<a name="line.556"></a>
+<span class="sourceLineNo">557</span><a name="line.557"></a>
+<span class="sourceLineNo">558</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>        LockStatus namespaceLockStatus) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      super(tableName, priority, tableLock);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      this.namespaceLockStatus = namespaceLockStatus;<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    }<a name="line.562"></a>
+<span class="sourceLineNo">563</span><a name="line.563"></a>
+<span class="sourceLineNo">564</span>    @Override<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    public boolean isAvailable() {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      // we can't execute operation on this table<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.568"></a>
+<span class="sourceLineNo">569</span>        return false;<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      }<a name="line.570"></a>
+<span class="sourceLineNo">571</span><a name="line.571"></a>
+<span class="sourceLineNo">572</span>      if (getLockStatus().hasExclusiveLock()) {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>        // if we have an exclusive lock already taken<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        // only child of the lock owner can be executed<a name="line.574"></a>
+<span class="sourceLineNo">575</span>        final Procedure nextProc = peek();<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>      // no xlock<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      return true;<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
+<span class="sourceLineNo">582</span><a name="line.582"></a>
+<span class="sourceLineNo">583</span>    @Override<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    }<a name="line.586"></a>
+<span class="sourceLineNo">587</span>  }<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>  // ============================================================================<a name="line.589"></a>
+<span class="sourceLineNo">590</span>  //  Table Locking Helpers<a name="line.590"></a>
+<span class="sourceLineNo">591</span>  // ============================================================================<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  /**<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @param proc must not be null<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   */<a name="line.594"></a>
+<span class="sourceLineNo">595</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    switch (proc.getTableOperationType()) {<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      case CREATE:<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      case DELETE:<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      case DISABLE:<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      case ENABLE:<a name="line.600"></a>
+<span class="sourceLineNo">601</span>        return true;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      case EDIT:<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        // we allow concurrent edit on the NS table<a name="line.603"></a>
+<span class="sourceLineNo">604</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      case READ:<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        return false;<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      // region operations are using the shared-lock on the table<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      // and then they will grab an xlock on the region.<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      case REGION_SPLIT:<a name="line.609"></a>
+<span class="sourceLineNo">610</span>      case REGION_MERGE:<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      case REGION_ASSIGN:<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      case REGION_UNASSIGN:<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      case REGION_EDIT:<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      case REGION_GC:<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      case MERGED_REGIONS_GC:<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        return false;<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      default:<a name="line.617"></a>
+<span class="sourceLineNo">618</span>        break;<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    }<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.620"></a>
+<span class="sourceLineNo">621</span>        proc.getTableOperationType());<a name="line.621"></a>
+<span class="sourceLineNo">622</span>  }<a name="line.622"></a>
+<span class="sourceLineNo">623</span><a name="line.623"></a>
+<span class="sourceLineNo">624</span>  /**<a name="line.624"></a>
+<span class="sourceLineNo">625</span>   * Get lock info for a resource of specified type and name and log details<a name="line.625"></a>
+<span class="sourceLineNo">626</span>   */<a name="line.626"></a>
+<span class="sourceLineNo">627</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    if (!LOG.isDebugEnabled()) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>      return;<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>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    if (lockInfo != null) {<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.634"></a>
+<span class="sourceLineNo">635</span>          lockInfo.getSharedLockCount();<a name="line.635"></a>
+<span class="sourceLineNo">636</span><a name="line.636"></a>
+<span class="sourceLineNo">637</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.637"></a>
+<span class="sourceLineNo">638</span>      if (proc != null) {<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      }<a name="line.640"></a>
+<span class="sourceLineNo">641</span>      LOG.debug(msg);<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>  }<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   * Suspend the procedure if the specified table is already locked.<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.647"></a>
+<span class="sourceLineNo">648</span>   * @param procedure the procedure trying to acquire the lock<a name="line.648"></a>
+<span class="sourceLineNo">649</span>   * @param table Table to lock<a name="line.649"></a>
+<span class="sourceLineNo">650</span>   * @return true if the procedure has to wait for the table to be available<a name="line.650"></a>
+<span class="sourceLineNo">651</span>   */<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    schedLock();<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    try {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>      final String namespace = table.getNamespaceAsString();<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      if (!namespaceLock.trySharedLock()) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>        waitProcedure(namespaceLock, procedure);<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.660"></a>
 <span class="sourceLineNo">661</span>        return true;<a name="line.661"></a>
 <span class="sourceLineNo">662</span>      }<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      removeFromRunQueue(tableRunQueue, getTableQueue(table));<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      return false;<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    } finally {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      schedUnlock();<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  }<a name="line.668"></a>
-<span class="sourceLineNo">669</span><a name="line.669"></a>
-<span class="sourceLineNo">670</span>  /**<a name="line.670"></a>
-<span class="sourceLineNo">671</span>   * Wake the procedures waiting for the specified table<a name="line.671"></a>
-<span class="sourceLineNo">672</span>   * @param procedure the procedure releasing the lock<a name="line.672"></a>
-<span class="sourceLineNo">673</span>   * @param table the name of the table that has the exclusive lock<a name="line.673"></a>
-<span class="sourceLineNo">674</span>   */<a name="line.674"></a>
-<span class="sourceLineNo">675</span>  public void wakeTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    schedLock();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    try {<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(table.getNamespaceAsString());<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      int waitingCount = 0;<a name="line.680"></a>
-<span class="sourceLineNo">681</span><a name="line.681"></a>
-<span class="sourceLineNo">682</span>      if (!tableLock.hasParentLock(procedure)) {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>        tableLock.releaseExclusiveLock(procedure);<a name="line.683"></a>
-<span class="sourceLineNo">684</span>        waitingCount += wakeWaitingProcedures(tableLock);<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      }<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      if (namespaceLock.releaseSharedLock()) {<a name="line.686"></a>
-<span class="sourceLineNo">687</span>        waitingCount += wakeWaitingProcedures(namespaceLock);<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      }<a name="line.688"></a>
-<span class="sourceLineNo">689</span>      addToRunQueue(tableRunQueue, getTableQueue(table));<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      wakePollIfNeeded(waitingCount);<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    } finally {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>      schedUnlock();<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><a name="line.695"></a>
-<span class="sourceLineNo">696</span>  /**<a name="line.696"></a>
-<span class="sourceLineNo">697</span>   * Suspend the procedure if the specified table is already locked.<a name="line.697"></a>
-<span class="sourceLineNo">698</span>   * other "read" operations in the table-queue may be executed concurrently,<a name="line.698"></a>
-<span class="sourceLineNo">699</span>   * @param procedure the procedure trying to acquire the lock<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   * @param table Table to lock<a name="line.700"></a>
-<span class="sourceLineNo">701</span>   * @return true if the procedure has to wait for the table to be available<a name="line.701"></a>
-<span class="sourceLineNo">702</span>   */<a name="line.702"></a>
-<span class="sourceLineNo">703</span>  public boolean waitTableSharedLock(final Procedure procedure, final TableName table) {<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    return waitTableQueueSharedLock(procedure, table) == null;<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>  private TableQueue waitTableQueueSharedLock(final Procedure procedure, final TableName table) {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    schedLock();<a name="line.708"></a>
-<span class="sourceLi

<TRUNCATED>

[10/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html
index 630242a..e4db24e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html
@@ -67,231 +67,257 @@
 <span class="sourceLineNo">059</span><a name="line.59"></a>
 <span class="sourceLineNo">060</span>  private List&lt;Procedure&lt;TEnvironment&gt;&gt; subProcList = null;<a name="line.60"></a>
 <span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  protected enum Flow {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    HAS_MORE_STATE,<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    NO_MORE_STATE,<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  }<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>   * called to perform a single step of the specified 'state' of the procedure<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   * @param state state to execute<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   * @return Flow.NO_MORE_STATE if the procedure is completed,<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   *         Flow.HAS_MORE_STATE if there is another step.<a name="line.71"></a>
-<span class="sourceLineNo">072</span>   */<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  protected abstract Flow executeFromState(TEnvironment env, TState state)<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException;<a name="line.74"></a>
+<span class="sourceLineNo">062</span>  protected final int getCycles() {<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    return cycles;<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>  /**<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   * Cycles on same state. Good for figuring if we are stuck.<a name="line.67"></a>
+<span class="sourceLineNo">068</span>   */<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private int cycles = 0;<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>   * Ordinal of the previous state. So we can tell if we are progressing or not.<a name="line.72"></a>
+<span class="sourceLineNo">073</span>   */<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private int previousState;<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>   * called to perform the rollback of the specified state<a name="line.77"></a>
-<span class="sourceLineNo">078</span>   * @param state state to rollback<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * @throws IOException temporary failure, the rollback will retry later<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  protected abstract void rollbackState(TEnvironment env, TState state)<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    throws IOException, InterruptedException;<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>  /**<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * Convert an ordinal (or state id) to an Enum (or more descriptive) state object.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   * @param stateId the ordinal() of the state enum (or state id)<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   * @return the state enum object<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   */<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  protected abstract TState getState(int stateId);<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  /**<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   * Convert the Enum (or more descriptive) state object to an ordinal (or state id).<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   * @param state the state enum object<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   * @return stateId the ordinal() of the state enum (or state id)<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  protected abstract int getStateId(TState state);<a name="line.96"></a>
+<span class="sourceLineNo">076</span>  protected enum Flow {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    HAS_MORE_STATE,<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    NO_MORE_STATE,<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  /**<a name="line.81"></a>
+<span class="sourceLineNo">082</span>   * called to perform a single step of the specified 'state' of the procedure<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   * @param state state to execute<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   * @return Flow.NO_MORE_STATE if the procedure is completed,<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   *         Flow.HAS_MORE_STATE if there is another step.<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   */<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  protected abstract Flow executeFromState(TEnvironment env, TState state)<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException;<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>   * called to perform the rollback of the specified state<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   * @param state state to rollback<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   * @throws IOException temporary failure, the rollback will retry later<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  protected abstract void rollbackState(TEnvironment env, TState state)<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    throws IOException, InterruptedException;<a name="line.96"></a>
 <span class="sourceLineNo">097</span><a name="line.97"></a>
 <span class="sourceLineNo">098</span>  /**<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * Return the initial state object that will be used for the first call to executeFromState().<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * @return the initial state enum object<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   */<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  protected abstract TState getInitialState();<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>   * Set the next state for the procedure.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * @param state the state enum object<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  protected void setNextState(final TState state) {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    setNextState(getStateId(state));<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    failIfAborted();<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  }<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * By default, the executor will try ro run all the steps of the procedure start to finish.<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * Return true to make the executor yield between execution steps to<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * give other procedures time to run their steps.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   * @param state the state we are going to execute next.<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   * @return Return true if the executor should yield before the execution of the specified step.<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   *         Defaults to return false.<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  protected boolean isYieldBeforeExecuteFromState(TEnvironment env, TState state) {<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>   * Add a child procedure to execute<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * @param subProcedure the child procedure<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  protected void addChildProcedure(Procedure&lt;TEnvironment&gt;... subProcedure) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    if (subProcedure == null) return;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    final int len = subProcedure.length;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    if (len == 0) return;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    if (subProcList == null) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      subProcList = new ArrayList&lt;&gt;(len);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    }<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    for (int i = 0; i &lt; len; ++i) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      Procedure&lt;TEnvironment&gt; proc = subProcedure[i];<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      if (!proc.hasOwner()) proc.setOwner(getOwner());<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      subProcList.add(proc);<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><a name="line.142"></a>
-<span class="sourceLineNo">143</span>  @Override<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  protected Procedure[] execute(final TEnvironment env)<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    updateTimestamp();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    try {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      failIfAborted();<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>      if (!hasMoreState() || isFailed()) return null;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      TState state = getCurrentState();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      if (stateCount == 0) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        setNextState(getStateId(state));<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      }<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      stateFlow = executeFromState(env, state);<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      if (!hasMoreState()) setNextState(EOF_STATE);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      if (subProcList != null &amp;&amp; !subProcList.isEmpty()) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        Procedure[] subProcedures = subProcList.toArray(new Procedure[subProcList.size()]);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        subProcList = null;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        return subProcedures;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      }<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      return (isWaiting() || isFailed() || !hasMoreState()) ? null : new Procedure[] {this};<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    } finally {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      updateTimestamp();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  }<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>  @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  protected void rollback(final TEnvironment env)<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      throws IOException, InterruptedException {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    if (isEofState()) stateCount--;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    try {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      updateTimestamp();<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      rollbackState(env, getCurrentState());<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      stateCount--;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    } finally {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      updateTimestamp();<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">099</span>   * Convert an ordinal (or state id) to an Enum (or more descriptive) state object.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * @param stateId the ordinal() of the state enum (or state id)<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * @return the state enum object<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   */<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  protected abstract TState getState(int stateId);<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>   * Convert the Enum (or more descriptive) state object to an ordinal (or state id).<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @param state the state enum object<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @return stateId the ordinal() of the state enum (or state id)<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  protected abstract int getStateId(TState state);<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>  /**<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   * Return the initial state object that will be used for the first call to executeFromState().<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * @return the initial state enum object<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  protected abstract TState getInitialState();<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  /**<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   * Set the next state for the procedure.<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * @param state the state enum object<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  protected void setNextState(final TState state) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    setNextState(getStateId(state));<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    failIfAborted();<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>   * By default, the executor will try ro run all the steps of the procedure start to finish.<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * Return true to make the executor yield between execution steps to<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * give other procedures time to run their steps.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * @param state the state we are going to execute next.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * @return Return true if the executor should yield before the execution of the specified step.<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   *         Defaults to return false.<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   */<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  protected boolean isYieldBeforeExecuteFromState(TEnvironment env, TState state) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    return false;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  /**<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * Add a child procedure to execute<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   * @param subProcedure the child procedure<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   */<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  protected void addChildProcedure(Procedure&lt;TEnvironment&gt;... subProcedure) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    if (subProcedure == null) return;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    final int len = subProcedure.length;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    if (len == 0) return;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    if (subProcList == null) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      subProcList = new ArrayList&lt;&gt;(len);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    for (int i = 0; i &lt; len; ++i) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      Procedure&lt;TEnvironment&gt; proc = subProcedure[i];<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      if (!proc.hasOwner()) proc.setOwner(getOwner());<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      subProcList.add(proc);<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>  @Override<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  protected Procedure[] execute(final TEnvironment env)<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    updateTimestamp();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    try {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      failIfAborted();<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>      if (!hasMoreState() || isFailed()) return null;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      TState state = getCurrentState();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      if (stateCount == 0) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        setNextState(getStateId(state));<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>      if (LOG.isTraceEnabled()) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        LOG.trace(state  + " " + this + "; cycles=" + this.cycles);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      // Keep running count of cycles<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      if (getStateId(state) != this.previousState) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        this.previousState = getStateId(state);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        this.cycles = 0;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      } else {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        this.cycles++;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
 <span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>  private boolean isEofState() {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    return stateCount &gt; 0 &amp;&amp; states[stateCount-1] == EOF_STATE;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  protected boolean abort(final TEnvironment env) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    final boolean isDebugEnabled = LOG.isDebugEnabled();<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    final TState state = getCurrentState();<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    if (isDebugEnabled) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      LOG.debug("abort requested for " + this + " state=" + state);<a name="line.190"></a>
+<span class="sourceLineNo">181</span>      stateFlow = executeFromState(env, state);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      if (!hasMoreState()) setNextState(EOF_STATE);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      if (subProcList != null &amp;&amp; !subProcList.isEmpty()) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        Procedure[] subProcedures = subProcList.toArray(new Procedure[subProcList.size()]);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        subProcList = null;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        return subProcedures;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      return (isWaiting() || isFailed() || !hasMoreState()) ? null : new Procedure[] {this};<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    } finally {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      updateTimestamp();<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>    if (hasMoreState()) {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      aborted.set(true);<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return true;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    } else if (isDebugEnabled) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      LOG.debug("ignoring abort request on state=" + state + " for " + this);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    return false;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  }<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>  /**<a name="line.202"></a>
-<span class="sourceLineNo">203</span>   * If procedure has more states then abort it otherwise procedure is finished and abort can be<a name="line.203"></a>
-<span class="sourceLineNo">204</span>   * ignored.<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   */<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  protected final void failIfAborted() {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    if (aborted.get()) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      if (hasMoreState()) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        setAbortFailure(getClass().getSimpleName(), "abort requested");<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        LOG.warn("Ignoring abort request on state='" + getCurrentState() + "' for " + this);<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><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  /**<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * Used by the default implementation of abort() to know if the current state can be aborted<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * and rollback can be triggered.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   */<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  protected boolean isRollbackSupported(final TState state) {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    return false;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  @Override<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  protected boolean isYieldAfterExecutionStep(final TEnvironment env) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    return isYieldBeforeExecuteFromState(env, getCurrentState());<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>  private boolean hasMoreState() {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    return stateFlow != Flow.NO_MORE_STATE;<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>  protected TState getCurrentState() {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return stateCount &gt; 0 ? getState(states[stateCount-1]) : getInitialState();<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>   * Set the next state for the procedure.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * @param stateId the ordinal() of the state enum (or state id)<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  private void setNextState(final int stateId) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (states == null || states.length == stateCount) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      int newCapacity = stateCount + 8;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      if (states != null) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        states = Arrays.copyOf(states, newCapacity);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      } else {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        states = new int[newCapacity];<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>    states[stateCount++] = stateId;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
-<span class="sourceLineNo">252</span><a name="line.252"></a>
-<span class="sourceLineNo">253</span>  @Override<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  protected void toStringState(StringBuilder builder) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    super.toStringState(builder);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    if (!isFinished() &amp;&amp; !isEofState() &amp;&amp; getCurrentState() != null) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      builder.append(":").append(getCurrentState());<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>  @Override<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  protected void serializeStateData(final OutputStream stream) throws IOException {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    StateMachineProcedureData.Builder data = StateMachineProcedureData.newBuilder();<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    for (int i = 0; i &lt; stateCount; ++i) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      data.addState(states[i]);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    data.build().writeDelimitedTo(stream);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  }<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>  @Override<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  protected void deserializeStateData(final InputStream stream) throws IOException {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    StateMachineProcedureData data = StateMachineProcedureData.parseDelimitedFrom(stream);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    stateCount = data.getStateCount();<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    if (stateCount &gt; 0) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      states = new int[stateCount];<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      for (int i = 0; i &lt; stateCount; ++i) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        states[i] = data.getState(i);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      }<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      if (isEofState()) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        stateFlow = Flow.NO_MORE_STATE;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    } else {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      states = null;<a name="line.283"></a>
+<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>  @Override<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  protected void rollback(final TEnvironment env)<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      throws IOException, InterruptedException {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    if (isEofState()) stateCount--;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    try {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      updateTimestamp();<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      rollbackState(env, getCurrentState());<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      stateCount--;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    } finally {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      updateTimestamp();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>  private boolean isEofState() {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    return stateCount &gt; 0 &amp;&amp; states[stateCount-1] == EOF_STATE;<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>  @Override<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  protected boolean abort(final TEnvironment env) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    final boolean isDebugEnabled = LOG.isDebugEnabled();<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    final TState state = getCurrentState();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (isDebugEnabled) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      LOG.debug("abort requested for " + this + " state=" + state);<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>    if (hasMoreState()) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      aborted.set(true);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      return true;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    } else if (isDebugEnabled) {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      LOG.debug("ignoring abort request on state=" + state + " for " + this);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    return false;<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  }<a name="line.226"></a>
+<span class="sourceLineNo">227</span><a name="line.227"></a>
+<span class="sourceLineNo">228</span>  /**<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   * If procedure has more states then abort it otherwise procedure is finished and abort can be<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * ignored.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   */<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  protected final void failIfAborted() {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    if (aborted.get()) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      if (hasMoreState()) {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        setAbortFailure(getClass().getSimpleName(), "abort requested");<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      } else {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        LOG.warn("Ignoring abort request on state='" + getCurrentState() + "' for " + this);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      }<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /**<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * Used by the default implementation of abort() to know if the current state can be aborted<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * and rollback can be triggered.<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   */<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  protected boolean isRollbackSupported(final TState state) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    return false;<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>  @Override<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  protected boolean isYieldAfterExecutionStep(final TEnvironment env) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    return isYieldBeforeExecuteFromState(env, getCurrentState());<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>  private boolean hasMoreState() {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    return stateFlow != Flow.NO_MORE_STATE;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>  protected TState getCurrentState() {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    return stateCount &gt; 0 ? getState(states[stateCount-1]) : getInitialState();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>  }<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>  /**<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   * Set the next state for the procedure.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>   * @param stateId the ordinal() of the state enum (or state id)<a name="line.265"></a>
+<span class="sourceLineNo">266</span>   */<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  private void setNextState(final int stateId) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    if (states == null || states.length == stateCount) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      int newCapacity = stateCount + 8;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      if (states != null) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        states = Arrays.copyOf(states, newCapacity);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      } else {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        states = new int[newCapacity];<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>    states[stateCount++] = stateId;<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>  @Override<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  protected void toStringState(StringBuilder builder) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    super.toStringState(builder);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    if (!isFinished() &amp;&amp; !isEofState() &amp;&amp; getCurrentState() != null) {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      builder.append(":").append(getCurrentState());<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>}<a name="line.286"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>  @Override<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  protected void serializeStateData(final OutputStream stream) throws IOException {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    StateMachineProcedureData.Builder data = StateMachineProcedureData.newBuilder();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    for (int i = 0; i &lt; stateCount; ++i) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      data.addState(states[i]);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    data.build().writeDelimitedTo(stream);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  @Override<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  protected void deserializeStateData(final InputStream stream) throws IOException {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    StateMachineProcedureData data = StateMachineProcedureData.parseDelimitedFrom(stream);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    stateCount = data.getStateCount();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    if (stateCount &gt; 0) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      states = new int[stateCount];<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      for (int i = 0; i &lt; stateCount; ++i) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        states[i] = data.getState(i);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      }<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      if (isEofState()) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        stateFlow = Flow.NO_MORE_STATE;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    } else {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      states = null;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>}<a name="line.312"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html
index 630242a..e4db24e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html
@@ -67,231 +67,257 @@
 <span class="sourceLineNo">059</span><a name="line.59"></a>
 <span class="sourceLineNo">060</span>  private List&lt;Procedure&lt;TEnvironment&gt;&gt; subProcList = null;<a name="line.60"></a>
 <span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  protected enum Flow {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    HAS_MORE_STATE,<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    NO_MORE_STATE,<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  }<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>   * called to perform a single step of the specified 'state' of the procedure<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   * @param state state to execute<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   * @return Flow.NO_MORE_STATE if the procedure is completed,<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   *         Flow.HAS_MORE_STATE if there is another step.<a name="line.71"></a>
-<span class="sourceLineNo">072</span>   */<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  protected abstract Flow executeFromState(TEnvironment env, TState state)<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException;<a name="line.74"></a>
+<span class="sourceLineNo">062</span>  protected final int getCycles() {<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    return cycles;<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>  /**<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   * Cycles on same state. Good for figuring if we are stuck.<a name="line.67"></a>
+<span class="sourceLineNo">068</span>   */<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private int cycles = 0;<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>   * Ordinal of the previous state. So we can tell if we are progressing or not.<a name="line.72"></a>
+<span class="sourceLineNo">073</span>   */<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private int previousState;<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>   * called to perform the rollback of the specified state<a name="line.77"></a>
-<span class="sourceLineNo">078</span>   * @param state state to rollback<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * @throws IOException temporary failure, the rollback will retry later<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  protected abstract void rollbackState(TEnvironment env, TState state)<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    throws IOException, InterruptedException;<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>  /**<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * Convert an ordinal (or state id) to an Enum (or more descriptive) state object.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   * @param stateId the ordinal() of the state enum (or state id)<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   * @return the state enum object<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   */<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  protected abstract TState getState(int stateId);<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  /**<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   * Convert the Enum (or more descriptive) state object to an ordinal (or state id).<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   * @param state the state enum object<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   * @return stateId the ordinal() of the state enum (or state id)<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  protected abstract int getStateId(TState state);<a name="line.96"></a>
+<span class="sourceLineNo">076</span>  protected enum Flow {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    HAS_MORE_STATE,<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    NO_MORE_STATE,<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  /**<a name="line.81"></a>
+<span class="sourceLineNo">082</span>   * called to perform a single step of the specified 'state' of the procedure<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   * @param state state to execute<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   * @return Flow.NO_MORE_STATE if the procedure is completed,<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   *         Flow.HAS_MORE_STATE if there is another step.<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   */<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  protected abstract Flow executeFromState(TEnvironment env, TState state)<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException;<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>   * called to perform the rollback of the specified state<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   * @param state state to rollback<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   * @throws IOException temporary failure, the rollback will retry later<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  protected abstract void rollbackState(TEnvironment env, TState state)<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    throws IOException, InterruptedException;<a name="line.96"></a>
 <span class="sourceLineNo">097</span><a name="line.97"></a>
 <span class="sourceLineNo">098</span>  /**<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * Return the initial state object that will be used for the first call to executeFromState().<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * @return the initial state enum object<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   */<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  protected abstract TState getInitialState();<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>   * Set the next state for the procedure.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * @param state the state enum object<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  protected void setNextState(final TState state) {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    setNextState(getStateId(state));<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    failIfAborted();<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  }<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * By default, the executor will try ro run all the steps of the procedure start to finish.<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * Return true to make the executor yield between execution steps to<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * give other procedures time to run their steps.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   * @param state the state we are going to execute next.<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   * @return Return true if the executor should yield before the execution of the specified step.<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   *         Defaults to return false.<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  protected boolean isYieldBeforeExecuteFromState(TEnvironment env, TState state) {<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>   * Add a child procedure to execute<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * @param subProcedure the child procedure<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  protected void addChildProcedure(Procedure&lt;TEnvironment&gt;... subProcedure) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    if (subProcedure == null) return;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    final int len = subProcedure.length;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    if (len == 0) return;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    if (subProcList == null) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      subProcList = new ArrayList&lt;&gt;(len);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    }<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    for (int i = 0; i &lt; len; ++i) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      Procedure&lt;TEnvironment&gt; proc = subProcedure[i];<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      if (!proc.hasOwner()) proc.setOwner(getOwner());<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      subProcList.add(proc);<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><a name="line.142"></a>
-<span class="sourceLineNo">143</span>  @Override<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  protected Procedure[] execute(final TEnvironment env)<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    updateTimestamp();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    try {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      failIfAborted();<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>      if (!hasMoreState() || isFailed()) return null;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      TState state = getCurrentState();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      if (stateCount == 0) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        setNextState(getStateId(state));<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      }<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      stateFlow = executeFromState(env, state);<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      if (!hasMoreState()) setNextState(EOF_STATE);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      if (subProcList != null &amp;&amp; !subProcList.isEmpty()) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        Procedure[] subProcedures = subProcList.toArray(new Procedure[subProcList.size()]);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        subProcList = null;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        return subProcedures;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      }<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      return (isWaiting() || isFailed() || !hasMoreState()) ? null : new Procedure[] {this};<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    } finally {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      updateTimestamp();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  }<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>  @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  protected void rollback(final TEnvironment env)<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      throws IOException, InterruptedException {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    if (isEofState()) stateCount--;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    try {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      updateTimestamp();<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      rollbackState(env, getCurrentState());<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      stateCount--;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    } finally {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      updateTimestamp();<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">099</span>   * Convert an ordinal (or state id) to an Enum (or more descriptive) state object.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * @param stateId the ordinal() of the state enum (or state id)<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * @return the state enum object<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   */<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  protected abstract TState getState(int stateId);<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>   * Convert the Enum (or more descriptive) state object to an ordinal (or state id).<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @param state the state enum object<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @return stateId the ordinal() of the state enum (or state id)<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  protected abstract int getStateId(TState state);<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>  /**<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   * Return the initial state object that will be used for the first call to executeFromState().<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * @return the initial state enum object<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  protected abstract TState getInitialState();<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  /**<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   * Set the next state for the procedure.<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * @param state the state enum object<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  protected void setNextState(final TState state) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    setNextState(getStateId(state));<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    failIfAborted();<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>   * By default, the executor will try ro run all the steps of the procedure start to finish.<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * Return true to make the executor yield between execution steps to<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * give other procedures time to run their steps.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * @param state the state we are going to execute next.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * @return Return true if the executor should yield before the execution of the specified step.<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   *         Defaults to return false.<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   */<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  protected boolean isYieldBeforeExecuteFromState(TEnvironment env, TState state) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    return false;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  /**<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * Add a child procedure to execute<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   * @param subProcedure the child procedure<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   */<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  protected void addChildProcedure(Procedure&lt;TEnvironment&gt;... subProcedure) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    if (subProcedure == null) return;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    final int len = subProcedure.length;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    if (len == 0) return;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    if (subProcList == null) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      subProcList = new ArrayList&lt;&gt;(len);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    for (int i = 0; i &lt; len; ++i) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      Procedure&lt;TEnvironment&gt; proc = subProcedure[i];<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      if (!proc.hasOwner()) proc.setOwner(getOwner());<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      subProcList.add(proc);<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>  @Override<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  protected Procedure[] execute(final TEnvironment env)<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    updateTimestamp();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    try {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      failIfAborted();<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>      if (!hasMoreState() || isFailed()) return null;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      TState state = getCurrentState();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      if (stateCount == 0) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        setNextState(getStateId(state));<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>      if (LOG.isTraceEnabled()) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        LOG.trace(state  + " " + this + "; cycles=" + this.cycles);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      // Keep running count of cycles<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      if (getStateId(state) != this.previousState) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        this.previousState = getStateId(state);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        this.cycles = 0;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      } else {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        this.cycles++;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
 <span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>  private boolean isEofState() {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    return stateCount &gt; 0 &amp;&amp; states[stateCount-1] == EOF_STATE;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  protected boolean abort(final TEnvironment env) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    final boolean isDebugEnabled = LOG.isDebugEnabled();<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    final TState state = getCurrentState();<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    if (isDebugEnabled) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      LOG.debug("abort requested for " + this + " state=" + state);<a name="line.190"></a>
+<span class="sourceLineNo">181</span>      stateFlow = executeFromState(env, state);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      if (!hasMoreState()) setNextState(EOF_STATE);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      if (subProcList != null &amp;&amp; !subProcList.isEmpty()) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        Procedure[] subProcedures = subProcList.toArray(new Procedure[subProcList.size()]);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        subProcList = null;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        return subProcedures;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      return (isWaiting() || isFailed() || !hasMoreState()) ? null : new Procedure[] {this};<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    } finally {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      updateTimestamp();<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>    if (hasMoreState()) {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      aborted.set(true);<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return true;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    } else if (isDebugEnabled) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      LOG.debug("ignoring abort request on state=" + state + " for " + this);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    return false;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  }<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>  /**<a name="line.202"></a>
-<span class="sourceLineNo">203</span>   * If procedure has more states then abort it otherwise procedure is finished and abort can be<a name="line.203"></a>
-<span class="sourceLineNo">204</span>   * ignored.<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   */<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  protected final void failIfAborted() {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    if (aborted.get()) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      if (hasMoreState()) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        setAbortFailure(getClass().getSimpleName(), "abort requested");<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      } else {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        LOG.warn("Ignoring abort request on state='" + getCurrentState() + "' for " + this);<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><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  /**<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * Used by the default implementation of abort() to know if the current state can be aborted<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * and rollback can be triggered.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   */<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  protected boolean isRollbackSupported(final TState state) {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    return false;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  @Override<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  protected boolean isYieldAfterExecutionStep(final TEnvironment env) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    return isYieldBeforeExecuteFromState(env, getCurrentState());<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>  private boolean hasMoreState() {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    return stateFlow != Flow.NO_MORE_STATE;<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>  protected TState getCurrentState() {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return stateCount &gt; 0 ? getState(states[stateCount-1]) : getInitialState();<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>   * Set the next state for the procedure.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * @param stateId the ordinal() of the state enum (or state id)<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  private void setNextState(final int stateId) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (states == null || states.length == stateCount) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      int newCapacity = stateCount + 8;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      if (states != null) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        states = Arrays.copyOf(states, newCapacity);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      } else {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        states = new int[newCapacity];<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>    states[stateCount++] = stateId;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
-<span class="sourceLineNo">252</span><a name="line.252"></a>
-<span class="sourceLineNo">253</span>  @Override<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  protected void toStringState(StringBuilder builder) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    super.toStringState(builder);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    if (!isFinished() &amp;&amp; !isEofState() &amp;&amp; getCurrentState() != null) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      builder.append(":").append(getCurrentState());<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>  @Override<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  protected void serializeStateData(final OutputStream stream) throws IOException {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    StateMachineProcedureData.Builder data = StateMachineProcedureData.newBuilder();<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    for (int i = 0; i &lt; stateCount; ++i) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      data.addState(states[i]);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    data.build().writeDelimitedTo(stream);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  }<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>  @Override<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  protected void deserializeStateData(final InputStream stream) throws IOException {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    StateMachineProcedureData data = StateMachineProcedureData.parseDelimitedFrom(stream);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    stateCount = data.getStateCount();<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    if (stateCount &gt; 0) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      states = new int[stateCount];<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      for (int i = 0; i &lt; stateCount; ++i) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        states[i] = data.getState(i);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      }<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      if (isEofState()) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        stateFlow = Flow.NO_MORE_STATE;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    } else {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      states = null;<a name="line.283"></a>
+<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>  @Override<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  protected void rollback(final TEnvironment env)<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      throws IOException, InterruptedException {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    if (isEofState()) stateCount--;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    try {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      updateTimestamp();<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      rollbackState(env, getCurrentState());<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      stateCount--;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    } finally {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      updateTimestamp();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>  private boolean isEofState() {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    return stateCount &gt; 0 &amp;&amp; states[stateCount-1] == EOF_STATE;<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>  @Override<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  protected boolean abort(final TEnvironment env) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    final boolean isDebugEnabled = LOG.isDebugEnabled();<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    final TState state = getCurrentState();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    if (isDebugEnabled) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      LOG.debug("abort requested for " + this + " state=" + state);<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>    if (hasMoreState()) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      aborted.set(true);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      return true;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    } else if (isDebugEnabled) {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      LOG.debug("ignoring abort request on state=" + state + " for " + this);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    return false;<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  }<a name="line.226"></a>
+<span class="sourceLineNo">227</span><a name="line.227"></a>
+<span class="sourceLineNo">228</span>  /**<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   * If procedure has more states then abort it otherwise procedure is finished and abort can be<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * ignored.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   */<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  protected final void failIfAborted() {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    if (aborted.get()) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      if (hasMoreState()) {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        setAbortFailure(getClass().getSimpleName(), "abort requested");<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      } else {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        LOG.warn("Ignoring abort request on state='" + getCurrentState() + "' for " + this);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      }<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /**<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * Used by the default implementation of abort() to know if the current state can be aborted<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * and rollback can be triggered.<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   */<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  protected boolean isRollbackSupported(final TState state) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    return false;<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>  @Override<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  protected boolean isYieldAfterExecutionStep(final TEnvironment env) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    return isYieldBeforeExecuteFromState(env, getCurrentState());<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>  private boolean hasMoreState() {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    return stateFlow != Flow.NO_MORE_STATE;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>  protected TState getCurrentState() {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    return stateCount &gt; 0 ? getState(states[stateCount-1]) : getInitialState();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>  }<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>  /**<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   * Set the next state for the procedure.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>   * @param stateId the ordinal() of the state enum (or state id)<a name="line.265"></a>
+<span class="sourceLineNo">266</span>   */<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  private void setNextState(final int stateId) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    if (states == null || states.length == stateCount) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      int newCapacity = stateCount + 8;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      if (states != null) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        states = Arrays.copyOf(states, newCapacity);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      } else {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        states = new int[newCapacity];<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>    states[stateCount++] = stateId;<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>  @Override<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  protected void toStringState(StringBuilder builder) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    super.toStringState(builder);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    if (!isFinished() &amp;&amp; !isEofState() &amp;&amp; getCurrentState() != null) {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      builder.append(":").append(getCurrentState());<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>}<a name="line.286"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>  @Override<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  protected void serializeStateData(final OutputStream stream) throws IOException {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    StateMachineProcedureData.Builder data = StateMachineProcedureData.newBuilder();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    for (int i = 0; i &lt; stateCount; ++i) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      data.addState(states[i]);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    data.build().writeDelimitedTo(stream);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  @Override<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  protected void deserializeStateData(final InputStream stream) throws IOException {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    StateMachineProcedureData data = StateMachineProcedureData.parseDelimitedFrom(stream);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    stateCount = data.getStateCount();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    if (stateCount &gt; 0) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      states = new int[stateCount];<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      for (int i = 0; i &lt; stateCount; ++i) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        states[i] = data.getState(i);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      }<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      if (isEofState()) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        stateFlow = Flow.NO_MORE_STATE;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    } else {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      states = null;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>}<a name="line.312"></a>
 
 
 

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


[07/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-spark/source-repository.html b/hbase-spark/source-repository.html
index 063fc7a..fd6cf59 100644
--- a/hbase-spark/source-repository.html
+++ b/hbase-spark/source-repository.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-spark/team-list.html b/hbase-spark/team-list.html
index a33f432..0f86432 100644
--- a/hbase-spark/team-list.html
+++ b/hbase-spark/team-list.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index a08aa28..61ba6f3 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="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <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" />
@@ -281,7 +281,209 @@
 <h2><a name="Project_Licenses"></a>Project Licenses</h2><a name="Project_Licenses"></a>
 <div class="section">
 <h3><a name="Apache_License_Version_2.0"></a>Apache License, Version 2.0</h3><a name="Apache_License_Version_2.0"></a>
-<p>Can't read the url [https://www.apache.org/licenses/LICENSE-2.0.txt] : connect timed out</p></div></div>
+<div class="source"><pre class="prettyprint">
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      &quot;License&quot; shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      &quot;Licensor&quot; shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      &quot;Legal Entity&quot; shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      &quot;control&quot; means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      &quot;You&quot; (or &quot;Your&quot;) shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      &quot;Source&quot; form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      &quot;Object&quot; form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      &quot;Work&quot; shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      &quot;Derivative Works&quot; shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      &quot;Contribution&quot; shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, &quot;submitted&quot;
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as &quot;Not a Contribution.&quot;
+
+      &quot;Contributor&quot; shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a &quot;NOTICE&quot; text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an &quot;AS IS&quot; BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets &quot;[]&quot;
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same &quot;printed page&quot; as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+</pre></div></div></div>
                   </div>
           </div>
 
@@ -294,7 +496,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 2137073..6026f19 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="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -346,7 +346,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-08-01</li>
             </p>
                 </div>
 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index bf22003..0fb5056 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="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <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" />
@@ -687,7 +687,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-07-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-08-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 64bb8cb..a041889 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -27770,6 +27770,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.LoadMapper.html#recordsToWrite">recordsToWrite</a></span> - Variable in class org.apache.hadoop.hbase.test.<a href="org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.LoadMapper.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestLoadAndVerify.LoadMapper</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MockNoopMasterServices.html#recoverMeta--">recoverMeta()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MockNoopMasterServices.html" title="class in org.apache.hadoop.hbase.master">MockNoopMasterServices</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/TestHFileArchiving.html#recurseOnFiles-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.FileStatus:A-java.util.List-">recurseOnFiles(FileSystem, FileStatus[], List&lt;String&gt;)</a></span> - Method in class org.apache.hadoop.hbase.backup.<a href="org/apache/hadoop/hbase/backup/TestHFileArchiving.html" title="class in org.apache.hadoop.hbase.backup">TestHFileArchiving</a></dt>
 <dd>
 <div class="block">Recursively lookup all the file names under the file[] array</div>
@@ -50873,7 +50875,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestRestoreSnapshotProcedure.html#testRecoveryAndDoubleExecution--">testRecoveryAndDoubleExecution()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestRestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestRestoreSnapshotProcedure</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html#testRecoveryAndDoubleExecution-boolean-">testRecoveryAndDoubleExecution(boolean)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestServerCrashProcedure</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html#testRecoveryAndDoubleExecution-boolean-boolean-">testRecoveryAndDoubleExecution(boolean, boolean)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestServerCrashProcedure</a></dt>
 <dd>
 <div class="block">Run server crash procedure steps twice to test idempotency and that we are persisting all
  needed state.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html b/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html
index dc60121..ccdb5f5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html
@@ -233,7 +233,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createRpcServices, createSystemTable, createTable, deleteColumn, deleteTable, disableReplicationPeer, disableTable, drainRegionServer, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClusterSchema, getClusterStatus, getDumpServlet, getFavoredNodesManager, getFsTableDescriptors, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterSta
 rtTime, getMasterWalManager, getMergePlanCount, getMobCompactionState, getNumWALFiles, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationPeerConfig, getServerCrashProcessingEnabledEvent, getServerManager, getServerName, getSnapshotManager, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableStateManager, getWalProcedureStore, getZooKeeper, isActiveMaster, isBalancerOn, isInitializationStartsMetaRegionAssignment, isInitialized, isInMaintenanceMode, isNormalizerOn, isServerCrashProcessingEnabled, isSplitOrMergeEnabled, listDrainingRegionServers, listLocks, listProcedures, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, registerService, removeDrainFromRegionS
 erver, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, setCatalogJanitorEnabled, setInitialized, setServerCrashProcessingEnabled, shutdown, splitRegion, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createRpcServices, createSystemTable, createTable, deleteColumn, deleteTable, disableReplicationPeer, disableTable, drainRegionServer, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClusterSchema, getClusterStatus, getDumpServlet, getFavoredNodesManager, getFsTableDescriptors, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterSta
 rtTime, getMasterWalManager, getMergePlanCount, getMobCompactionState, getNumWALFiles, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationPeerConfig, getServerCrashProcessingEnabledEvent, getServerManager, getServerName, getSnapshotManager, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableStateManager, getWalProcedureStore, getZooKeeper, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNormalizerOn, isServerCrashProcessingEnabled, isSplitOrMergeEnabled, listDrainingRegionServers, listLocks, listProcedures, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recoverMeta, registerService, removeDrainFromRegionServer, removeReplicationPeer, r
 eportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, setCatalogJanitorEnabled, setInitialized, setServerCrashProcessingEnabled, shutdown, splitRegion, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/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 e6bc9ca..b89116f 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="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/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>
+<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>
 </ul>
 </li>
 </ul>


[19/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html
index 38cee64..d900251 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html
@@ -220,1065 +220,1075 @@
 <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>    final Procedure pollResult = rq.peek();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      removeFromRunQueue(fairq, rq);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      return null;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>    rq.poll();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    if (rq.isEmpty() || xlockReq) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      removeFromRunQueue(fairq, rq);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      // if the rq is in the fairq because of runnable child<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      // check if the next procedure is still a child.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      Procedure nextProc = rq.peek();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        removeFromRunQueue(fairq, rq);<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>    return pollResult;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">215</span>    if (pollResult == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      return null;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      removeFromRunQueue(fairq, rq);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      return null;<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>    rq.poll();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    if (rq.isEmpty() || xlockReq) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      removeFromRunQueue(fairq, rq);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      // if the rq is in the fairq because of runnable child<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      // check if the next procedure is still a child.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      Procedure nextProc = rq.peek();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        removeFromRunQueue(fairq, rq);<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      String resourceName, LockAndQueue queue) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    LockInfo info = new LockInfo();<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    info.setResourceType(resourceType);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    info.setResourceName(resourceName);<a name="line.243"></a>
+<span class="sourceLineNo">238</span>    return pollResult;<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      String resourceName, LockAndQueue queue) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    LockInfo info = new LockInfo();<a name="line.243"></a>
 <span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    if (queue.hasExclusiveLock()) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.246"></a>
+<span class="sourceLineNo">245</span>    info.setResourceType(resourceType);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    info.setResourceName(resourceName);<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      info.setSharedLockCount(queue.getSharedLockCount());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        continue;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.263"></a>
+<span class="sourceLineNo">248</span>    if (queue.hasExclusiveLock()) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      info.setSharedLockCount(queue.getSharedLockCount());<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>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        continue;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
 <span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>      switch (lockProcedure.getType()) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      case EXCLUSIVE:<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        break;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      case SHARED:<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.270"></a>
+<span class="sourceLineNo">265</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>      switch (lockProcedure.getType()) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      case EXCLUSIVE:<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.270"></a>
 <span class="sourceLineNo">271</span>        break;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.275"></a>
+<span class="sourceLineNo">272</span>      case SHARED:<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        break;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
 <span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">277</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.278"></a>
 <span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return info;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">280</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
 <span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Override<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    schedLock();<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.288"></a>
+<span class="sourceLineNo">283</span>    return info;<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>  @Override<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    schedLock();<a name="line.288"></a>
 <span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          .entrySet()) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        String serverName = entry.getKey().getServerName();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        LockAndQueue queue = entry.getValue();<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>        if (queue.isLocked()) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              serverName, queue);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          lockInfos.add(lockInfo);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          .entrySet()) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        String namespaceName = entry.getKey();<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        LockAndQueue queue = entry.getValue();<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>        if (queue.isLocked()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              namespaceName, queue);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>          lockInfos.add(lockInfo);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        }<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.314"></a>
-<span class="sourceLineNo">315</span>          .entrySet()) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        String tableName = entry.getKey().getNameAsString();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        LockAndQueue queue = entry.getValue();<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>        if (queue.isLocked()) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.320"></a>
-<span class="sourceLineNo">321</span>              tableName, queue);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          lockInfos.add(lockInfo);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        String regionName = entry.getKey();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        LockAndQueue queue = entry.getValue();<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>        if (queue.isLocked()) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              regionName, queue);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          lockInfos.add(lockInfo);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      }<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>      return lockInfos;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    } finally {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      schedUnlock();<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>  @Override<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    LockAndQueue queue = null;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    schedLock();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    try {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      switch (resourceType) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        case SERVER:<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.350"></a>
-<span class="sourceLineNo">351</span>          break;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        case NAMESPACE:<a name="line.352"></a>
-<span class="sourceLineNo">353</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.353"></a>
+<span class="sourceLineNo">290</span>    try {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          .entrySet()) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        String serverName = entry.getKey().getServerName();<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        LockAndQueue queue = entry.getValue();<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>        if (queue.isLocked()) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              serverName, queue);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          lockInfos.add(lockInfo);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          .entrySet()) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        String namespaceName = entry.getKey();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        LockAndQueue queue = entry.getValue();<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>        if (queue.isLocked()) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.311"></a>
+<span class="sourceLineNo">312</span>              namespaceName, queue);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>          lockInfos.add(lockInfo);<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>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.317"></a>
+<span class="sourceLineNo">318</span>          .entrySet()) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        String tableName = entry.getKey().getNameAsString();<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        LockAndQueue queue = entry.getValue();<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>        if (queue.isLocked()) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.323"></a>
+<span class="sourceLineNo">324</span>              tableName, queue);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>          lockInfos.add(lockInfo);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        String regionName = entry.getKey();<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        LockAndQueue queue = entry.getValue();<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>        if (queue.isLocked()) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.334"></a>
+<span class="sourceLineNo">335</span>              regionName, queue);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          lockInfos.add(lockInfo);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return lockInfos;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    } finally {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      schedUnlock();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    LockAndQueue queue = null;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    schedLock();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    try {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      switch (resourceType) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        case SERVER:<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.353"></a>
 <span class="sourceLineNo">354</span>          break;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        case TABLE:<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.356"></a>
+<span class="sourceLineNo">355</span>        case NAMESPACE:<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.356"></a>
 <span class="sourceLineNo">357</span>          break;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        case REGION:<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          queue = locking.regionLocks.get(resourceName);<a name="line.359"></a>
+<span class="sourceLineNo">358</span>        case TABLE:<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.359"></a>
 <span class="sourceLineNo">360</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    } finally {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      schedUnlock();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public void clear() {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    schedLock();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    try {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      clearQueue();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      locking.clear();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    } finally {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      schedUnlock();<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>  protected void clearQueue() {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    // Remove Servers<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      serverBuckets[i] = null;<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>    // Remove Tables<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    tableMap = null;<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
+<span class="sourceLineNo">361</span>        case REGION:<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          queue = locking.regionLocks.get(resourceName);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    } finally {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      schedUnlock();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  @Override<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  public void clear() {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    schedLock();<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    try {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      clearQueue();<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      locking.clear();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    } finally {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      schedUnlock();<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><a name="line.382"></a>
+<span class="sourceLineNo">383</span>  protected void clearQueue() {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // Remove Servers<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      serverBuckets[i] = null;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>    // Remove Tables<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    tableMap = null;<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    while (treeMap != null) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Override<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  protected int queueSize() {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    int count = 0;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // Server queues<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      while (serverIter.hasNext()) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        count += serverIter.next().size();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>    // Table queues<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    while (tableIter.hasNext()) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      count += tableIter.next().size();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    return count;<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 completionCleanup(final Procedure proc) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    if (proc instanceof TableProcedureInterface) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      boolean tableDeleted;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (proc.hasException()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          // create failed because the table already exist<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        } else {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          // the operation failed because the table does not exist<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      } else {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        // the table was deleted<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if (tableDeleted) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        return;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    } else {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      return;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      fairq.add(queue);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      fairq.remove(queue);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>  // ============================================================================<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  //  Table Queue Lookup Helpers<a name="line.466"></a>
-<span class="sourceLineNo">467</span>  // ============================================================================<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    if (node != null) return node;<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    return node;<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private void removeTableQueue(TableName tableName) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    locking.removeTableLock(tableName);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  }<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    return proc instanceof TableProcedureInterface;<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>  private static TableName getTableName(Procedure proc) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  }<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>  //  Server Queue Lookup Helpers<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  // ============================================================================<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    if (node != null) return node;<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    return node;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  }<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    return Math.abs(hashCode) % buckets.length;<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>  private static boolean isServerProcedure(Procedure proc) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  // ============================================================================<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  //  Table and Server Queue Implementation<a name="line.518"></a>
-<span class="sourceLineNo">519</span>  // ============================================================================<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    @Override<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      return node.compareKey((ServerName)key);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      super(serverName, serverLock);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>    @Override<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      switch (spi.getServerOperationType()) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        case CRASH_HANDLER:<a name="line.536"></a>
-<span class="sourceLineNo">537</span>          return true;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        default:<a name="line.538"></a>
-<span class="sourceLineNo">539</span>          break;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      }<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    @Override<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    public int compareKey(TableQueue node, Object key) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      return node.compareKey((TableName)key);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    }<a name="line.549"></a>
-<span class="sourceLineNo">550</span>  }<a name="line.550"></a>
-<span class="sourceLineNo">551</span><a name="line.551"></a>
-<span class="sourceLineNo">552</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    private final LockStatus namespaceLockStatus;<a name="line.553"></a>
+<span class="sourceLineNo">394</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    while (treeMap != null) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  @Override<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  protected int queueSize() {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    int count = 0;<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>    // Server queues<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      while (serverIter.hasNext()) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        count += serverIter.next().size();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>    // Table queues<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    while (tableIter.hasNext()) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      count += tableIter.next().size();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    return count;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  @Override<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  public void completionCleanup(final Procedure proc) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    if (proc instanceof TableProcedureInterface) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      boolean tableDeleted;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      if (proc.hasException()) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>          // create failed because the table already exist<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        } else {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          // the operation failed because the table does not exist<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      } else {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        // the table was deleted<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      }<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      if (tableDeleted) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        return;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      }<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } else {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      return;<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><a name="line.454"></a>
+<span class="sourceLineNo">455</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      fairq.add(queue);<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>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      fairq.remove(queue);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  }<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>  // ============================================================================<a name="line.468"></a>
+<span class="sourceLineNo">469</span>  //  Table Queue Lookup Helpers<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  // ============================================================================<a name="line.470"></a>
+<span class="sourceLineNo">471</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    if (node != null) return node;<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    return node;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  }<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>  private void removeTableQueue(TableName tableName) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    locking.removeTableLock(tableName);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span><a name="line.486"></a>
+<span class="sourceLineNo">487</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    return proc instanceof TableProcedureInterface;<a name="line.488"></a>
+<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>  private static TableName getTableName(Procedure proc) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  }<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>  // ============================================================================<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  //  Server Queue Lookup Helpers<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  // ============================================================================<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    if (node != null) return node;<a name="line.501"></a>
+<span class="sourceLineNo">502</span><a name="line.502"></a>
+<span class="sourceLineNo">503</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    return node;<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>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return Math.abs(hashCode) % buckets.length;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>  private static boolean isServerProcedure(Procedure proc) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
+<span class="sourceLineNo">519</span><a name="line.519"></a>
+<span class="sourceLineNo">520</span>  // ============================================================================<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  //  Table and Server Queue Implementation<a name="line.521"></a>
+<span class="sourceLineNo">522</span>  // ============================================================================<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    @Override<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      return node.compareKey((ServerName)key);<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>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      super(serverName, serverLock);<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>    @Override<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      switch (spi.getServerOperationType()) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        case CRASH_HANDLER:<a name="line.539"></a>
+<span class="sourceLineNo">540</span>          return true;<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        default:<a name="line.541"></a>
+<span class="sourceLineNo">542</span>          break;<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    @Override<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    public int compareKey(TableQueue node, Object key) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      return node.compareKey((TableName)key);<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><a name="line.554"></a>
-<span class="sourceLineNo">555</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        LockStatus namespaceLockStatus) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      super(tableName, priority, tableLock);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      this.namespaceLockStatus = namespaceLockStatus;<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>    @Override<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    public boolean isAvailable() {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      // we can't execute operation on this table<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>        return false;<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>      if (getLockStatus().hasExclusiveLock()) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        // if we have an exclusive lock already taken<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        // only child of the lock owner can be executed<a name="line.571"></a>
-<span class="sourceLineNo">572</span>        final Procedure nextProc = peek();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>      // no xlock<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return true;<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>    @Override<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
-<span class="sourceLineNo">585</span><a name="line.585"></a>
-<span class="sourceLineNo">586</span>  // ============================================================================<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  //  Table Locking Helpers<a name="line.587"></a>
-<span class="sourceLineNo">588</span>  // ============================================================================<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    switch (proc.getTableOperationType()) {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      case CREATE:<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      case DELETE:<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      case DISABLE:<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      case ENABLE:<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        return true;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      case EDIT:<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        // we allow concurrent edit on the NS table<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      case READ:<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        return false;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      // region operations are using the shared-lock on the table<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      // and then they will grab an xlock on the region.<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      case REGION_SPLIT:<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      case REGION_MERGE:<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      case REGION_ASSIGN:<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      case REGION_UNASSIGN:<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      case REGION_EDIT:<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      case REGION_GC:<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      case MERGED_REGIONS_GC:<a name="line.609"></a>
-<span class="sourceLineNo">610</span>        return false;<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      default:<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        break;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    }<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        proc.getTableOperationType());<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  /**<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * Get lock info for a resource of specified type and name and log details<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   */<a name="line.620"></a>
-<span class="sourceLineNo">621</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    if (!LOG.isDebugEnabled()) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      return;<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    if (lockInfo != null) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.628"></a>
-<span class="sourceLineNo">629</span>          lockInfo.getSharedLockCount();<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      if (proc != null) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      }<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      LOG.debug(msg);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    }<a name="line.636"></a>
-<span class="sourceLineNo">637</span>  }<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>  /**<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   * Suspend the procedure if the specified table is already locked.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.641"></a>
-<span class="sourceLineNo">642</span>   * @param procedure the procedure trying to acquire the lock<a name="line.642"></a>
-<span class="sourceLineNo">643</span>   * @param table Table to lock<a name="line.643"></a>
-<span class="sourceLineNo">644</span>   * @return true if the procedure has to wait for the table to be available<a name="line.644"></a>
-<span class="sourceLineNo">645</span>   */<a name="line.645"></a>
-<span class="sourceLineNo">646</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    schedLock();<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    try {<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      final String namespace = table.getNamespaceAsString();<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      if (!namespaceLock.trySharedLock()) {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>        waitProcedure(namespaceLock, procedure);<a name="line.653"></a>
-<span class="sourceLineNo">654</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        return true;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      if (!tableLock.tryExclusiveLock(procedure)) {<a name="line.657"></a>
-<span class="sourceLineNo">658</span>        namespaceLock.releaseSharedLock();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>        waitProcedure(tableLock, procedure);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.TABLE, table.getNameAsString());<a name="line.660"></a>
+<span class="sourceLineNo">555</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    private final LockStatus namespaceLockStatus;<a name="line.556"></a>
+<span class="sourceLineNo">557</span><a name="line.557"></a>
+<span class="sourceLineNo">558</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>        LockStatus namespaceLockStatus) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      super(tableName, priority, tableLock);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      this.namespaceLockStatus = namespaceLockStatus;<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    }<a name="line.562"></a>
+<span class="sourceLineNo">563</span><a name="line.563"></a>
+<span class="sourceLineNo">564</span>    @Override<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    public boolean isAvailable() {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      // we can't execute operation on this table<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.568"></a>
+<span class="sourceLineNo">569</span>        return false;<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      }<a name="line.570"></a>
+<span class="sourceLineNo">571</span><a name="line.571"></a>
+<span class="sourceLineNo">572</span>      if (getLockStatus().hasExclusiveLock()) {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>        // if we have an exclusive lock already taken<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        // only child of the lock owner can be executed<a name="line.574"></a>
+<span class="sourceLineNo">575</span>        final Procedure nextProc = peek();<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>      // no xlock<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      return true;<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
+<span class="sourceLineNo">582</span><a name="line.582"></a>
+<span class="sourceLineNo">583</span>    @Override<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    }<a name="line.586"></a>
+<span class="sourceLineNo">587</span>  }<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>  // ============================================================================<a name="line.589"></a>
+<span class="sourceLineNo">590</span>  //  Table Locking Helpers<a name="line.590"></a>
+<span class="sourceLineNo">591</span>  // ============================================================================<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  /**<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @param proc must not be null<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   */<a name="line.594"></a>
+<span class="sourceLineNo">595</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    switch (proc.getTableOperationType()) {<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      case CREATE:<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      case DELETE:<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      case DISABLE:<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      case ENABLE:<a name="line.600"></a>
+<span class="sourceLineNo">601</span>        return true;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      case EDIT:<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        // we allow concurrent edit on the NS table<a name="line.603"></a>
+<span class="sourceLineNo">604</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      case READ:<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        return false;<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      // region operations are using the shared-lock on the table<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      // and then they will grab an xlock on the region.<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      case REGION_SPLIT:<a name="line.609"></a>
+<span class="sourceLineNo">610</span>      case REGION_MERGE:<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      case REGION_ASSIGN:<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      case REGION_UNASSIGN:<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      case REGION_EDIT:<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      case REGION_GC:<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      case MERGED_REGIONS_GC:<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        return false;<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      default:<a name="line.617"></a>
+<span class="sourceLineNo">618</span>        break;<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    }<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.620"></a>
+<span class="sourceLineNo">621</span>        proc.getTableOperationType());<a name="line.621"></a>
+<span class="sourceLineNo">622</span>  }<a name="line.622"></a>
+<span class="sourceLineNo">623</span><a name="line.623"></a>
+<span class="sourceLineNo">624</span>  /**<a name="line.624"></a>
+<span class="sourceLineNo">625</span>   * Get lock info for a resource of specified type and name and log details<a name="line.625"></a>
+<span class="sourceLineNo">626</span>   */<a name="line.626"></a>
+<span class="sourceLineNo">627</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    if (!LOG.isDebugEnabled()) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>      return;<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>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    if (lockInfo != null) {<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.634"></a>
+<span class="sourceLineNo">635</span>          lockInfo.getSharedLockCount();<a name="line.635"></a>
+<span class="sourceLineNo">636</span><a name="line.636"></a>
+<span class="sourceLineNo">637</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.637"></a>
+<span class="sourceLineNo">638</span>      if (proc != null) {<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      }<a name="line.640"></a>
+<span class="sourceLineNo">641</span>      LOG.debug(msg);<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>  }<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   * Suspend the procedure if the specified table is already locked.<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.647"></a>
+<span class="sourceLineNo">648</span>   * @param procedure the procedure trying to acquire the lock<a name="line.648"></a>
+<span class="sourceLineNo">649</span>   * @param table Table to lock<a name="line.649"></a>
+<span class="sourceLineNo">650</span>   * @return true if the procedure has to wait for the table to be available<a name="line.650"></a>
+<span class="sourceLineNo">651</span>   */<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    schedLock();<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    try {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>      final String namespace = table.getNamespaceAsString();<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      if (!namespaceLock.trySharedLock()) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>        waitProcedure(namespaceLock, procedure);<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.660"></a>
 <span class="sourceLineNo">661</span>        return true;<a name="line.661"></a>
 <span class="sourceLineNo">662</span>      }<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      removeFromRunQueue(tableRunQueue, getTableQueue(table));<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      return false;<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    } finally {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      schedUnlock();<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  }<a name="line.668"></a>
-<span class="sourceLineNo">669</span><a name="line.669"></a>
-<span class="sourceLineNo">670</span>  /**<a name="line.670"></a>
-<span class="sourceLineNo">671</span>   * Wake the procedures waiting for the specified table<a name="line.671"></a>
-<span class="sourceLineNo">672</span>   * @param procedure the procedure releasing the lock<a name="line.672"></a>
-<span class="sourceLineNo">673</span>   * @param table the name of the table that has the exclusive lock<a name="line.673"></a>
-<span class="sourceLineNo">674</span>   */<a name="line.674"></a>
-<span class="sourceLineNo">675</span>  public void wakeTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    schedLock();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    try {<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(table.getNamespaceAsString());<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      int waitingCount = 0;<a name="line.680"></a>
-<span class="sourceLineNo">681</span><a name="line.681"></a>
-<span class="sourceLineNo">682</span>      if (!tableLock.hasParentLock(procedure)) {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>        tableLock.releaseExclusiveLock(procedure);<a name="line.683"></a>
-<span class="sourceLineNo">684</span>        waitingCount += wakeWaitingProcedures(tableLock);<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      }<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      if (namespaceLock.releaseSharedLock()) {<a name="line.686"></a>
-<span class="sourceLineNo">687</span>        waitingCount += wakeWaitingProcedures(namespaceLock);<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      }<a name="line.688"></a>
-<span class="sourceLineNo">689</span>      addToRunQueue(tableRunQueue, getTableQueue(table));<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      wakePollIfNeeded(waitingCount);<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    } finally {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>      schedUnlock();<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><a name="line.695"></a>
-<span class="sourceLineNo">696</span>  /**<a name="line.696"></a>
-<span class="sourceLineNo">697</span>   * Suspend the procedure if the specified table is already locked.<a name="line.697"></a>
-<span class="sourceLineNo">698</span>   * other "read" operations in the table-queue may be executed concurrently,<a name="line.698"></a>
-<span class="sourceLineNo">699</span>   * @param procedure the procedure trying to acquire the lock<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   * @param table Table to lock<a name="line.700"></a>
-<span class="sourceLineNo">701</span>   * @return true if the procedure has to wait for the table to be available<a name="line.701"></a>
-<span class="sourceLineNo">702</span>   */<a name="line.702"></a>
-<span class="sourceLineNo">703</span>  public boolean waitTableSharedLock(final Procedure procedure, final TableName table) {<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    return waitTableQueueSharedLock(procedure, table) == null;<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>  private TableQueue waitTableQueueSharedLock(final Procedure procedure, final TableName table) {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    schedLock();<a name="line.708"></a>
-<span 

<TRUNCATED>

[38/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
index 6595b66..dca3bfd 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.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":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":9,"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":9,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":9,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":9,"i106":10,"i107":10,"i108":10,"i109"
 :10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":9,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":10,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":10,"i150":10,"i151":10,"i152":10,"i153":10,"i154":10,"i155":9};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":9,"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":9,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":9,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":9,"i106":10,"i107":10,"i108":10,"i109"
 :10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":9,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":10,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":10,"i150":10,"i151":10,"i152":10,"i153":10,"i154":10,"i155":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -128,7 +128,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre><a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.LimitedPrivate.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.LimitedPrivate</a>(<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.LimitedPrivate.html#value--">value</a>="Tools")
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.224">HMaster</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.225">HMaster</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a></pre>
 <div class="block">HMaster is the "master server" for HBase. An HBase cluster has one active
@@ -268,182 +268,176 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#hfileCleaner">hfileCleaner</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initializationBeforeMetaAssignment">initializationBeforeMetaAssignment</a></span></code>
-<div class="block">flag used in test cases in order to simulate RS failures during master initialization</div>
-</td>
-</tr>
-<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></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initialized">initialized</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">LoadBalancerTracker</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#loadBalancerTracker">loadBalancerTracker</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/master/locking/LockManager.html" title="class in org.apache.hadoop.hbase.master.locking">LockManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#lockManager">lockManager</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static org.apache.commons.logging.Log</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/master/cleaner/LogCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">LogCleaner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#logCleaner">logCleaner</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">MasterMaintenanceModeTracker</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#maintenanceModeTracker">maintenanceModeTracker</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#MASTER">MASTER</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#masterActiveTime">masterActiveTime</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#masterCheckCompression">masterCheckCompression</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#masterCheckEncryption">masterCheckEncryption</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private org.eclipse.jetty.server.Server</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#masterJettyServer">masterJettyServer</a></span></code>
 <div class="block">jetty server for master to redirect requests to regionserver infoServer</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#maxBlancingTime">maxBlancingTime</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private double</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#maxRitPercent">maxRitPercent</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mergePlanCount">mergePlanCount</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMaster.html" title="class in org.apache.hadoop.hbase.master">MetricsMaster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#metricsMaster">metricsMaster</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/master/MobCompactionChore.html" title="class in org.apache.hadoop.hbase.master">MobCompactionChore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mobCompactChore">mobCompactChore</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/util/IdLock.html" title="class in org.apache.hadoop.hbase.util">IdLock</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mobCompactionLock">mobCompactionLock</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mobCompactionStates">mobCompactionStates</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/master/MasterMobCompactionThread.html" title="class in org.apache.hadoop.hbase.master">MasterMobCompactionThread</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mobCompactThread">mobCompactThread</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/procedure/MasterProcedureManagerHost.html" title="class in org.apache.hadoop.hbase.procedure">MasterProcedureManagerHost</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mpmHost">mpmHost</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizer.html" title="interface in org.apache.hadoop.hbase.master.normalizer">RegionNormalizer</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#normalizer">normalizer</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.html" title="class in org.apache.hadoop.hbase.master.normalizer">RegionNormalizerChore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#normalizerChore">normalizerChore</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#preLoadTableDescriptors">preLoadTableDescriptors</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#procedureExecutor">procedureExecutor</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#procedureStore">procedureStore</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/quotas/MasterQuotaManager.html" title="class in org.apache.hadoop.hbase.quotas">MasterQuotaManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#quotaManager">quotaManager</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">QuotaObserverChore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#quotaObserverChore">quotaObserverChore</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">RegionNormalizerTracker</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#regionNormalizerTracker">regionNormalizerTracker</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">RegionServerTracker</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#regionServerTracker">regionServerTracker</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/master/replication/ReplicationManager.html" title="class in org.apache.hadoop.hbase.master.replication">ReplicationManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#replicationManager">replicationManager</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/master/cleaner/ReplicationMetaCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">ReplicationMetaCleaner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#replicationMetaCleaner">replicationMetaCleaner</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/master/cleaner/ReplicationZKNodeCleanerChore.html" title="class in org.apache.hadoop.hbase.master.cleaner">ReplicationZKNodeCleanerChore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#replicationZKNodeCleanerChore">replicationZKNodeCleanerChore</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/monitoring/MemoryBoundedLogMessageBuffer.html" title="class in org.apache.hadoop.hbase.monitoring">MemoryBoundedLogMessageBuffer</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#rsFatals">rsFatals</a></span></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></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#serverCrashProcessingEnabled">serverCrashProcessingEnabled</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#serverManager">serverManager</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#serviceStarted">serviceStarted</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html" title="class in org.apache.hadoop.hbase.master.snapshot">SnapshotManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#snapshotManager">snapshotManager</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/quotas/SnapshotQuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">SnapshotQuotaObserverChore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#snapshotQuotaChore">snapshotQuotaChore</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifier.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotNotifier</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#spaceQuotaSnapshotNotifier">spaceQuotaSnapshotNotifier</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/zookeeper/SplitOrMergeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">SplitOrMergeTracker</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#splitOrMergeTracker">splitOrMergeTracker</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#splitPlanCount">splitPlanCount</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/master/TableStateManager.html" title="class in org.apache.hadoop.hbase.master">TableStateManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#tableStateManager">tableStateManager</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html" title="class in org.apache.hadoop.hbase.master">MasterWalManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#walManager">walManager</a></span></code>&nbsp;</td>
 </tr>
@@ -1027,67 +1021,61 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 </tr>
 <tr id="i107" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInitializationStartsMetaRegionAssignment--">isInitializationStartsMetaRegionAssignment</a></span>()</code>
-<div class="block">Report whether this master has started initialization and is about to do meta region assignment</div>
-</td>
-</tr>
-<tr id="i108" class="altColor">
-<td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInitialized--">isInitialized</a></span>()</code>
 <div class="block">Report whether this master has completed with its initialization and is
  ready.</div>
 </td>
 </tr>
-<tr id="i109" class="rowColor">
+<tr id="i108" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInMaintenanceMode--">isInMaintenanceMode</a></span>()</code>
 <div class="block">Report whether this master is in maintenance mode.</div>
 </td>
 </tr>
-<tr id="i110" class="altColor">
+<tr id="i109" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isNormalizerOn--">isNormalizerOn</a></span>()</code>
 <div class="block">Queries the state of the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>RegionNormalizerTracker</code></a>.</div>
 </td>
 </tr>
-<tr id="i111" class="rowColor">
+<tr id="i110" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isServerCrashProcessingEnabled--">isServerCrashProcessingEnabled</a></span>()</code>
 <div class="block">ServerCrashProcessingEnabled is set false before completing assignMeta to prevent processing
  of crashed servers.</div>
 </td>
 </tr>
-<tr id="i112" class="altColor">
+<tr id="i111" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isSplitOrMergeEnabled-org.apache.hadoop.hbase.client.MasterSwitchType-">isSplitOrMergeEnabled</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client">MasterSwitchType</a>&nbsp;switchType)</code>
 <div class="block">Queries the state of the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/SplitOrMergeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>SplitOrMergeTracker</code></a>.</div>
 </td>
 </tr>
-<tr id="i113" class="rowColor">
+<tr id="i112" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listDrainingRegionServers--">listDrainingRegionServers</a></span>()</code>
 <div class="block">List region servers marked as draining to not get additional regions assigned to them.</div>
 </td>
 </tr>
-<tr id="i114" class="altColor">
+<tr id="i113" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockInfo.html" title="class in org.apache.hadoop.hbase.procedure2">LockInfo</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listLocks--">listLocks</a></span>()</code>
 <div class="block">List locks</div>
 </td>
 </tr>
-<tr id="i115" class="rowColor">
+<tr id="i114" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ProcedureInfo.html" title="class in org.apache.hadoop.hbase">ProcedureInfo</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listProcedures--">listProcedures</a></span>()</code>
 <div class="block">List procedures</div>
 </td>
 </tr>
-<tr id="i116" class="altColor">
+<tr id="i115" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerDescription</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listReplicationPeers-java.lang.String-">listReplicationPeers</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex)</code>
 <div class="block">Return a list of replication peers.</div>
 </td>
 </tr>
-<tr id="i117" class="rowColor">
+<tr id="i116" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptors-java.lang.String-java.lang.String-java.util.List-boolean-">listTableDescriptors</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace,
                     <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
@@ -1096,13 +1084,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Returns the list of table descriptors that match the specified request</div>
 </td>
 </tr>
-<tr id="i118" class="altColor">
+<tr id="i117" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptorsByNamespace-java.lang.String-">listTableDescriptorsByNamespace</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Get list of table descriptors by namespace</div>
 </td>
 </tr>
-<tr id="i119" class="rowColor">
+<tr id="i118" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNames-java.lang.String-java.lang.String-boolean-">listTableNames</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace,
               <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
@@ -1110,24 +1098,24 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Returns the list of table names that match the specified request</div>
 </td>
 </tr>
-<tr id="i120" class="altColor">
+<tr id="i119" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNamesByNamespace-java.lang.String-">listTableNamesByNamespace</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Get list of table names by namespace</div>
 </td>
 </tr>
-<tr id="i121" class="rowColor">
+<tr id="i120" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#login-org.apache.hadoop.hbase.security.UserProvider-java.lang.String-">login</a></span>(<a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;user,
      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;host)</code>
 <div class="block">For compatibility, if failed with regionserver credentials, try the master one</div>
 </td>
 </tr>
-<tr id="i122" class="altColor">
+<tr id="i121" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#main-java.lang.String:A-">main</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</code>&nbsp;</td>
 </tr>
-<tr id="i123" class="rowColor">
+<tr id="i122" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mergeRegions-org.apache.hadoop.hbase.HRegionInfo:A-boolean-long-long-">mergeRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>[]&nbsp;regionsToMerge,
             boolean&nbsp;forcible,
@@ -1136,7 +1124,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Merge regions in a table.</div>
 </td>
 </tr>
-<tr id="i124" class="altColor">
+<tr id="i123" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HColumnDescriptor-long-long-">modifyColumn</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
             <a href="../../../../../org/apache/hadoop/hbase/HColumnDescriptor.html" title="class in org.apache.hadoop.hbase">HColumnDescriptor</a>&nbsp;descriptor,
@@ -1145,7 +1133,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Modify the column descriptor of an existing column in an existing table</div>
 </td>
 </tr>
-<tr id="i125" class="rowColor">
+<tr id="i124" class="altColor">
 <td class="colFirst"><code>(package private) long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">modifyNamespace</a></span>(<a href="../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&nbsp;namespaceDescriptor,
                long&nbsp;nonceGroup,
@@ -1153,7 +1141,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Modify an existing Namespace.</div>
 </td>
 </tr>
-<tr id="i126" class="altColor">
+<tr id="i125" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.HTableDescriptor-long-long-">modifyTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
            <a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;descriptor,
@@ -1162,21 +1150,27 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Modify the descriptor of an existing table</div>
 </td>
 </tr>
-<tr id="i127" class="rowColor">
+<tr id="i126" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#move-byte:A-byte:A-">move</a></span>(byte[]&nbsp;encodedRegionName,
     byte[]&nbsp;destServerName)</code>&nbsp;</td>
 </tr>
-<tr id="i128" class="altColor">
+<tr id="i127" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#normalizeRegions--">normalizeRegions</a></span>()</code>
 <div class="block">Perform normalization of cluster (invoked by <a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.html" title="class in org.apache.hadoop.hbase.master.normalizer"><code>RegionNormalizerChore</code></a>).</div>
 </td>
 </tr>
-<tr id="i129" class="rowColor">
+<tr id="i128" class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#putUpJettyServer--">putUpJettyServer</a></span>()</code>&nbsp;</td>
 </tr>
+<tr id="i129" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#recoverMeta--">recoverMeta</a></span>()</code>
+<div class="block">Recover meta table.</div>
+</td>
+</tr>
 <tr id="i130" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#registerService-com.google.protobuf.Service-">registerService</a></span>(com.google.protobuf.Service&nbsp;instance)</code>
@@ -1394,7 +1388,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.225">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.226">LOG</a></pre>
 </li>
 </ul>
 <a name="MASTER">
@@ -1403,7 +1397,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>MASTER</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.281">MASTER</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.282">MASTER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.MASTER">Constant Field Values</a></dd>
@@ -1416,7 +1410,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>activeMasterManager</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ActiveMasterManager.html" title="class in org.apache.hadoop.hbase.master">ActiveMasterManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.284">activeMasterManager</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ActiveMasterManager.html" title="class in org.apache.hadoop.hbase.master">ActiveMasterManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.285">activeMasterManager</a></pre>
 </li>
 </ul>
 <a name="regionServerTracker">
@@ -1425,7 +1419,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>regionServerTracker</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">RegionServerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.286">regionServerTracker</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">RegionServerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.287">regionServerTracker</a></pre>
 </li>
 </ul>
 <a name="drainingServerTracker">
@@ -1434,7 +1428,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>drainingServerTracker</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/DrainingServerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">DrainingServerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.288">drainingServerTracker</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/DrainingServerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">DrainingServerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.289">drainingServerTracker</a></pre>
 </li>
 </ul>
 <a name="loadBalancerTracker">
@@ -1443,7 +1437,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>loadBalancerTracker</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">LoadBalancerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.290">loadBalancerTracker</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">LoadBalancerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.291">loadBalancerTracker</a></pre>
 </li>
 </ul>
 <a name="splitOrMergeTracker">
@@ -1452,7 +1446,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>splitOrMergeTracker</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/SplitOrMergeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">SplitOrMergeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.293">splitOrMergeTracker</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/SplitOrMergeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">SplitOrMergeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.294">splitOrMergeTracker</a></pre>
 </li>
 </ul>
 <a name="regionNormalizerTracker">
@@ -1461,7 +1455,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>regionNormalizerTracker</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">RegionNormalizerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.296">regionNormalizerTracker</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">RegionNormalizerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.297">regionNormalizerTracker</a></pre>
 </li>
 </ul>
 <a name="maintenanceModeTracker">
@@ -1470,7 +1464,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>maintenanceModeTracker</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">MasterMaintenanceModeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.299">maintenanceModeTracker</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">MasterMaintenanceModeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.300">maintenanceModeTracker</a></pre>
 </li>
 </ul>
 <a name="clusterSchemaService">
@@ -1479,7 +1473,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterSchemaService</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ClusterSchemaService.html" title="interface in org.apache.hadoop.hbase.master">ClusterSchemaService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.301">clusterSchemaService</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ClusterSchemaService.html" title="interface in org.apache.hadoop.hbase.master">ClusterSchemaService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.302">clusterSchemaService</a></pre>
 </li>
 </ul>
 <a name="metricsMaster">
@@ -1488,7 +1482,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>metricsMaster</h4>
-<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMaster.html" title="class in org.apache.hadoop.hbase.master">MetricsMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.304">metricsMaster</a></pre>
+<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMaster.html" title="class in org.apache.hadoop.hbase.master">MetricsMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.305">metricsMaster</a></pre>
 </li>
 </ul>
 <a name="fileSystemManager">
@@ -1497,7 +1491,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>fileSystemManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterFileSystem.html" title="class in org.apache.hadoop.hbase.master">MasterFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.306">fileSystemManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterFileSystem.html" title="class in org.apache.hadoop.hbase.master">MasterFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.307">fileSystemManager</a></pre>
 </li>
 </ul>
 <a name="walManager">
@@ -1506,7 +1500,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>walManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html" title="class in org.apache.hadoop.hbase.master">MasterWalManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.307">walManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html" title="class in org.apache.hadoop.hbase.master">MasterWalManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.308">walManager</a></pre>
 </li>
 </ul>
 <a name="serverManager">
@@ -1515,7 +1509,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>serverManager</h4>
-<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.310">serverManager</a></pre>
+<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.311">serverManager</a></pre>
 </li>
 </ul>
 <a name="assignmentManager">
@@ -1524,7 +1518,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>assignmentManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.313">assignmentManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.314">assignmentManager</a></pre>
 </li>
 </ul>
 <a name="replicationManager">
@@ -1533,7 +1527,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/replication/ReplicationManager.html" title="class in org.apache.hadoop.hbase.master.replication">ReplicationManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.316">replicationManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/replication/ReplicationManager.html" title="class in org.apache.hadoop.hbase.master.replication">ReplicationManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.317">replicationManager</a></pre>
 </li>
 </ul>
 <a name="rsFatals">
@@ -1542,7 +1536,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>rsFatals</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/monitoring/MemoryBoundedLogMessageBuffer.html" title="class in org.apache.hadoop.hbase.monitoring">MemoryBoundedLogMessageBuffer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.321">rsFatals</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/monitoring/MemoryBoundedLogMessageBuffer.html" title="class in org.apache.hadoop.hbase.monitoring">MemoryBoundedLogMessageBuffer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.322">rsFatals</a></pre>
 </li>
 </ul>
 <a name="activeMaster">
@@ -1551,7 +1545,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>activeMaster</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.324">activeMaster</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.325">activeMaster</a></pre>
 </li>
 </ul>
 <a name="initialized">
@@ -1560,7 +1554,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>initialized</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.328">initialized</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.329">initialized</a></pre>
 </li>
 </ul>
 <a name="serviceStarted">
@@ -1569,7 +1563,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>serviceStarted</h4>
-<pre>volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.332">serviceStarted</a></pre>
+<pre>volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.333">serviceStarted</a></pre>
 </li>
 </ul>
 <a name="serverCrashProcessingEnabled">
@@ -1578,7 +1572,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>serverCrashProcessingEnabled</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.335">serverCrashProcessingEnabled</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.336">serverCrashProcessingEnabled</a></pre>
 </li>
 </ul>
 <a name="maxBlancingTime">
@@ -1587,7 +1581,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>maxBlancingTime</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.339">maxBlancingTime</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.340">maxBlancingTime</a></pre>
 </li>
 </ul>
 <a name="maxRitPercent">
@@ -1596,7 +1590,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>maxRitPercent</h4>
-<pre>private final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.341">maxRitPercent</a></pre>
+<pre>private final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.342">maxRitPercent</a></pre>
 </li>
 </ul>
 <a name="lockManager">
@@ -1605,7 +1599,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>lockManager</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/locking/LockManager.html" title="class in org.apache.hadoop.hbase.master.locking">LockManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.343">lockManager</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/locking/LockManager.html" title="class in org.apache.hadoop.hbase.master.locking">LockManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.344">lockManager</a></pre>
 </li>
 </ul>
 <a name="balancer">
@@ -1614,7 +1608,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>balancer</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html" title="interface in org.apache.hadoop.hbase.master">LoadBalancer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.345">balancer</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html" title="interface in org.apache.hadoop.hbase.master">LoadBalancer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.346">balancer</a></pre>
 </li>
 </ul>
 <a name="normalizer">
@@ -1623,7 +1617,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>normalizer</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizer.html" title="interface in org.apache.hadoop.hbase.master.normalizer">RegionNormalizer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.346">normalizer</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizer.html" title="interface in org.apache.hadoop.hbase.master.normalizer">RegionNormalizer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.347">normalizer</a></pre>
 </li>
 </ul>
 <a name="balancerChore">
@@ -1632,7 +1626,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>balancerChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/balancer/BalancerChore.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.347">balancerChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/balancer/BalancerChore.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.348">balancerChore</a></pre>
 </li>
 </ul>
 <a name="normalizerChore">
@@ -1641,7 +1635,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>normalizerChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.html" title="class in org.apache.hadoop.hbase.master.normalizer">RegionNormalizerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.348">normalizerChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.html" title="class in org.apache.hadoop.hbase.master.normalizer">RegionNormalizerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.349">normalizerChore</a></pre>
 </li>
 </ul>
 <a name="clusterStatusChore">
@@ -1650,7 +1644,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterStatusChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/balancer/ClusterStatusChore.html" title="class in org.apache.hadoop.hbase.master.balancer">ClusterStatusChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.349">clusterStatusChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/balancer/ClusterStatusChore.html" title="class in org.apache.hadoop.hbase.master.balancer">ClusterStatusChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.350">clusterStatusChore</a></pre>
 </li>
 </ul>
 <a name="clusterStatusPublisherChore">
@@ -1659,7 +1653,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterStatusPublisherChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ClusterStatusPublisher.html" title="class in org.apache.hadoop.hbase.master">ClusterStatusPublisher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.350">clusterStatusPublisherChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ClusterStatusPublisher.html" title="class in org.apache.hadoop.hbase.master">ClusterStatusPublisher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.351">clusterStatusPublisherChore</a></pre>
 </li>
 </ul>
 <a name="catalogJanitorChore">
@@ -1668,7 +1662,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>catalogJanitorChore</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/CatalogJanitor.html" title="class in org.apache.hadoop.hbase.master">CatalogJanitor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.352">catalogJanitorChore</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/CatalogJanitor.html" title="class in org.apache.hadoop.hbase.master">CatalogJanitor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.353">catalogJanitorChore</a></pre>
 </li>
 </ul>
 <a name="replicationMetaCleaner">
@@ -1677,7 +1671,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationMetaCleaner</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/ReplicationMetaCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">ReplicationMetaCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.353">replicationMetaCleaner</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/ReplicationMetaCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">ReplicationMetaCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.354">replicationMetaCleaner</a></pre>
 </li>
 </ul>
 <a name="replicationZKNodeCleanerChore">
@@ -1686,7 +1680,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationZKNodeCleanerChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/ReplicationZKNodeCleanerChore.html" title="class in org.apache.hadoop.hbase.master.cleaner">ReplicationZKNodeCleanerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.354">replicationZKNodeCleanerChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/ReplicationZKNodeCleanerChore.html" title="class in org.apache.hadoop.hbase.master.cleaner">ReplicationZKNodeCleanerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.355">replicationZKNodeCleanerChore</a></pre>
 </li>
 </ul>
 <a name="logCleaner">
@@ -1695,7 +1689,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>logCleaner</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/LogCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">LogCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.355">logCleaner</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/LogCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">LogCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.356">logCleaner</a></pre>
 </li>
 </ul>
 <a name="hfileCleaner">
@@ -1704,7 +1698,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>hfileCleaner</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/HFileCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">HFileCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.356">hfileCleaner</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/HFileCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">HFileCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.357">hfileCleaner</a></pre>
 </li>
 </ul>
 <a name="expiredMobFileCleanerChore">
@@ -1713,7 +1707,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>expiredMobFileCleanerChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ExpiredMobFileCleanerChore.html" title="class in org.apache.hadoop.hbase.master">ExpiredMobFileCleanerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.357">expiredMobFileCleanerChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ExpiredMobFileCleanerChore.html" title="class in org.apache.hadoop.hbase.master">ExpiredMobFileCleanerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.358">expiredMobFileCleanerChore</a></pre>
 </li>
 </ul>
 <a name="mobCompactChore">
@@ -1722,7 +1716,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mobCompactChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MobCompactionChore.html" title="class in org.apache.hadoop.hbase.master">MobCompactionChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.358">mobCompactChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MobCompactionChore.html" title="class in org.apache.hadoop.hbase.master">MobCompactionChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.359">mobCompactChore</a></pre>
 </li>
 </ul>
 <a name="mobCompactThread">
@@ -1731,7 +1725,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mobCompactThread</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterMobCompactionThread.html" title="class in org.apache.hadoop.hbase.master">MasterMobCompactionThread</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.359">mobCompactThread</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterMobCompactionThread.html" title="class in org.apache.hadoop.hbase.master">MasterMobCompactionThread</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.360">mobCompactThread</a></pre>
 </li>
 </ul>
 <a name="mobCompactionLock">
@@ -1740,7 +1734,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mobCompactionLock</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/IdLock.html" title="class in org.apache.hadoop.hbase.util">IdLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.361">mobCompactionLock</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/IdLock.html" title="class in org.apache.hadoop.hbase.util">IdLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.362">mobCompactionLock</a></pre>
 </li>
 </ul>
 <a name="mobCompactionStates">
@@ -1749,7 +1743,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mobCompactionStates</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.364">mobCompactionStates</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.365">mobCompactionStates</a></pre>
 </li>
 </ul>
 <a name="cpHost">
@@ -1758,7 +1752,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>cpHost</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.366">cpHost</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.367">cpHost</a></pre>
 </li>
 </ul>
 <a name="preLoadTableDescriptors">
@@ -1767,7 +1761,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>preLoadTableDescriptors</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.368">preLoadTableDescriptors</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.369">preLoadTableDescriptors</a></pre>
 </li>
 </ul>
 <a name="masterActiveTime">
@@ -1776,7 +1770,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>masterActiveTime</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.371">masterActiveTime</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.372">masterActiveTime</a></pre>
 </li>
 </ul>
 <a name="masterCheckCompression">
@@ -1785,7 +1779,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>masterCheckCompression</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.374">masterCheckCompression</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.375">masterCheckCompression</a></pre>
 </li>
 </ul>
 <a name="masterCheckEncryption">
@@ -1794,7 +1788,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>masterCheckEncryption</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.377">masterCheckEncryption</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.378">masterCheckEncryption</a></pre>
 </li>
 </ul>
 <a name="coprocessorServiceHandlers">
@@ -1803,7 +1797,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>coprocessorServiceHandlers</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,com.google.protobuf.Service&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.379">coprocessorServiceHandlers</a></pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,com.google.protobuf.Service&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.380">coprocessorServiceHandlers</a></pre>
 </li>
 </ul>
 <a name="snapshotManager">
@@ -1812,7 +1806,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotManager</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html" title="class in org.apache.hadoop.hbase.master.snapshot">SnapshotManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.382">snapshotManager</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html" title="class in org.apache.hadoop.hbase.master.snapshot">SnapshotManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.383">snapshotManager</a></pre>
 </li>
 </ul>
 <a name="mpmHost">
@@ -1821,7 +1815,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mpmHost</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure/MasterProcedureManagerHost.html" title="class in org.apache.hadoop.hbase.procedure">MasterProcedureManagerHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.384">mpmHost</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure/MasterProcedureManagerHost.html" title="class in org.apache.hadoop.hbase.procedure">MasterProcedureManagerHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.385">mpmHost</a></pre>
 </li>
 </ul>
 <a name="quotaManager">
@@ -1830,7 +1824,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>quotaManager</h4>
-<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/MasterQuotaManager.html" title="class in org.apache.hadoop.hbase.quotas">MasterQuotaManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.387">quotaManager</a></pre>
+<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/MasterQuotaManager.html" title="class in org.apache.hadoop.hbase.quotas">MasterQuotaManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.388">quotaManager</a></pre>
 </li>
 </ul>
 <a name="spaceQuotaSnapshotNotifier">
@@ -1839,7 +1833,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>spaceQuotaSnapshotNotifier</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifier.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotNotifier</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.388">spaceQuotaSnapshotNotifier</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifier.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotNotifier</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.389">spaceQuotaSnapshotNotifier</a></pre>
 </li>
 </ul>
 <a name="quotaObserverChore">
@@ -1848,7 +1842,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>quotaObserverChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">QuotaObserverChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.389">quotaObserverChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">QuotaObserverChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.390">quotaObserverChore</a></pre>
 </li>
 </ul>
 <a name="snapshotQuotaChore">
@@ -1857,7 +1851,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotQuotaChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/SnapshotQuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">SnapshotQuotaObserverChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.390">snapshotQuotaChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/SnapshotQuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">SnapshotQuotaObserverChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.391">snapshotQuotaChore</a></pre>
 </li>
 </ul>
 <a name="procedureExecutor">
@@ -1866,7 +1860,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>procedureExecutor</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.392">procedureExecutor</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.393">procedureExecutor</a></pre>
 </li>
 </ul>
 <a name="procedureStore">
@@ -1875,7 +1869,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>procedureStore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.393">procedureStore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.394">procedureStore</a></pre>
 </li>
 </ul>
 <a name="tableStateManager">
@@ -1884,7 +1878,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>tableStateManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/TableStateManager.html" title="class in org.apache.hadoop.hbase.master">TableStateManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.396">tableStateManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/TableStateManager.html" title="class in org.apache.hadoop.hbase.master">TableStateManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.397">tableStateManager</a></pre>
 </li>
 </ul>
 <a name="splitPlanCount">
@@ -1893,7 +1887,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>splitPlanCount</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.398">splitPlanCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.399">splitPlanCount</a></pre>
 </li>
 </ul>
 <a name="mergePlanCount">
@@ -1902,17 +1896,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mergePlanCount</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.399">mergePlanCount</a></pre>
-</li>
-</ul>
-<a name="initializationBeforeMetaAssignment">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>initializationBeforeMetaAssignment</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.402">initializationBeforeMetaAssignment</a></pre>
-<div class="block">flag used in test cases in order to simulate RS failures during master initialization</div>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.400">mergePlanCount</a></pre>
 </li>
 </ul>
 <a name="favoredNodesManager">
@@ -1921,7 +1905,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>favoredNodesManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/favored/FavoredNodesManager.html" title="class in org.apache.hadoop.hbase.favored">FavoredNodesManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.405">favoredNodesManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/favored/FavoredNodesManager.html" title="class in org.apache.hadoop.hbase.favored">FavoredNodesManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.403">favoredNodesManager</a></pre>
 </li>
 </ul>
 <a name="masterJettyServer">
@@ -1930,7 +1914,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockListLast">
 <li class="blockList">
 <h4>masterJettyServer</h4>
-<pre>private&nbsp;org.eclipse.jetty.server.Server <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.408">masterJettyServer</a></pre>
+<pre>private&nbsp;org.eclipse.jetty.server.Server <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.406">masterJettyServer</a></pre>
 <div class="block">jetty server for master to redirect requests to regionserver infoServer</div>
 </li>
 </ul>
@@ -1948,7 +1932,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HMaster</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.464">HMaster</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.462">HMaster</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                <a href="../../../../../org/apache/hadoop/hbase/CoordinatedStateManager.html" title="interface in org.apache.hadoop.hbase">CoordinatedStateManager</a>&nbsp;csm)
         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                org.apache.zookeeper.KeeperException</pre>
@@ -1983,7 +1967,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>putUpJettyServer</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.531">putUpJettyServer</a>()
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.529">putUpJettyServer</a>()
                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1997,7 +1981,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>getFsTableDescriptors</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableDescriptors.html" title="interface in org.apache.hadoop.hbase">TableDescriptors</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.580">getFsTableDescriptors</a>()
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableDescriptors.html" title="interface in org.apache.hadoop.hbase">TableDescriptors</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.578">getFsTableDescriptors</a>()
                                           throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -2013,7 +1997,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>login</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.588">login</a>(<a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;user,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.586">login</a>(<a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;user,
                      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;host)
               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">For compatibility, if failed wit

<TRUNCATED>

[32/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html
index 68c6c8f..7097eec 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html
@@ -18,8 +18,8 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":9,"i21":10,"i22":10};
-var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
 var tableTab = "tableTab";
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.58">ServerCrashProcedure</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.57">ServerCrashProcedure</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState&gt;
 implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">ServerProcedureInterface</a></pre>
 <div class="block">Handle crashed server. This is a port to ProcedureV2 of what used to be euphemistically called
@@ -186,27 +186,15 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#carryingMeta">carryingMeta</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#cycles">cycles</a></span></code>
-<div class="block">Cycles on same state.</div>
-</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>private static org.apache.commons.logging.Log</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#notifiedDeadServer">notifiedDeadServer</a></span></code>
 <div class="block">Whether DeadServer knows that we are processing it.</div>
 </td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><code>private int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#previousState">previousState</a></span></code>
-<div class="block">Ordinal of the previous state.</div>
-</td>
-</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#regionsOnCrashedServer">regionsOnCrashedServer</a></span></code>
@@ -268,7 +256,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 </a>
 <h3>Method Summary</h3>
 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
 <th class="colLast" scope="col">Method and Description</th>
@@ -395,14 +383,10 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 </td>
 </tr>
 <tr id="i20" class="altColor">
-<td class="colFirst"><code>(package private) static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#size-java.util.Collection-">size</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&nbsp;hris)</code>&nbsp;</td>
-</tr>
-<tr id="i21" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#splitLogs-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">splitLogs</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="i22" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#toStringClassDetails-java.lang.StringBuilder-">toStringClassDetails</a></span>(<a href="http://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
@@ -415,7 +399,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <
 a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="..
 /../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">
@@ -451,7 +435,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.61">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.60">LOG</a></pre>
 </li>
 </ul>
 <a name="serverName">
@@ -460,7 +444,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>serverName</h4>
-<pre>private&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/procedure/ServerCrashProcedure.html#line.66">serverName</a></pre>
+<pre>private&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/procedure/ServerCrashProcedure.html#line.65">serverName</a></pre>
 <div class="block">Name of the crashed server to process.</div>
 </li>
 </ul>
@@ -470,7 +454,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>notifiedDeadServer</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.71">notifiedDeadServer</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.70">notifiedDeadServer</a></pre>
 <div class="block">Whether DeadServer knows that we are processing it.</div>
 </li>
 </ul>
@@ -480,7 +464,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>regionsOnCrashedServer</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.76">regionsOnCrashedServer</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.75">regionsOnCrashedServer</a></pre>
 <div class="block">Regions that were on the crashed server.</div>
 </li>
 </ul>
@@ -490,37 +474,16 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>carryingMeta</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.78">carryingMeta</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.77">carryingMeta</a></pre>
 </li>
 </ul>
 <a name="shouldSplitWal">
 <!--   -->
 </a>
-<ul class="blockList">
-<li class="blockList">
-<h4>shouldSplitWal</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.79">shouldSplitWal</a></pre>
-</li>
-</ul>
-<a name="cycles">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>cycles</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.84">cycles</a></pre>
-<div class="block">Cycles on same state. Good for figuring if we are stuck.</div>
-</li>
-</ul>
-<a name="previousState">
-<!--   -->
-</a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>previousState</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.90">previousState</a></pre>
-<div class="block">Ordinal of the previous state. So we can tell if we are progressing or not. TODO: if useful,
- move this back up into StateMachineProcedure</div>
+<h4>shouldSplitWal</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.78">shouldSplitWal</a></pre>
 </li>
 </ul>
 </li>
@@ -537,7 +500,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>ServerCrashProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.98">ServerCrashProcedure</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="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.86">ServerCrashProcedure</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,
                             boolean&nbsp;shouldSplitWal,
                             boolean&nbsp;carryingMeta)</pre>
@@ -556,7 +519,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ServerCrashProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.113">ServerCrashProcedure</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.101">ServerCrashProcedure</a>()</pre>
 <div class="block">Used when deserializing from a procedure store; we'll construct one of these then call
  <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#deserializeStateData-java.io.InputStream-"><code>deserializeStateData(InputStream)</code></a>. Do not use directly.</div>
 </li>
@@ -575,7 +538,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <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/procedure/ServerCrashProcedure.html#line.118">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/procedure/ServerCrashProcedure.html#line.106">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.ServerCrashState&nbsp;state)
                                                throws <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a>,
                                                       <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</a></pre>
@@ -600,14 +563,13 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>processMeta</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.213">processMeta</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/procedure/ServerCrashProcedure.html#line.190">processMeta</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="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>env</code> - </dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
 </dl>
 </li>
 </ul>
@@ -617,7 +579,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>filterDefaultMetaRegions</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.231">filterDefaultMetaRegions</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&nbsp;regions)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.204">filterDefaultMetaRegions</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&nbsp;regions)</pre>
 </li>
 </ul>
 <a name="isDefaultMetaRegion-org.apache.hadoop.hbase.HRegionInfo-">
@@ -626,7 +588,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>isDefaultMetaRegion</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.243">isDefaultMetaRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;hri)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.210">isDefaultMetaRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;hri)</pre>
 </li>
 </ul>
 <a name="splitLogs-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
@@ -635,7 +597,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>splitLogs</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.248">splitLogs</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/procedure/ServerCrashProcedure.html#line.215">splitLogs</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="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -643,22 +605,13 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 </dl>
 </li>
 </ul>
-<a name="size-java.util.Collection-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>size</h4>
-<pre>static&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.263">size</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&nbsp;hris)</pre>
-</li>
-</ul>
 <a name="rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>rollbackState</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.268">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/procedure/ServerCrashProcedure.html#line.231">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.ServerCrashState&nbsp;state)
                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollbackState-TEnvironment-TState-">StateMachineProcedure</a></code></span></div>
@@ -678,7 +631,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>getState</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.275">getState</a>(int&nbsp;stateId)</pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.238">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>
@@ -697,7 +650,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>getStateId</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.280">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState&nbsp;state)</pre>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.243">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState&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>
@@ -716,7 +669,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>getInitialState</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.285">getInitialState</a>()</pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.248">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>
@@ -733,7 +686,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>abort</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.290">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/procedure/ServerCrashProcedure.html#line.253">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
@@ -756,7 +709,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <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/procedure/ServerCrashProcedure.html#line.296">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/procedure/ServerCrashProcedure.html#line.259">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
@@ -793,7 +746,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>releaseLock</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.307">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/procedure/ServerCrashProcedure.html#line.270">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>
@@ -808,7 +761,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringClassDetails</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.312">toStringClassDetails</a>(<a href="http://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/procedure/ServerCrashProcedure.html#line.275">toStringClassDetails</a>(<a href="http://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>
@@ -826,7 +779,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>serializeStateData</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.323">serializeStateData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.286">serializeStateData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream)
                         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-java.io.OutputStream-">Procedure</a></code></span></div>
 <div class="block">The user-level code of the procedure may have some state to
@@ -848,7 +801,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>deserializeStateData</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.340">deserializeStateData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;stream)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.303">deserializeStateData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;stream)
                           throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-java.io.InputStream-">Procedure</a></code></span></div>
 <div class="block">Called on store load to allow the user to decode the previously serialized
@@ -869,7 +822,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerName</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/procedure/ServerCrashProcedure.html#line.359">getServerName</a>()</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/procedure/ServerCrashProcedure.html#line.322">getServerName</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.html#getServerName--">getServerName</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">ServerProcedureInterface</a></code></dd>
@@ -884,7 +837,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>hasMetaTableRegion</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.364">hasMetaTableRegion</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.327">hasMetaTableRegion</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.html#hasMetaTableRegion--">hasMetaTableRegion</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">ServerProcedureInterface</a></code></dd>
@@ -899,7 +852,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerOperationType</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">ServerProcedureInterface.ServerOperationType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.369">getServerOperationType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">ServerProcedureInterface.ServerOperationType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.332">getServerOperationType</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.html#getServerOperationType--">ServerProcedureInterface</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 crash handler and we have some assignment operation pending
@@ -918,7 +871,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>isYieldBeforeExecuteFromState</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.381">isYieldBeforeExecuteFromState</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/procedure/ServerCrashProcedure.html#line.344">isYieldBeforeExecuteFromState</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.ServerCrashState&nbsp;state)</pre>
 <div class="block">For this procedure, yield at end of each successful flow step so that all crashed servers
  can make progress rather than do the default which has each procedure running to completion
@@ -941,7 +894,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldWaitClientAck</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.386">shouldWaitClientAck</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/procedure/ServerCrashProcedure.html#line.349">shouldWaitClientAck</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#shouldWaitClientAck-TEnvironment-">Procedure</a></code></span></div>
 <div class="block">By default, the executor will keep the procedure result around util
  the eviction TTL is expired. The client can cut down the waiting time
@@ -964,7 +917,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <ul class="blockList">
 <li class="blockList">
 <h4>handleRIT</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.401">handleRIT</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/procedure/ServerCrashProcedure.html#line.363">handleRIT</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="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&nbsp;regions)</pre>
 <div class="block">Handle any outstanding RIT that are up against this.serverName, the crashed server.
  Notify them of crash. Remove assign entries from the passed in <code>regions</code>
@@ -972,7 +925,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
  Notify Unassigns also.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>crashedServer</code> - Server that crashed.</dd>
+<dd><code>env</code> - </dd>
 <dd><code>regions</code> - Regions that were on crashed server</dd>
 </dl>
 </li>
@@ -983,7 +936,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
 <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/procedure/ServerCrashProcedure.html#line.435">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/procedure/ServerCrashProcedure.html#line.397">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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html
index f09a814..c74e0d9 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html
@@ -101,7 +101,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>All Known Implementing Classes:</dt>
-<dd><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineNamespaceProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AddColumnFamilyProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>, <a h
 ref="../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CloneSnapshotProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CreateNamespaceProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CreateTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DeleteColumnFamilyProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DeleteNamespaceProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Dele
 teTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DeleteTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DisableTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">EnableTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">GCMergedRegionsProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/GCRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">GCRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/locking/LockProcedure.html" title="class in org.apache.hadoop.hbase.master.locking">LockProcedure</a>, <a hr
 ef="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">MergeTableRegionsProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyColumnFamilyProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyNamespaceProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">MoveRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Re
 gionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">SplitTableRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">UnassignProcedure</a></dd>
+<dd><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineNamespaceProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AddColumnFamilyProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>, <a h
 ref="../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CloneSnapshotProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CreateNamespaceProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CreateTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DeleteColumnFamilyProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DeleteNamespaceProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Dele
 teTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DeleteTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DisableTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">EnableTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">GCMergedRegionsProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/GCRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">GCRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/locking/LockProcedure.html" title="class in org.apache.hadoop.hbase.master.locking">LockProcedure</a>, <a hr
 ef="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">MergeTableRegionsProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyColumnFamilyProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyNamespaceProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">MoveRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Rec
 overMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">SplitTableRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.mast
 er.assignment">UnassignProcedure</a></dd>
 </dl>
 <hr>
 <br>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html
index 25ed5da..b9c42a2 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html
@@ -353,7 +353,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBe
 foreExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/ap
 ache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">


[34/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html
index 691ad46..a904be3 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html
@@ -128,7 +128,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.552">MasterProcedureScheduler.TableQueue</a>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.555">MasterProcedureScheduler.TableQueue</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;</pre>
 </li>
 </ul>
@@ -244,7 +244,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Mast
 <ul class="blockListLast">
 <li class="blockList">
 <h4>namespaceLockStatus</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html#line.553">namespaceLockStatus</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html#line.556">namespaceLockStatus</a></pre>
 </li>
 </ul>
 </li>
@@ -261,7 +261,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Mast
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TableQueue</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html#line.555">TableQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html#line.558">TableQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                   int&nbsp;priority,
                   <a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a>&nbsp;tableLock,
                   <a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a>&nbsp;namespaceLockStatus)</pre>
@@ -281,7 +281,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Mast
 <ul class="blockList">
 <li class="blockList">
 <h4>isAvailable</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html#line.562">isAvailable</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html#line.565">isAvailable</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#isAvailable--">isAvailable</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;</code></dd>
@@ -294,10 +294,12 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Mast
 <ul class="blockListLast">
 <li class="blockList">
 <h4>requireExclusiveLock</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html#line.581">requireExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html#line.584">requireExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#requireExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">requireExclusiveLock</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>proc</code> - must not be null</dd>
 </dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueueKeyComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueueKeyComparator.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueueKeyComparator.html
index b9df309..a8fc8f7 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueueKeyComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueueKeyComparator.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.545">MasterProcedureScheduler.TableQueueKeyComparator</a>
+<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.548">MasterProcedureScheduler.TableQueueKeyComparator</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKeyComparator.html" title="interface in org.apache.hadoop.hbase.util">AvlUtil.AvlKeyComparator</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.TableQueue</a>&gt;</pre>
 </li>
@@ -190,7 +190,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TableQueueKeyComparator</h4>
-<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueueKeyComparator.html#line.545">TableQueueKeyComparator</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueueKeyComparator.html#line.548">TableQueueKeyComparator</a>()</pre>
 </li>
 </ul>
 </li>
@@ -207,7 +207,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compareKey</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueueKeyComparator.html#line.547">compareKey</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.TableQueue</a>&nbsp;node,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueueKeyComparator.html#line.550">compareKey</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.TableQueue</a>&nbsp;node,
                       <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html
index 0e1f18f..c73fb28 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html
@@ -779,7 +779,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>createLockInfo</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockInfo.html" title="class in org.apache.hadoop.hbase.procedure2">LockInfo</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.238">createLockInfo</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockInfo.ResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockInfo.ResourceType</a>&nbsp;resourceType,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockInfo.html" title="class in org.apache.hadoop.hbase.procedure2">LockInfo</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.241">createLockInfo</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockInfo.ResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockInfo.ResourceType</a>&nbsp;resourceType,
                                 <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;resourceName,
                                 <a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&nbsp;queue)</pre>
 </li>
@@ -790,7 +790,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>listLocks</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockInfo.html" title="class in org.apache.hadoop.hbase.procedure2">LockInfo</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.284">listLocks</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockInfo.html" title="class in org.apache.hadoop.hbase.procedure2">LockInfo</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.287">listLocks</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureScheduler.html#listLocks--">ProcedureScheduler</a></code></span></div>
 <div class="block">List lock queues.</div>
 <dl>
@@ -805,7 +805,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>getLockInfoForResource</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockInfo.html" title="class in org.apache.hadoop.hbase.procedure2">LockInfo</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.344">getLockInfoForResource</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockInfo.ResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockInfo.ResourceType</a>&nbsp;resourceType,
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockInfo.html" title="class in org.apache.hadoop.hbase.procedure2">LockInfo</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.347">getLockInfoForResource</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockInfo.ResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockInfo.ResourceType</a>&nbsp;resourceType,
                                        <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;resourceName)</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -819,7 +819,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>clear</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.370">clear</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.373">clear</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureScheduler.html#clear--">ProcedureScheduler</a></code></span></div>
 <div class="block">Clear current state of scheduler such that it is equivalent to newly created scheduler.
  Used for testing failure and recovery. To emulate server crash/restart,
@@ -832,7 +832,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>clearQueue</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.380">clearQueue</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.383">clearQueue</a>()</pre>
 </li>
 </ul>
 <a name="clear-org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler.Queue-org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler.FairQueue-org.apache.hadoop.hbase.util.AvlUtil.AvlKeyComparator-">
@@ -843,7 +843,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>clear</h4>
-<pre>private&nbsp;&lt;T extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;,TNode extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;T&gt;&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.394">clear</a>(TNode&nbsp;treeMap,
+<pre>private&nbsp;&lt;T extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;,TNode extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;T&gt;&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.397">clear</a>(TNode&nbsp;treeMap,
                                                                                              <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.FairQueue</a>&lt;T&gt;&nbsp;fairq,
                                                                                              <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKeyComparator.html" title="interface in org.apache.hadoop.hbase.util">AvlUtil.AvlKeyComparator</a>&lt;TNode&gt;&nbsp;comparator)</pre>
 </li>
@@ -854,7 +854,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>queueSize</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.404">queueSize</a>()</pre>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.407">queueSize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractProcedureScheduler.html#queueSize--">AbstractProcedureScheduler</a></code></span></div>
 <div class="block">Returns the number of elements in this queue.
  NOTE: this method is called with the sched lock held.</div>
@@ -872,7 +872,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>completionCleanup</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.425">completionCleanup</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.428">completionCleanup</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureScheduler.html#completionCleanup-org.apache.hadoop.hbase.procedure2.Procedure-">ProcedureScheduler</a></code></span></div>
 <div class="block">The procedure in execution completed.
  This can be implemented to perform cleanups.</div>
@@ -888,7 +888,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>addToRunQueue</h4>
-<pre>private static&nbsp;&lt;T extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.452">addToRunQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.FairQueue</a>&lt;T&gt;&nbsp;fairq,
+<pre>private static&nbsp;&lt;T extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.455">addToRunQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.FairQueue</a>&lt;T&gt;&nbsp;fairq,
                                                             <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;T&gt;&nbsp;queue)</pre>
 </li>
 </ul>
@@ -898,7 +898,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>removeFromRunQueue</h4>
-<pre>private static&nbsp;&lt;T extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.458">removeFromRunQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.FairQueue</a>&lt;T&gt;&nbsp;fairq,
+<pre>private static&nbsp;&lt;T extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.461">removeFromRunQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.FairQueue</a>&lt;T&gt;&nbsp;fairq,
                                                                  <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;T&gt;&nbsp;queue)</pre>
 </li>
 </ul>
@@ -908,7 +908,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableQueue</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.TableQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.468">getTableQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.TableQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.471">getTableQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 <a name="removeTableQueue-org.apache.hadoop.hbase.TableName-">
@@ -917,7 +917,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>removeTableQueue</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.478">removeTableQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.481">removeTableQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 <a name="isTableProcedure-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -926,7 +926,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>isTableProcedure</h4>
-<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.484">isTableProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
+<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.487">isTableProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
 </li>
 </ul>
 <a name="getTableName-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -935,7 +935,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableName</h4>
-<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.488">getTableName</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
+<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.491">getTableName</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
 </li>
 </ul>
 <a name="getServerQueue-org.apache.hadoop.hbase.ServerName-">
@@ -944,7 +944,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerQueue</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.ServerQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.495">getServerQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.ServerQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.498">getServerQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 </li>
 </ul>
 <a name="getBucketIndex-java.lang.Object:A-int-">
@@ -953,7 +953,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>getBucketIndex</h4>
-<pre>private static&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.505">getBucketIndex</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;buckets,
+<pre>private static&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.508">getBucketIndex</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;buckets,
                                   int&nbsp;hashCode)</pre>
 </li>
 </ul>
@@ -963,7 +963,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>isServerProcedure</h4>
-<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.509">isServerProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
+<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.512">isServerProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
 </li>
 </ul>
 <a name="getServerName-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -972,7 +972,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerName</h4>
-<pre>private static&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/procedure/MasterProcedureScheduler.html#line.513">getServerName</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
+<pre>private static&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/procedure/MasterProcedureScheduler.html#line.516">getServerName</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
 </li>
 </ul>
 <a name="requireTableExclusiveLock-org.apache.hadoop.hbase.master.procedure.TableProcedureInterface-">
@@ -981,7 +981,11 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>requireTableExclusiveLock</h4>
-<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.589">requireTableExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a>&nbsp;proc)</pre>
+<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.595">requireTableExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a>&nbsp;proc)</pre>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>proc</code> - must not be null</dd>
+</dl>
 </li>
 </ul>
 <a name="logLockInfoForResource-org.apache.hadoop.hbase.procedure2.LockInfo.ResourceType-java.lang.String-">
@@ -990,7 +994,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>logLockInfoForResource</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.621">logLockInfoForResource</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockInfo.ResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockInfo.ResourceType</a>&nbsp;resourceType,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.627">logLockInfoForResource</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockInfo.ResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockInfo.ResourceType</a>&nbsp;resourceType,
                                       <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;resourceName)</pre>
 <div class="block">Get lock info for a resource of specified type and name and log details</div>
 </li>
@@ -1001,7 +1005,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>waitTableExclusiveLock</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.646">waitTableExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.652">waitTableExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
                                       <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</pre>
 <div class="block">Suspend the procedure if the specified table is already locked.
  Other operations in the table-queue will be executed after the lock is released.</div>
@@ -1020,7 +1024,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>wakeTableExclusiveLock</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.675">wakeTableExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.681">wakeTableExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
                                    <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</pre>
 <div class="block">Wake the procedures waiting for the specified table</div>
 <dl>
@@ -1036,7 +1040,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>waitTableSharedLock</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.703">waitTableSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.709">waitTableSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
                                    <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</pre>
 <div class="block">Suspend the procedure if the specified table is already locked.
  other "read" operations in the table-queue may be executed concurrently,</div>
@@ -1055,7 +1059,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>waitTableQueueSharedLock</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.TableQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.707">waitTableQueueSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.TableQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.713">waitTableQueueSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
                                                                      <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</pre>
 </li>
 </ul>
@@ -1065,7 +1069,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>wakeTableSharedLock</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.734">wakeTableSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.740">wakeTableSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
                                 <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</pre>
 <div class="block">Wake the procedures waiting for the specified table</div>
 <dl>
@@ -1081,7 +1085,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>markTableAsDeleted</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.763">markTableAsDeleted</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.769">markTableAsDeleted</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                                      <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure)</pre>
 <div class="block">Tries to remove the queue and the table-lock of the specified table.
  If there are new operations pending (e.g. a new create),
@@ -1102,7 +1106,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>waitRegion</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.795">waitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.801">waitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
                           <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;regionInfo)</pre>
 <div class="block">Suspend the procedure if the specified region is already locked.</div>
 <dl>
@@ -1120,7 +1124,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>waitRegions</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.806">waitRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.812">waitRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
                            <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                            <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>...&nbsp;regionInfo)</pre>
 <div class="block">Suspend the procedure if the specified set of regions are already locked.</div>
@@ -1140,7 +1144,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>wakeRegion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.854">wakeRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.860">wakeRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
                        <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;regionInfo)</pre>
 <div class="block">Wake the procedures waiting for the specified region</div>
 <dl>
@@ -1156,7 +1160,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>wakeRegions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.863">wakeRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.869">wakeRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
                         <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                         <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>...&nbsp;regionInfo)</pre>
 <div class="block">Wake the procedures waiting for the specified regions</div>
@@ -1173,7 +1177,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>waitNamespaceExclusiveLock</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.910">waitNamespaceExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.916">waitNamespaceExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
                                           <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)</pre>
 <div class="block">Suspend the procedure if the specified namespace is already locked.</div>
 <dl>
@@ -1193,7 +1197,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>wakeNamespaceExclusiveLock</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.941">wakeNamespaceExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.947">wakeNamespaceExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
                                        <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)</pre>
 <div class="block">Wake the procedures waiting for the specified namespace</div>
 <dl>
@@ -1211,7 +1215,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>waitServerExclusiveLock</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.970">waitServerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.976">waitServerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
                                        <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 <div class="block">Try to acquire the exclusive lock on the specified server.</div>
 <dl>
@@ -1231,7 +1235,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>wakeServerExclusiveLock</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.992">wakeServerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.998">wakeServerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;procedure,
                                     <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 <div class="block">Wake the procedures waiting for the specified server</div>
 <dl>
@@ -1249,7 +1253,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockListLast">
 <li class="blockList">
 <h4>dumpLocks</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.1264">dumpLocks</a>()
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.1274">dumpLocks</a>()
                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">For debugging. Expensive.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.html
index 2493fd6..a3feb2f 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.html
@@ -387,7 +387,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBe
 foreExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/ap
 ache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html
index 29d663e..094e407 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html
@@ -342,7 +342,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBe
 foreExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/ap
 ache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html
index 942a259..7bc66ac 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html
@@ -401,7 +401,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBe
 foreExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/ap
 ache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.ProcedureFuture.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.ProcedureFuture.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.ProcedureFuture.html
index d515bdc..81d9442 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.ProcedureFuture.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.ProcedureFuture.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.Predicate.html" title="interface in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.ProcedureFuture.html" target="_top">Frames</a></li>
@@ -399,7 +399,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurren
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.Predicate.html" title="interface in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.ProcedureFuture.html" target="_top">Frames</a></li>


[24/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
index 596b800..681f621 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
@@ -1456,364 +1456,366 @@
 <span class="sourceLineNo">1448</span>    synchronized (regionNode) {<a name="line.1448"></a>
 <span class="sourceLineNo">1449</span>      State state = regionNode.transitionState(State.OPEN, RegionStates.STATES_EXPECTED_ON_OPEN);<a name="line.1449"></a>
 <span class="sourceLineNo">1450</span>      if (isMetaRegion(hri)) {<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>        setMetaInitialized(hri, true);<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>      }<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>      regionStates.addRegionToServer(regionNode.getRegionLocation(), regionNode);<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>      // TODO: OPENING Updates hbase:meta too... we need to do both here and there?<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>      // That is a lot of hbase:meta writing.<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>        regionNode.getRegionLocation(), regionNode.getLastHost(), regionNode.getOpenSeqNum(),<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>        regionNode.getProcedure().getProcId());<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>      sendRegionOpenedNotification(hri, regionNode.getRegionLocation());<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>    }<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span>  }<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span><a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>  public void markRegionAsClosing(final RegionStateNode regionNode) throws IOException {<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>    final HRegionInfo hri = regionNode.getRegionInfo();<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>    synchronized (regionNode) {<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>      State state = regionNode.transitionState(State.CLOSING, RegionStates.STATES_EXPECTED_ON_CLOSE);<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>      // Set meta has not initialized early. so people trying to create/edit tables will wait<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>      if (isMetaRegion(hri)) {<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>        setMetaInitialized(hri, false);<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>      }<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>      regionStates.addRegionToServer(regionNode.getRegionLocation(), regionNode);<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>        regionNode.getRegionLocation(), regionNode.getLastHost(), HConstants.NO_SEQNUM,<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>        regionNode.getProcedure().getProcId());<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>    }<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span><a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>    // update the operation count metrics<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>    metrics.incrementOperationCounter();<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>  }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>  public void undoRegionAsClosing(final RegionStateNode regionNode) {<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>    // TODO: Metrics. Do opposite of metrics.incrementOperationCounter();<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>    // There is nothing to undo?<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>  }<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span><a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>  public void markRegionAsClosed(final RegionStateNode regionNode) throws IOException {<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>    final HRegionInfo hri = regionNode.getRegionInfo();<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>    synchronized (regionNode) {<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>      State state = regionNode.transitionState(State.CLOSED, RegionStates.STATES_EXPECTED_ON_CLOSE);<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>      regionStates.removeRegionFromServer(regionNode.getRegionLocation(), regionNode);<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>      regionNode.setLastHost(regionNode.getRegionLocation());<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>      regionNode.setRegionLocation(null);<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>        regionNode.getRegionLocation()/*null*/, regionNode.getLastHost(),<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>        HConstants.NO_SEQNUM, regionNode.getProcedure().getProcId());<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span>      sendRegionClosedNotification(hri);<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>    }<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>  }<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span><a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>  public void markRegionAsSplit(final HRegionInfo parent, final ServerName serverName,<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>      final HRegionInfo daughterA, final HRegionInfo daughterB)<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>  throws IOException {<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>    // Update hbase:meta. Parent will be marked offline and split up in hbase:meta.<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span>    // The parent stays in regionStates until cleared when removed by CatalogJanitor.<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>    // Update its state in regionStates to it shows as offline and split when read<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>    // later figuring what regions are in a table and what are not: see<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>    // regionStates#getRegionsOfTable<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>    final RegionStateNode node = regionStates.getOrCreateRegionNode(parent);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>    node.setState(State.SPLIT);<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>    regionStateStore.splitRegion(parent, daughterA, daughterB, serverName);<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>    if (shouldAssignFavoredNodes(parent)) {<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>      List&lt;ServerName&gt; onlineServers = this.master.getServerManager().getOnlineServersList();<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span>          generateFavoredNodesForDaughter(onlineServers, parent, daughterA, daughterB);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>    }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>  }<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span><a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>  /**<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>   * When called here, the merge has happened. The two merged regions have been<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>   * unassigned and the above markRegionClosed has been called on each so they have been<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>   * disassociated from a hosting Server. The merged region will be open after this call. The<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>   * merged regions are removed from hbase:meta below&gt; Later they are deleted from the filesystem<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>   * by the catalog janitor running against hbase:meta. It notices when the merged region no<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>   * longer holds references to the old regions.<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span>   */<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>  public void markRegionAsMerged(final HRegionInfo child, final ServerName serverName,<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>      final HRegionInfo mother, final HRegionInfo father) throws IOException {<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>    final RegionStateNode node = regionStates.getOrCreateRegionNode(child);<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>    node.setState(State.MERGED);<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>    regionStates.deleteRegion(mother);<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>    regionStates.deleteRegion(father);<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>    regionStateStore.mergeRegions(child, mother, father, serverName);<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>    if (shouldAssignFavoredNodes(child)) {<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>        generateFavoredNodesForMergedRegion(child, mother, father);<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>    }<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>  }<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span><a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>  /*<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>   * Favored nodes should be applied only when FavoredNodes balancer is configured and the region<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>   * belongs to a non-system table.<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>   */<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>  private boolean shouldAssignFavoredNodes(HRegionInfo region) {<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>    return this.shouldAssignRegionsWithFavoredNodes &amp;&amp;<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>        FavoredNodesManager.isFavoredNodeApplicable(region);<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>  }<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span><a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>  // ============================================================================================<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>  //  Assign Queue (Assign/Balance)<a name="line.1549"></a>
+<span class="sourceLineNo">1451</span>        master.getTableStateManager().setTableState(TableName.META_TABLE_NAME,<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>            TableState.State.ENABLED);<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>        setMetaInitialized(hri, true);<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>      }<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>      regionStates.addRegionToServer(regionNode.getRegionLocation(), regionNode);<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>      // TODO: OPENING Updates hbase:meta too... we need to do both here and there?<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span>      // That is a lot of hbase:meta writing.<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span>        regionNode.getRegionLocation(), regionNode.getLastHost(), regionNode.getOpenSeqNum(),<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>        regionNode.getProcedure().getProcId());<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>      sendRegionOpenedNotification(hri, regionNode.getRegionLocation());<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span>    }<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>  }<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span><a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>  public void markRegionAsClosing(final RegionStateNode regionNode) throws IOException {<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>    final HRegionInfo hri = regionNode.getRegionInfo();<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>    synchronized (regionNode) {<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>      State state = regionNode.transitionState(State.CLOSING, RegionStates.STATES_EXPECTED_ON_CLOSE);<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>      // Set meta has not initialized early. so people trying to create/edit tables will wait<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>      if (isMetaRegion(hri)) {<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>        setMetaInitialized(hri, false);<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>      }<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>      regionStates.addRegionToServer(regionNode.getRegionLocation(), regionNode);<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>        regionNode.getRegionLocation(), regionNode.getLastHost(), HConstants.NO_SEQNUM,<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>        regionNode.getProcedure().getProcId());<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span>    }<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span><a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>    // update the operation count metrics<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>    metrics.incrementOperationCounter();<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span>  }<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span><a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>  public void undoRegionAsClosing(final RegionStateNode regionNode) {<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>    // TODO: Metrics. Do opposite of metrics.incrementOperationCounter();<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span>    // There is nothing to undo?<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>  }<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span><a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>  public void markRegionAsClosed(final RegionStateNode regionNode) throws IOException {<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>    final HRegionInfo hri = regionNode.getRegionInfo();<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>    synchronized (regionNode) {<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>      State state = regionNode.transitionState(State.CLOSED, RegionStates.STATES_EXPECTED_ON_CLOSE);<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>      regionStates.removeRegionFromServer(regionNode.getRegionLocation(), regionNode);<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>      regionNode.setLastHost(regionNode.getRegionLocation());<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>      regionNode.setRegionLocation(null);<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>      regionStateStore.updateRegionLocation(regionNode.getRegionInfo(), state,<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>        regionNode.getRegionLocation()/*null*/, regionNode.getLastHost(),<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span>        HConstants.NO_SEQNUM, regionNode.getProcedure().getProcId());<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span>      sendRegionClosedNotification(hri);<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>    }<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>  }<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span><a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>  public void markRegionAsSplit(final HRegionInfo parent, final ServerName serverName,<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>      final HRegionInfo daughterA, final HRegionInfo daughterB)<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>  throws IOException {<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span>    // Update hbase:meta. Parent will be marked offline and split up in hbase:meta.<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>    // The parent stays in regionStates until cleared when removed by CatalogJanitor.<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>    // Update its state in regionStates to it shows as offline and split when read<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>    // later figuring what regions are in a table and what are not: see<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>    // regionStates#getRegionsOfTable<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>    final RegionStateNode node = regionStates.getOrCreateRegionNode(parent);<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>    node.setState(State.SPLIT);<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>    regionStateStore.splitRegion(parent, daughterA, daughterB, serverName);<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span>    if (shouldAssignFavoredNodes(parent)) {<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>      List&lt;ServerName&gt; onlineServers = this.master.getServerManager().getOnlineServersList();<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>          generateFavoredNodesForDaughter(onlineServers, parent, daughterA, daughterB);<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>    }<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span>  }<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span><a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>  /**<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>   * When called here, the merge has happened. The two merged regions have been<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>   * unassigned and the above markRegionClosed has been called on each so they have been<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>   * disassociated from a hosting Server. The merged region will be open after this call. The<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>   * merged regions are removed from hbase:meta below&gt; Later they are deleted from the filesystem<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span>   * by the catalog janitor running against hbase:meta. It notices when the merged region no<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span>   * longer holds references to the old regions.<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>   */<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>  public void markRegionAsMerged(final HRegionInfo child, final ServerName serverName,<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>      final HRegionInfo mother, final HRegionInfo father) throws IOException {<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>    final RegionStateNode node = regionStates.getOrCreateRegionNode(child);<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>    node.setState(State.MERGED);<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>    regionStates.deleteRegion(mother);<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>    regionStates.deleteRegion(father);<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>    regionStateStore.mergeRegions(child, mother, father, serverName);<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>    if (shouldAssignFavoredNodes(child)) {<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>        generateFavoredNodesForMergedRegion(child, mother, father);<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span>    }<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>  }<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span><a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>  /*<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>   * Favored nodes should be applied only when FavoredNodes balancer is configured and the region<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>   * belongs to a non-system table.<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>   */<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>  private boolean shouldAssignFavoredNodes(HRegionInfo region) {<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>    return this.shouldAssignRegionsWithFavoredNodes &amp;&amp;<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>        FavoredNodesManager.isFavoredNodeApplicable(region);<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>  }<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span><a name="line.1549"></a>
 <span class="sourceLineNo">1550</span>  // ============================================================================================<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>  private final ArrayList&lt;RegionStateNode&gt; pendingAssignQueue = new ArrayList&lt;RegionStateNode&gt;();<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>  private final ReentrantLock assignQueueLock = new ReentrantLock();<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>  private final Condition assignQueueFullCond = assignQueueLock.newCondition();<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span><a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>  /**<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>   * Add the assign operation to the assignment queue.<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>   * The pending assignment operation will be processed,<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>   * and each region will be assigned by a server using the balancer.<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>   */<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>  protected void queueAssign(final RegionStateNode regionNode) {<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span>    getProcedureScheduler().suspendEvent(regionNode.getProcedureEvent());<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span><a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>    // TODO: quick-start for meta and the other sys-tables?<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>    assignQueueLock.lock();<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>    try {<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>      pendingAssignQueue.add(regionNode);<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>      if (regionNode.isSystemTable() ||<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>          pendingAssignQueue.size() == 1 ||<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>          pendingAssignQueue.size() &gt;= assignDispatchWaitQueueMaxSize) {<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>        assignQueueFullCond.signal();<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>      }<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>    } finally {<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>      assignQueueLock.unlock();<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>    }<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>  }<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span><a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>  private void startAssignmentThread() {<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>    assignThread = new Thread("AssignmentThread") {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>      @Override<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>      public void run() {<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>        while (isRunning()) {<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>          processAssignQueue();<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>        }<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>        pendingAssignQueue.clear();<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>      }<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>    };<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>    assignThread.start();<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>  }<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span><a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>  private void stopAssignmentThread() {<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>    assignQueueSignal();<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>    try {<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>      while (assignThread.isAlive()) {<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>        assignQueueSignal();<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>        assignThread.join(250);<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>      }<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>    } catch (InterruptedException e) {<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>      LOG.warn("join interrupted", e);<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>      Thread.currentThread().interrupt();<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>    }<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>  }<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span><a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>  private void assignQueueSignal() {<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>    assignQueueLock.lock();<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>    try {<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>      assignQueueFullCond.signal();<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>    } finally {<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span>      assignQueueLock.unlock();<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>    }<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>  }<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span><a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings("WA_AWAIT_NOT_IN_LOOP")<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>  private HashMap&lt;HRegionInfo, RegionStateNode&gt; waitOnAssignQueue() {<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>    HashMap&lt;HRegionInfo, RegionStateNode&gt; regions = null;<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span><a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>    assignQueueLock.lock();<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>    try {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>      if (pendingAssignQueue.isEmpty() &amp;&amp; isRunning()) {<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        assignQueueFullCond.await();<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>      }<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span><a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>      if (!isRunning()) return null;<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>      assignQueueFullCond.await(assignDispatchWaitMillis, TimeUnit.MILLISECONDS);<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>      regions = new HashMap&lt;HRegionInfo, RegionStateNode&gt;(pendingAssignQueue.size());<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>      for (RegionStateNode regionNode: pendingAssignQueue) {<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>        regions.put(regionNode.getRegionInfo(), regionNode);<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>      }<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>      pendingAssignQueue.clear();<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>    } catch (InterruptedException e) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>      LOG.warn("got interrupted ", e);<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>      Thread.currentThread().interrupt();<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>    } finally {<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>      assignQueueLock.unlock();<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>    }<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>    return regions;<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>  }<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span><a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>  private void processAssignQueue() {<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>    final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions = waitOnAssignQueue();<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>    if (regions == null || regions.size() == 0 || !isRunning()) {<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>      return;<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>    }<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span><a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>    if (LOG.isTraceEnabled()) {<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>      LOG.trace("PROCESS ASSIGN QUEUE regionCount=" + regions.size());<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span>    }<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span><a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>    // TODO: Optimize balancer. pass a RegionPlan?<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span>    final HashMap&lt;HRegionInfo, ServerName&gt; retainMap = new HashMap&lt;HRegionInfo, ServerName&gt;();<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span>    final List&lt;HRegionInfo&gt; rrList = new ArrayList&lt;HRegionInfo&gt;();<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span>    for (RegionStateNode regionNode: regions.values()) {<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>      if (regionNode.getRegionLocation() != null) {<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>        retainMap.put(regionNode.getRegionInfo(), regionNode.getRegionLocation());<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>      } else {<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>        rrList.add(regionNode.getRegionInfo());<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span>      }<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>    }<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span><a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>    // TODO: connect with the listener to invalidate the cache<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>    final LoadBalancer balancer = getBalancer();<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span><a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>    // TODO use events<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>    List&lt;ServerName&gt; servers = master.getServerManager().createDestinationServersList();<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>    for (int i = 0; servers.size() &lt; 1; ++i) {<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>      if (i % 4 == 0) {<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>        LOG.warn("no server available, unable to find a location for " + regions.size() +<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span>            " unassigned regions. waiting");<a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>      }<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span><a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>      // the was AM killed<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>      if (!isRunning()) {<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>        LOG.debug("aborting assignment-queue with " + regions.size() + " not assigned");<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>        return;<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>      }<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span><a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>      Threads.sleep(250);<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>      servers = master.getServerManager().createDestinationServersList();<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>    }<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span><a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>    final boolean isTraceEnabled = LOG.isTraceEnabled();<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span>    if (isTraceEnabled) {<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>      LOG.trace("available servers count=" + servers.size() + ": " + servers);<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>    }<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span><a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>    // ask the balancer where to place regions<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>    if (!retainMap.isEmpty()) {<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>      if (isTraceEnabled) {<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>        LOG.trace("retain assign regions=" + retainMap);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>      }<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>      try {<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span>        acceptPlan(regions, balancer.retainAssignment(retainMap, servers));<a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>      } catch (HBaseIOException e) {<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>        LOG.warn("unable to retain assignment", e);<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>        addToPendingAssignment(regions, retainMap.keySet());<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span>      }<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>    }<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span><a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>    // TODO: Do we need to split retain and round-robin?<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span>    // the retain seems to fallback to round-robin/random if the region is not in the map.<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span>    if (!rrList.isEmpty()) {<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>      Collections.sort(rrList);<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>      if (isTraceEnabled) {<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>        LOG.trace("round robin regions=" + rrList);<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>      }<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>      try {<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span>        acceptPlan(regions, balancer.roundRobinAssignment(rrList, servers));<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>      } catch (HBaseIOException e) {<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span>        LOG.warn("unable to round-robin assignment", e);<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>        addToPendingAssignment(regions, rrList);<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>      }<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>    }<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>  }<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span><a name="line.1713"></a>
-<span class="sourceLineNo">1714</span>  private void acceptPlan(final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions,<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      final Map&lt;ServerName, List&lt;HRegionInfo&gt;&gt; plan) throws HBaseIOException {<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>    final ProcedureEvent[] events = new ProcedureEvent[regions.size()];<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>    final long st = System.currentTimeMillis();<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span><a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>    if (plan == null) {<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span>      throw new HBaseIOException("unable to compute plans for regions=" + regions.size());<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>    }<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span><a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    if (plan.isEmpty()) return;<a name="line.1723"></a>
+<span class="sourceLineNo">1551</span>  //  Assign Queue (Assign/Balance)<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>  // ============================================================================================<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>  private final ArrayList&lt;RegionStateNode&gt; pendingAssignQueue = new ArrayList&lt;RegionStateNode&gt;();<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>  private final ReentrantLock assignQueueLock = new ReentrantLock();<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span>  private final Condition assignQueueFullCond = assignQueueLock.newCondition();<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span><a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>  /**<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>   * Add the assign operation to the assignment queue.<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>   * The pending assignment operation will be processed,<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>   * and each region will be assigned by a server using the balancer.<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>   */<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>  protected void queueAssign(final RegionStateNode regionNode) {<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>    getProcedureScheduler().suspendEvent(regionNode.getProcedureEvent());<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span><a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>    // TODO: quick-start for meta and the other sys-tables?<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>    assignQueueLock.lock();<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>    try {<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>      pendingAssignQueue.add(regionNode);<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>      if (regionNode.isSystemTable() ||<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>          pendingAssignQueue.size() == 1 ||<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>          pendingAssignQueue.size() &gt;= assignDispatchWaitQueueMaxSize) {<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>        assignQueueFullCond.signal();<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>      }<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>    } finally {<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>      assignQueueLock.unlock();<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    }<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>  }<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span><a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>  private void startAssignmentThread() {<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>    assignThread = new Thread("AssignmentThread") {<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>      @Override<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>      public void run() {<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>        while (isRunning()) {<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>          processAssignQueue();<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>        }<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>        pendingAssignQueue.clear();<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>      }<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>    };<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>    assignThread.start();<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span>  }<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span><a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>  private void stopAssignmentThread() {<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>    assignQueueSignal();<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>    try {<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>      while (assignThread.isAlive()) {<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>        assignQueueSignal();<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>        assignThread.join(250);<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>      }<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span>    } catch (InterruptedException e) {<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>      LOG.warn("join interrupted", e);<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>      Thread.currentThread().interrupt();<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>    }<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>  }<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span><a name="line.1604"></a>
+<span class="sourceLineNo">1605</span>  private void assignQueueSignal() {<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span>    assignQueueLock.lock();<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>    try {<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>      assignQueueFullCond.signal();<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>    } finally {<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>      assignQueueLock.unlock();<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>    }<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>  }<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span><a name="line.1613"></a>
+<span class="sourceLineNo">1614</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings("WA_AWAIT_NOT_IN_LOOP")<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span>  private HashMap&lt;HRegionInfo, RegionStateNode&gt; waitOnAssignQueue() {<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span>    HashMap&lt;HRegionInfo, RegionStateNode&gt; regions = null;<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span><a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>    assignQueueLock.lock();<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>    try {<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>      if (pendingAssignQueue.isEmpty() &amp;&amp; isRunning()) {<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>        assignQueueFullCond.await();<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>      }<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span><a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>      if (!isRunning()) return null;<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>      assignQueueFullCond.await(assignDispatchWaitMillis, TimeUnit.MILLISECONDS);<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span>      regions = new HashMap&lt;HRegionInfo, RegionStateNode&gt;(pendingAssignQueue.size());<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>      for (RegionStateNode regionNode: pendingAssignQueue) {<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span>        regions.put(regionNode.getRegionInfo(), regionNode);<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span>      }<a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>      pendingAssignQueue.clear();<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>    } catch (InterruptedException e) {<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span>      LOG.warn("got interrupted ", e);<a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>      Thread.currentThread().interrupt();<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>    } finally {<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>      assignQueueLock.unlock();<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span>    }<a name="line.1636"></a>
+<span class="sourceLineNo">1637</span>    return regions;<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span>  }<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span><a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>  private void processAssignQueue() {<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span>    final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions = waitOnAssignQueue();<a name="line.1641"></a>
+<span class="sourceLineNo">1642</span>    if (regions == null || regions.size() == 0 || !isRunning()) {<a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>      return;<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>    }<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span><a name="line.1645"></a>
+<span class="sourceLineNo">1646</span>    if (LOG.isTraceEnabled()) {<a name="line.1646"></a>
+<span class="sourceLineNo">1647</span>      LOG.trace("PROCESS ASSIGN QUEUE regionCount=" + regions.size());<a name="line.1647"></a>
+<span class="sourceLineNo">1648</span>    }<a name="line.1648"></a>
+<span class="sourceLineNo">1649</span><a name="line.1649"></a>
+<span class="sourceLineNo">1650</span>    // TODO: Optimize balancer. pass a RegionPlan?<a name="line.1650"></a>
+<span class="sourceLineNo">1651</span>    final HashMap&lt;HRegionInfo, ServerName&gt; retainMap = new HashMap&lt;HRegionInfo, ServerName&gt;();<a name="line.1651"></a>
+<span class="sourceLineNo">1652</span>    final List&lt;HRegionInfo&gt; rrList = new ArrayList&lt;HRegionInfo&gt;();<a name="line.1652"></a>
+<span class="sourceLineNo">1653</span>    for (RegionStateNode regionNode: regions.values()) {<a name="line.1653"></a>
+<span class="sourceLineNo">1654</span>      if (regionNode.getRegionLocation() != null) {<a name="line.1654"></a>
+<span class="sourceLineNo">1655</span>        retainMap.put(regionNode.getRegionInfo(), regionNode.getRegionLocation());<a name="line.1655"></a>
+<span class="sourceLineNo">1656</span>      } else {<a name="line.1656"></a>
+<span class="sourceLineNo">1657</span>        rrList.add(regionNode.getRegionInfo());<a name="line.1657"></a>
+<span class="sourceLineNo">1658</span>      }<a name="line.1658"></a>
+<span class="sourceLineNo">1659</span>    }<a name="line.1659"></a>
+<span class="sourceLineNo">1660</span><a name="line.1660"></a>
+<span class="sourceLineNo">1661</span>    // TODO: connect with the listener to invalidate the cache<a name="line.1661"></a>
+<span class="sourceLineNo">1662</span>    final LoadBalancer balancer = getBalancer();<a name="line.1662"></a>
+<span class="sourceLineNo">1663</span><a name="line.1663"></a>
+<span class="sourceLineNo">1664</span>    // TODO use events<a name="line.1664"></a>
+<span class="sourceLineNo">1665</span>    List&lt;ServerName&gt; servers = master.getServerManager().createDestinationServersList();<a name="line.1665"></a>
+<span class="sourceLineNo">1666</span>    for (int i = 0; servers.size() &lt; 1; ++i) {<a name="line.1666"></a>
+<span class="sourceLineNo">1667</span>      if (i % 4 == 0) {<a name="line.1667"></a>
+<span class="sourceLineNo">1668</span>        LOG.warn("no server available, unable to find a location for " + regions.size() +<a name="line.1668"></a>
+<span class="sourceLineNo">1669</span>            " unassigned regions. waiting");<a name="line.1669"></a>
+<span class="sourceLineNo">1670</span>      }<a name="line.1670"></a>
+<span class="sourceLineNo">1671</span><a name="line.1671"></a>
+<span class="sourceLineNo">1672</span>      // the was AM killed<a name="line.1672"></a>
+<span class="sourceLineNo">1673</span>      if (!isRunning()) {<a name="line.1673"></a>
+<span class="sourceLineNo">1674</span>        LOG.debug("aborting assignment-queue with " + regions.size() + " not assigned");<a name="line.1674"></a>
+<span class="sourceLineNo">1675</span>        return;<a name="line.1675"></a>
+<span class="sourceLineNo">1676</span>      }<a name="line.1676"></a>
+<span class="sourceLineNo">1677</span><a name="line.1677"></a>
+<span class="sourceLineNo">1678</span>      Threads.sleep(250);<a name="line.1678"></a>
+<span class="sourceLineNo">1679</span>      servers = master.getServerManager().createDestinationServersList();<a name="line.1679"></a>
+<span class="sourceLineNo">1680</span>    }<a name="line.1680"></a>
+<span class="sourceLineNo">1681</span><a name="line.1681"></a>
+<span class="sourceLineNo">1682</span>    final boolean isTraceEnabled = LOG.isTraceEnabled();<a name="line.1682"></a>
+<span class="sourceLineNo">1683</span>    if (isTraceEnabled) {<a name="line.1683"></a>
+<span class="sourceLineNo">1684</span>      LOG.trace("available servers count=" + servers.size() + ": " + servers);<a name="line.1684"></a>
+<span class="sourceLineNo">1685</span>    }<a name="line.1685"></a>
+<span class="sourceLineNo">1686</span><a name="line.1686"></a>
+<span class="sourceLineNo">1687</span>    // ask the balancer where to place regions<a name="line.1687"></a>
+<span class="sourceLineNo">1688</span>    if (!retainMap.isEmpty()) {<a name="line.1688"></a>
+<span class="sourceLineNo">1689</span>      if (isTraceEnabled) {<a name="line.1689"></a>
+<span class="sourceLineNo">1690</span>        LOG.trace("retain assign regions=" + retainMap);<a name="line.1690"></a>
+<span class="sourceLineNo">1691</span>      }<a name="line.1691"></a>
+<span class="sourceLineNo">1692</span>      try {<a name="line.1692"></a>
+<span class="sourceLineNo">1693</span>        acceptPlan(regions, balancer.retainAssignment(retainMap, servers));<a name="line.1693"></a>
+<span class="sourceLineNo">1694</span>      } catch (HBaseIOException e) {<a name="line.1694"></a>
+<span class="sourceLineNo">1695</span>        LOG.warn("unable to retain assignment", e);<a name="line.1695"></a>
+<span class="sourceLineNo">1696</span>        addToPendingAssignment(regions, retainMap.keySet());<a name="line.1696"></a>
+<span class="sourceLineNo">1697</span>      }<a name="line.1697"></a>
+<span class="sourceLineNo">1698</span>    }<a name="line.1698"></a>
+<span class="sourceLineNo">1699</span><a name="line.1699"></a>
+<span class="sourceLineNo">1700</span>    // TODO: Do we need to split retain and round-robin?<a name="line.1700"></a>
+<span class="sourceLineNo">1701</span>    // the retain seems to fallback to round-robin/random if the region is not in the map.<a name="line.1701"></a>
+<span class="sourceLineNo">1702</span>    if (!rrList.isEmpty()) {<a name="line.1702"></a>
+<span class="sourceLineNo">1703</span>      Collections.sort(rrList);<a name="line.1703"></a>
+<span class="sourceLineNo">1704</span>      if (isTraceEnabled) {<a name="line.1704"></a>
+<span class="sourceLineNo">1705</span>        LOG.trace("round robin regions=" + rrList);<a name="line.1705"></a>
+<span class="sourceLineNo">1706</span>      }<a name="line.1706"></a>
+<span class="sourceLineNo">1707</span>      try {<a name="line.1707"></a>
+<span class="sourceLineNo">1708</span>        acceptPlan(regions, balancer.roundRobinAssignment(rrList, servers));<a name="line.1708"></a>
+<span class="sourceLineNo">1709</span>      } catch (HBaseIOException e) {<a name="line.1709"></a>
+<span class="sourceLineNo">1710</span>        LOG.warn("unable to round-robin assignment", e);<a name="line.1710"></a>
+<span class="sourceLineNo">1711</span>        addToPendingAssignment(regions, rrList);<a name="line.1711"></a>
+<span class="sourceLineNo">1712</span>      }<a name="line.1712"></a>
+<span class="sourceLineNo">1713</span>    }<a name="line.1713"></a>
+<span class="sourceLineNo">1714</span>  }<a name="line.1714"></a>
+<span class="sourceLineNo">1715</span><a name="line.1715"></a>
+<span class="sourceLineNo">1716</span>  private void acceptPlan(final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions,<a name="line.1716"></a>
+<span class="sourceLineNo">1717</span>      final Map&lt;ServerName, List&lt;HRegionInfo&gt;&gt; plan) throws HBaseIOException {<a name="line.1717"></a>
+<span class="sourceLineNo">1718</span>    final ProcedureEvent[] events = new ProcedureEvent[regions.size()];<a name="line.1718"></a>
+<span class="sourceLineNo">1719</span>    final long st = System.currentTimeMillis();<a name="line.1719"></a>
+<span class="sourceLineNo">1720</span><a name="line.1720"></a>
+<span class="sourceLineNo">1721</span>    if (plan == null) {<a name="line.1721"></a>
+<span class="sourceLineNo">1722</span>      throw new HBaseIOException("unable to compute plans for regions=" + regions.size());<a name="line.1722"></a>
+<span class="sourceLineNo">1723</span>    }<a name="line.1723"></a>
 <span class="sourceLineNo">1724</span><a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>    int evcount = 0;<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span>    for (Map.Entry&lt;ServerName, List&lt;HRegionInfo&gt;&gt; entry: plan.entrySet()) {<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>      final ServerName server = entry.getKey();<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span>      for (HRegionInfo hri: entry.getValue()) {<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>        final RegionStateNode regionNode = regions.get(hri);<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>        regionNode.setRegionLocation(server);<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>        events[evcount++] = regionNode.getProcedureEvent();<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>      }<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span>    }<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>    getProcedureScheduler().wakeEvents(evcount, events);<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span><a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>    final long et = System.currentTimeMillis();<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    if (LOG.isTraceEnabled()) {<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span>      LOG.trace("ASSIGN ACCEPT " + events.length + " -&gt; " +<a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>          StringUtils.humanTimeDiff(et - st));<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>    }<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>  }<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span><a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>  private void addToPendingAssignment(final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions,<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>      final Collection&lt;HRegionInfo&gt; pendingRegions) {<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>    assignQueueLock.lock();<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>    try {<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>      for (HRegionInfo hri: pendingRegions) {<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>        pendingAssignQueue.add(regions.get(hri));<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span>      }<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>    } finally {<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span>      assignQueueLock.unlock();<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>    }<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>  }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>  /**<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>   * Get a list of servers that this region can not assign to.<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>   * For system table, we must assign them to a server with highest version.<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>   */<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>  public List&lt;ServerName&gt; getExcludedServersForSystemTable() {<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span>    List&lt;Pair&lt;ServerName, String&gt;&gt; serverList = master.getServerManager().getOnlineServersList()<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>        .stream()<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>        .map((s)-&gt;new Pair&lt;&gt;(s, master.getRegionServerVersion(s)))<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>        .collect(Collectors.toList());<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>    if (serverList.isEmpty()) {<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span>      return new ArrayList&lt;&gt;();<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>    }<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>    String highestVersion = Collections.max(serverList,<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>        (o1, o2) -&gt; VersionInfo.compareVersion(o1.getSecond(), o2.getSecond())).getSecond();<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>    return serverList.stream()<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span>        .filter((p)-&gt;!p.getSecond().equals(highestVersion))<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>        .map(Pair::getFirst)<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>        .collect(Collectors.toList());<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>  }<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span><a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>  // ============================================================================================<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span>  //  Server Helpers<a name="line.1776"></a>
+<span class="sourceLineNo">1725</span>    if (plan.isEmpty()) return;<a name="line.1725"></a>
+<span class="sourceLineNo">1726</span><a name="line.1726"></a>
+<span class="sourceLineNo">1727</span>    int evcount = 0;<a name="line.1727"></a>
+<span class="sourceLineNo">1728</span>    for (Map.Entry&lt;ServerName, List&lt;HRegionInfo&gt;&gt; entry: plan.entrySet()) {<a name="line.1728"></a>
+<span class="sourceLineNo">1729</span>      final ServerName server = entry.getKey();<a name="line.1729"></a>
+<span class="sourceLineNo">1730</span>      for (HRegionInfo hri: entry.getValue()) {<a name="line.1730"></a>
+<span class="sourceLineNo">1731</span>        final RegionStateNode regionNode = regions.get(hri);<a name="line.1731"></a>
+<span class="sourceLineNo">1732</span>        regionNode.setRegionLocation(server);<a name="line.1732"></a>
+<span class="sourceLineNo">1733</span>        events[evcount++] = regionNode.getProcedureEvent();<a name="line.1733"></a>
+<span class="sourceLineNo">1734</span>      }<a name="line.1734"></a>
+<span class="sourceLineNo">1735</span>    }<a name="line.1735"></a>
+<span class="sourceLineNo">1736</span>    getProcedureScheduler().wakeEvents(evcount, events);<a name="line.1736"></a>
+<span class="sourceLineNo">1737</span><a name="line.1737"></a>
+<span class="sourceLineNo">1738</span>    final long et = System.currentTimeMillis();<a name="line.1738"></a>
+<span class="sourceLineNo">1739</span>    if (LOG.isTraceEnabled()) {<a name="line.1739"></a>
+<span class="sourceLineNo">1740</span>      LOG.trace("ASSIGN ACCEPT " + events.length + " -&gt; " +<a name="line.1740"></a>
+<span class="sourceLineNo">1741</span>          StringUtils.humanTimeDiff(et - st));<a name="line.1741"></a>
+<span class="sourceLineNo">1742</span>    }<a name="line.1742"></a>
+<span class="sourceLineNo">1743</span>  }<a name="line.1743"></a>
+<span class="sourceLineNo">1744</span><a name="line.1744"></a>
+<span class="sourceLineNo">1745</span>  private void addToPendingAssignment(final HashMap&lt;HRegionInfo, RegionStateNode&gt; regions,<a name="line.1745"></a>
+<span class="sourceLineNo">1746</span>      final Collection&lt;HRegionInfo&gt; pendingRegions) {<a name="line.1746"></a>
+<span class="sourceLineNo">1747</span>    assignQueueLock.lock();<a name="line.1747"></a>
+<span class="sourceLineNo">1748</span>    try {<a name="line.1748"></a>
+<span class="sourceLineNo">1749</span>      for (HRegionInfo hri: pendingRegions) {<a name="line.1749"></a>
+<span class="sourceLineNo">1750</span>        pendingAssignQueue.add(regions.get(hri));<a name="line.1750"></a>
+<span class="sourceLineNo">1751</span>      }<a name="line.1751"></a>
+<span class="sourceLineNo">1752</span>    } finally {<a name="line.1752"></a>
+<span class="sourceLineNo">1753</span>      assignQueueLock.unlock();<a name="line.1753"></a>
+<span class="sourceLineNo">1754</span>    }<a name="line.1754"></a>
+<span class="sourceLineNo">1755</span>  }<a name="line.1755"></a>
+<span class="sourceLineNo">1756</span><a name="line.1756"></a>
+<span class="sourceLineNo">1757</span>  /**<a name="line.1757"></a>
+<span class="sourceLineNo">1758</span>   * Get a list of servers that this region can not assign to.<a name="line.1758"></a>
+<span class="sourceLineNo">1759</span>   * For system table, we must assign them to a server with highest version.<a name="line.1759"></a>
+<span class="sourceLineNo">1760</span>   */<a name="line.1760"></a>
+<span class="sourceLineNo">1761</span>  public List&lt;ServerName&gt; getExcludedServersForSystemTable() {<a name="line.1761"></a>
+<span class="sourceLineNo">1762</span>    List&lt;Pair&lt;ServerName, String&gt;&gt; serverList = master.getServerManager().getOnlineServersList()<a name="line.1762"></a>
+<span class="sourceLineNo">1763</span>        .stream()<a name="line.1763"></a>
+<span class="sourceLineNo">1764</span>        .map((s)-&gt;new Pair&lt;&gt;(s, master.getRegionServerVersion(s)))<a name="line.1764"></a>
+<span class="sourceLineNo">1765</span>        .collect(Collectors.toList());<a name="line.1765"></a>
+<span class="sourceLineNo">1766</span>    if (serverList.isEmpty()) {<a name="line.1766"></a>
+<span class="sourceLineNo">1767</span>      return new ArrayList&lt;&gt;();<a name="line.1767"></a>
+<span class="sourceLineNo">1768</span>    }<a name="line.1768"></a>
+<span class="sourceLineNo">1769</span>    String highestVersion = Collections.max(serverList,<a name="line.1769"></a>
+<span class="sourceLineNo">1770</span>        (o1, o2) -&gt; VersionInfo.compareVersion(o1.getSecond(), o2.getSecond())).getSecond();<a name="line.1770"></a>
+<span class="sourceLineNo">1771</span>    return serverList.stream()<a name="line.1771"></a>
+<span class="sourceLineNo">1772</span>        .filter((p)-&gt;!p.getSecond().equals(highestVersion))<a name="line.1772"></a>
+<span class="sourceLineNo">1773</span>        .map(Pair::getFirst)<a name="line.1773"></a>
+<span class="sourceLineNo">1774</span>        .collect(Collectors.toList());<a name="line.1774"></a>
+<span class="sourceLineNo">1775</span>  }<a name="line.1775"></a>
+<span class="sourceLineNo">1776</span><a name="line.1776"></a>
 <span class="sourceLineNo">1777</span>  // ============================================================================================<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>  @Override<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>  public void serverAdded(final ServerName serverName) {<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span>  }<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span><a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>  @Override<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>  public void serverRemoved(final ServerName serverName) {<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span>    final ServerStateNode serverNode = regionStates.getServerNode(serverName);<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>    if (serverNode == null) return;<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span><a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>    // just in case, wake procedures waiting for this server report<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>    wakeServerReportEvent(serverNode);<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span>  }<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span><a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>  public int getServerVersion(final ServerName serverName) {<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span>    final ServerStateNode node = regionStates.getServerNode(serverName);<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>    return node != null ? node.getVersionNumber() : 0;<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>  }<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span><a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>  public void killRegionServer(final ServerName serverName) {<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>    final ServerStateNode serverNode = regionStates.getServerNode(serverName);<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>    killRegionServer(serverNode);<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>  }<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span><a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>  public void killRegionServer(final ServerStateNode serverNode) {<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span>    /** Don't do this. Messes up accounting. Let ServerCrashProcedure do this.<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span>    for (RegionStateNode regionNode: serverNode.getRegions()) {<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>      regionNode.offline();<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>    }*/<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>    master.getServerManager().expireServer(serverNode.getServerName());<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>  }<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span>}<a name="line.1808"></a>
+<span class="sourceLineNo">1778</span>  //  Server Helpers<a name="line.1778"></a>
+<span class="sourceLineNo">1779</span>  // ============================================================================================<a name="line.1779"></a>
+<span class="sourceLineNo">1780</span>  @Override<a name="line.1780"></a>
+<span class="sourceLineNo">1781</span>  public void serverAdded(final ServerName serverName) {<a name="line.1781"></a>
+<span class="sourceLineNo">1782</span>  }<a name="line.1782"></a>
+<span class="sourceLineNo">1783</span><a name="line.1783"></a>
+<span class="sourceLineNo">1784</span>  @Override<a name="line.1784"></a>
+<span class="sourceLineNo">1785</span>  public void serverRemoved(final ServerName serverName) {<a name="line.1785"></a>
+<span class="sourceLineNo">1786</span>    final ServerStateNode serverNode = regionStates.getServerNode(serverName);<a name="line.1786"></a>
+<span class="sourceLineNo">1787</span>    if (serverNode == null) return;<a name="line.1787"></a>
+<span class="sourceLineNo">1788</span><a name="line.1788"></a>
+<span class="sourceLineNo">1789</span>    // just in case, wake procedures waiting for this server report<a name="line.1789"></a>
+<span class="sourceLineNo">1790</span>    wakeServerReportEvent(serverNode);<a name="line.1790"></a>
+<span class="sourceLineNo">1791</span>  }<a name="line.1791"></a>
+<span class="sourceLineNo">1792</span><a name="line.1792"></a>
+<span class="sourceLineNo">1793</span>  public int getServerVersion(final ServerName serverName) {<a name="line.1793"></a>
+<span class="sourceLineNo">1794</span>    final ServerStateNode node = regionStates.getServerNode(serverName);<a name="line.1794"></a>
+<span class="sourceLineNo">1795</span>    return node != null ? node.getVersionNumber() : 0;<a name="line.1795"></a>
+<span class="sourceLineNo">1796</span>  }<a name="line.1796"></a>
+<span class="sourceLineNo">1797</span><a name="line.1797"></a>
+<span class="sourceLineNo">1798</span>  public void killRegionServer(final ServerName serverName) {<a name="line.1798"></a>
+<span class="sourceLineNo">1799</span>    final ServerStateNode serverNode = regionStates.getServerNode(serverName);<a name="line.1799"></a>
+<span class="sourceLineNo">1800</span>    killRegionServer(serverNode);<a name="line.1800"></a>
+<span class="sourceLineNo">1801</span>  }<a name="line.1801"></a>
+<span class="sourceLineNo">1802</span><a name="line.1802"></a>
+<span class="sourceLineNo">1803</span>  public void killRegionServer(final ServerStateNode serverNode) {<a name="line.1803"></a>
+<span class="sourceLineNo">1804</span>    /** Don't do this. Messes up accounting. Let ServerCrashProcedure do this.<a name="line.1804"></a>
+<span class="sourceLineNo">1805</span>    for (RegionStateNode regionNode: serverNode.getRegions()) {<a name="line.1805"></a>
+<span class="sourceLineNo">1806</span>      regionNode.offline();<a name="line.1806"></a>
+<span class="sourceLineNo">1807</span>    }*/<a name="line.1807"></a>
+<span class="sourceLineNo">1808</span>    master.getServerManager().expireServer(serverNode.getServerName());<a name="line.1808"></a>
+<span class="sourceLineNo">1809</span>  }<a name="line.1809"></a>
+<span class="sourceLineNo">1810</span>}<a name="line.1810"></a>
 
 
 


[12/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html
new file mode 100644
index 0000000..cabadda
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html
@@ -0,0 +1,325 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.master.procedure;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import com.google.common.base.Preconditions;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.commons.logging.Log;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.commons.logging.LogFactory;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.ServerName;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.TableName;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.procedure2.ProcedureYieldException;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.procedure2.StateMachineProcedure;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.zookeeper.KeeperException;<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.io.IOException;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.io.InputStream;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.io.OutputStream;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.Set;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>/**<a name="line.44"></a>
+<span class="sourceLineNo">045</span> * This procedure recovers meta from prior shutdown/ crash of a server, and brings meta online by<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * assigning meta region/s. Any place where meta is accessed and requires meta to be online, need to<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * submit this procedure instead of duplicating steps to recover meta in the code.<a name="line.47"></a>
+<span class="sourceLineNo">048</span> */<a name="line.48"></a>
+<span class="sourceLineNo">049</span>public class RecoverMetaProcedure<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    extends StateMachineProcedure&lt;MasterProcedureEnv, MasterProcedureProtos.RecoverMetaState&gt;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>    implements TableProcedureInterface {<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private static final Log LOG = LogFactory.getLog(RecoverMetaProcedure.class);<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private ServerName failedMetaServer;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  private boolean shouldSplitWal;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  private int replicaId;<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>  private final ProcedurePrepareLatch syncLatch;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private HMaster master;<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>   * Call this constructor to queue up a {@link RecoverMetaProcedure} in response to meta<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   * carrying server crash<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   * @param failedMetaServer failed/ crashed region server that was carrying meta<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   * @param shouldSplitLog split log file of meta region<a name="line.65"></a>
+<span class="sourceLineNo">066</span>   */<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  public RecoverMetaProcedure(final ServerName failedMetaServer, final boolean shouldSplitLog) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    this(failedMetaServer, shouldSplitLog, null);<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  }<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>  /**<a name="line.71"></a>
+<span class="sourceLineNo">072</span>   * Constructor with latch, for blocking/ sync usage<a name="line.72"></a>
+<span class="sourceLineNo">073</span>   */<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  public RecoverMetaProcedure(final ServerName failedMetaServer, final boolean shouldSplitLog,<a name="line.74"></a>
+<span class="sourceLineNo">075</span>                              final ProcedurePrepareLatch latch) {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    this.failedMetaServer = failedMetaServer;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    this.shouldSplitWal = shouldSplitLog;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    this.replicaId = HRegionInfo.DEFAULT_REPLICA_ID;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    this.syncLatch = latch;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  /**<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   * This constructor is also used when deserializing from a procedure store; we'll construct one<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   * of these then call {@link #deserializeStateData(InputStream)}. Do not use directly.<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   */<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  public RecoverMetaProcedure() {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    this(null, false);<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>  @Override<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  protected Flow executeFromState(MasterProcedureEnv env,<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      MasterProcedureProtos.RecoverMetaState state)<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    prepare(env);<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>    if (!isRunRequired()) {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      LOG.info(this + "; Meta already initialized. Skipping run");<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      return Flow.NO_MORE_STATE;<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>    try {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      switch (state) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        case RECOVER_META_SPLIT_LOGS:<a name="line.103"></a>
+<span class="sourceLineNo">104</span>          LOG.info("Start " + this);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>          if (shouldSplitWal) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>            // TODO: Matteo. We BLOCK here but most important thing to be doing at this moment.<a name="line.106"></a>
+<span class="sourceLineNo">107</span>            if (failedMetaServer != null) {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>              master.getMasterWalManager().splitMetaLog(failedMetaServer);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>            } else {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>              ServerName serverName =<a name="line.110"></a>
+<span class="sourceLineNo">111</span>                  master.getMetaTableLocator().getMetaRegionLocation(master.getZooKeeper());<a name="line.111"></a>
+<span class="sourceLineNo">112</span>              Set&lt;ServerName&gt; previouslyFailedServers =<a name="line.112"></a>
+<span class="sourceLineNo">113</span>                  master.getMasterWalManager().getFailedServersFromLogFolders();<a name="line.113"></a>
+<span class="sourceLineNo">114</span>              if (serverName != null &amp;&amp; previouslyFailedServers.contains(serverName)) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>                master.getMasterWalManager().splitMetaLog(serverName);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>              }<a name="line.116"></a>
+<span class="sourceLineNo">117</span>            }<a name="line.117"></a>
+<span class="sourceLineNo">118</span>          }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>          setNextState(RecoverMetaState.RECOVER_META_ASSIGN_REGIONS);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>          break;<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>        case RECOVER_META_ASSIGN_REGIONS:<a name="line.122"></a>
+<span class="sourceLineNo">123</span>          HRegionInfo hri = RegionReplicaUtil.getRegionInfoForReplica(<a name="line.123"></a>
+<span class="sourceLineNo">124</span>              HRegionInfo.FIRST_META_REGIONINFO, this.replicaId);<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>          AssignProcedure metaAssignProcedure;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>          if (failedMetaServer != null) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>            LOG.info(this + "; Assigning meta with new plan. previous meta server=" +<a name="line.128"></a>
+<span class="sourceLineNo">129</span>                failedMetaServer);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>            metaAssignProcedure = master.getAssignmentManager().createAssignProcedure(hri, true);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>          } else {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>            // get server carrying meta from zk<a name="line.132"></a>
+<span class="sourceLineNo">133</span>            ServerName metaServer =<a name="line.133"></a>
+<span class="sourceLineNo">134</span>                MetaTableLocator.getMetaRegionState(master.getZooKeeper()).getServerName();<a name="line.134"></a>
+<span class="sourceLineNo">135</span>            LOG.info(this + "; Retaining meta assignment to server=" + metaServer);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>            metaAssignProcedure =<a name="line.136"></a>
+<span class="sourceLineNo">137</span>                master.getAssignmentManager().createAssignProcedure(hri, metaServer);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>          }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>          addChildProcedure(metaAssignProcedure);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>          return Flow.NO_MORE_STATE;<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>        default:<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          throw new UnsupportedOperationException("unhandled state=" + state);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      }<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    } catch (IOException|KeeperException e) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      LOG.warn(this + "; Failed state=" + state + ", retry " + this + "; cycles=" +<a name="line.147"></a>
+<span class="sourceLineNo">148</span>          getCycles(), e);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    return Flow.HAS_MORE_STATE;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>  @Override<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  protected void rollbackState(MasterProcedureEnv env,<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      MasterProcedureProtos.RecoverMetaState recoverMetaState)<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      throws IOException, InterruptedException {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    // Can't rollback<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    throw new UnsupportedOperationException("unhandled state=" + recoverMetaState);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  protected MasterProcedureProtos.RecoverMetaState getState(int stateId) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    return RecoverMetaState.forNumber(stateId);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
+<span class="sourceLineNo">165</span><a name="line.165"></a>
+<span class="sourceLineNo">166</span>  @Override<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  protected int getStateId(MasterProcedureProtos.RecoverMetaState recoverMetaState) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    return recoverMetaState.getNumber();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>  @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  protected MasterProcedureProtos.RecoverMetaState getInitialState() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    return RecoverMetaState.RECOVER_META_SPLIT_LOGS;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  }<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span>  @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  protected void toStringClassDetails(StringBuilder sb) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    sb.append(getClass().getSimpleName());<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    sb.append(" failedMetaServer=");<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    sb.append(failedMetaServer);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    sb.append(", splitWal=");<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    sb.append(shouldSplitWal);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  protected void serializeStateData(OutputStream stream) throws IOException {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    super.serializeStateData(stream);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    MasterProcedureProtos.RecoverMetaStateData.Builder state =<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        MasterProcedureProtos.RecoverMetaStateData.newBuilder().setShouldSplitWal(shouldSplitWal);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    if (failedMetaServer != null) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      state.setFailedMetaServer(ProtobufUtil.toServerName(failedMetaServer));<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    state.setReplicaId(replicaId);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    state.build().writeDelimitedTo(stream);<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>  @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  protected void deserializeStateData(InputStream stream) throws IOException {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    super.deserializeStateData(stream);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    MasterProcedureProtos.RecoverMetaStateData state =<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        MasterProcedureProtos.RecoverMetaStateData.parseDelimitedFrom(stream);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    this.shouldSplitWal = state.hasShouldSplitWal() &amp;&amp; state.getShouldSplitWal();<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    this.failedMetaServer = state.hasFailedMetaServer() ?<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        ProtobufUtil.toServerName(state.getFailedMetaServer()) : null;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    this.replicaId = state.hasReplicaId() ? state.getReplicaId() : HRegionInfo.DEFAULT_REPLICA_ID;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>  }<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>  @Override<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  protected LockState acquireLock(MasterProcedureEnv env) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    if (env.getProcedureScheduler().waitTableExclusiveLock(this, TableName.META_TABLE_NAME)) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      return LockState.LOCK_EVENT_WAIT;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    return LockState.LOCK_ACQUIRED;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>  @Override<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  protected void releaseLock(MasterProcedureEnv env) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    env.getProcedureScheduler().wakeTableExclusiveLock(this, TableName.META_TABLE_NAME);<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>  @Override<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  protected void completionCleanup(MasterProcedureEnv env) {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    ProcedurePrepareLatch.releaseLatch(syncLatch, this);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  @Override<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public TableName getTableName() {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    return TableName.META_TABLE_NAME;<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>  public TableOperationType getTableOperationType() {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    return TableOperationType.ENABLE;<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  /**<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   * @return true if failedMetaServer is not null (meta carrying server crashed) or meta is<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   * already initialized<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   */<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  private boolean isRunRequired() {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    return failedMetaServer != null || !master.getAssignmentManager().isMetaInitialized();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  }<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>  /**<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * Prepare for execution<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  private void prepare(MasterProcedureEnv env) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    if (master == null) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      master = (HMaster) env.getMasterServices();<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      Preconditions.checkArgument(master != null);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>}<a name="line.253"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[27/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
index b3d1843..2e9004e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
@@ -131,3324 +131,3321 @@
 <span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.procedure.ModifyColumnFamilyProcedure;<a name="line.123"></a>
 <span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.124"></a>
 <span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.replication.ReplicationManager;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.procedure2.LockInfo;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.procedure2.ProcedureUtil;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.replication.ReplicationFactory;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.replication.ReplicationQueuesZKImpl;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.replication.master.TableCFsUpdater;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.replication.regionserver.Replication;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.ZKDataMigrator;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.zookeeper.DrainingServerTracker;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.zookeeper.RegionServerTracker;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.zookeeper.SplitOrMergeTracker;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.zookeeper.KeeperException;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.eclipse.jetty.server.Server;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Lists;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Maps;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import com.google.protobuf.Descriptors;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import com.google.protobuf.Service;<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>/**<a name="line.207"></a>
-<span class="sourceLineNo">208</span> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.208"></a>
-<span class="sourceLineNo">209</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.209"></a>
-<span class="sourceLineNo">210</span> * run the cluster.  All others park themselves in their constructor until<a name="line.210"></a>
-<span class="sourceLineNo">211</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.211"></a>
-<span class="sourceLineNo">212</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.212"></a>
-<span class="sourceLineNo">213</span> *<a name="line.213"></a>
-<span class="sourceLineNo">214</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.214"></a>
-<span class="sourceLineNo">215</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.215"></a>
-<span class="sourceLineNo">216</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.216"></a>
-<span class="sourceLineNo">217</span> *<a name="line.217"></a>
-<span class="sourceLineNo">218</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.218"></a>
-<span class="sourceLineNo">219</span> *<a name="line.219"></a>
-<span class="sourceLineNo">220</span> * @see org.apache.zookeeper.Watcher<a name="line.220"></a>
-<span class="sourceLineNo">221</span> */<a name="line.221"></a>
-<span class="sourceLineNo">222</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.222"></a>
-<span class="sourceLineNo">223</span>@SuppressWarnings("deprecation")<a name="line.223"></a>
-<span class="sourceLineNo">224</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private static final Log LOG = LogFactory.getLog(HMaster.class.getName());<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   */<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  private static class InitializationMonitor extends HasThread {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.237"></a>
-<span class="sourceLineNo">238</span>     * true, do nothing otherwise.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>     */<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    public static final boolean HALT_DEFAULT = false;<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>    private final HMaster master;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    private final long timeout;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    private final boolean haltOnTimeout;<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    InitializationMonitor(HMaster master) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      super("MasterInitializationMonitor");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      this.master = master;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      this.setDaemon(true);<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>    @Override<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    public void run() {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      try {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>          Thread.sleep(timeout);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          if (master.isInitialized()) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          } else {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.264"></a>
-<span class="sourceLineNo">265</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.265"></a>
-<span class="sourceLineNo">266</span>            if (haltOnTimeout) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.267"></a>
-<span class="sourceLineNo">268</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.268"></a>
-<span class="sourceLineNo">269</span>              System.exit(-1);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>            }<a name="line.270"></a>
-<span class="sourceLineNo">271</span>          }<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        }<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      } catch (InterruptedException ie) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  //instance into web context.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  public static final String MASTER = "master";<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  // Manager and zk listener for master election<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  private final ActiveMasterManager activeMasterManager;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  // Region server tracker<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  RegionServerTracker regionServerTracker;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  // Draining region server tracker<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  private DrainingServerTracker drainingServerTracker;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  // Tracker for load balancer state<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>  // Tracker for split and merge state<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // Tracker for region normalizer state<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>  //Tracker for master maintenance mode setting<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>  private ClusterSchemaService clusterSchemaService;<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  // Metrics for the HMaster<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  final MetricsMaster metricsMaster;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  // file system manager for the master FS operations<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  private MasterFileSystem fileSystemManager;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  private MasterWalManager walManager;<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  // server manager to deal with region server info<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  private volatile ServerManager serverManager;<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  // manager of assignment nodes in zookeeper<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private AssignmentManager assignmentManager;<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  // manager of replication<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  private ReplicationManager replicationManager;<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  // buffer for "fatal error" notices from region servers<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  // in the cluster. This is only used for assisting<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  // operations/debugging.<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  // flag set after we become the active master (used for testing)<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  private volatile boolean activeMaster = false;<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>  // flag set after we complete initialization once active,<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  // it is not private since it's used in unit tests<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  private final ProcedureEvent initialized = new ProcedureEvent("master initialized");<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>  // flag set after master services are started,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // initialization may have not completed yet.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  volatile boolean serviceStarted = false;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  // flag set after we complete assignMeta.<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  private final ProcedureEvent serverCrashProcessingEnabled =<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    new ProcedureEvent("server crash processing");<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>  // Maximum time we should run balancer for<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  private final int maxBlancingTime;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  // Maximum percent of regions in transition when balancing<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  private final double maxRitPercent;<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private final LockManager lockManager = new LockManager(this);<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>  private LoadBalancer balancer;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  private RegionNormalizer normalizer;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private BalancerChore balancerChore;<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  private RegionNormalizerChore normalizerChore;<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  private ClusterStatusChore clusterStatusChore;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  CatalogJanitor catalogJanitorChore;<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  private ReplicationMetaCleaner replicationMetaCleaner;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private ReplicationZKNodeCleanerChore replicationZKNodeCleanerChore;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  private LogCleaner logCleaner;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  private HFileCleaner hfileCleaner;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  private MobCompactionChore mobCompactChore;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  // used to synchronize the mobCompactionStates<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // save the information of mob compactions in tables.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.364"></a>
-<span class="sourceLineNo">365</span><a name="line.365"></a>
-<span class="sourceLineNo">366</span>  MasterCoprocessorHost cpHost;<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private final boolean preLoadTableDescriptors;<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  // Time stamps for when a hmaster became active<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  private long masterActiveTime;<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private final boolean masterCheckCompression;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>  //should we check encryption settings at master side, default true<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private final boolean masterCheckEncryption;<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>  // monitor for snapshot of hbase tables<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  SnapshotManager snapshotManager;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  // monitor for distributed procedures<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  private MasterProcedureManagerHost mpmHost;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private volatile MasterQuotaManager quotaManager;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private QuotaObserverChore quotaObserverChore;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  private WALProcedureStore procedureStore;<a name="line.393"></a>
-<span class="sourceLineNo">394</span><a name="line.394"></a>
-<span class="sourceLineNo">395</span>  // handle table states<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  private TableStateManager tableStateManager;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  private long splitPlanCount;<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  private long mergePlanCount;<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>  /** flag used in test cases in order to simulate RS failures during master initialization */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  private volatile boolean initializationBeforeMetaAssignment = false;<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  /* Handle favored nodes information */<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  private FavoredNodesManager favoredNodesManager;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  private Server masterJettyServer;<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>  public static class RedirectServlet extends HttpServlet {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    private final int regionServerInfoPort;<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    private final String regionServerHostname;<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>    /**<a name="line.415"></a>
-<span class="sourceLineNo">416</span>     * @param infoServer that we're trying to send all requests to<a name="line.416"></a>
-<span class="sourceLineNo">417</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>     */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>       regionServerInfoPort = infoServer.getPort();<a name="line.420"></a>
-<span class="sourceLineNo">421</span>       regionServerHostname = hostname;<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 doGet(HttpServletRequest request,<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      String redirectHost = regionServerHostname;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      if(redirectHost == null) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        redirectHost = request.getServerName();<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.431"></a>
-<span class="sourceLineNo">432</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.432"></a>
-<span class="sourceLineNo">433</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.433"></a>
-<span class="sourceLineNo">434</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.434"></a>
-<span class="sourceLineNo">435</span>              "to an appropriate hostname.");<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.437"></a>
-<span class="sourceLineNo">438</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.438"></a>
-<span class="sourceLineNo">439</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          return;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      String redirectUrl = request.getScheme() + "://"<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        + request.getRequestURI();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      response.sendRedirect(redirectUrl);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  /**<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * Initializes the HMaster. The steps are as follows:<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * &lt;p&gt;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   * &lt;ol&gt;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * &lt;/ol&gt;<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * &lt;p&gt;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * Remaining steps of initialization occur in<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * the master becomes the active one.<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   */<a name="line.463"></a>
-<span class="sourceLineNo">464</span>  public HMaster(final Configuration conf, CoordinatedStateManager csm)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      throws IOException, KeeperException {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    super(conf, csm);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      conf.getLong("hbase.master.buffer.for.rs.fatals", 1*1024*1024));<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>    LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // Disable usage of meta replicas in the master<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.474"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.replication.ReplicationManager;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.procedure2.LockInfo;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.procedure2.ProcedureUtil;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.replication.ReplicationFactory;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.replication.ReplicationQueuesZKImpl;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.replication.master.TableCFsUpdater;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.replication.regionserver.Replication;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.ZKDataMigrator;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.zookeeper.DrainingServerTracker;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.zookeeper.RegionServerTracker;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.SplitOrMergeTracker;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.zookeeper.KeeperException;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.eclipse.jetty.server.Server;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Lists;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Maps;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import com.google.protobuf.Descriptors;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import com.google.protobuf.Service;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.209"></a>
+<span class="sourceLineNo">210</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.210"></a>
+<span class="sourceLineNo">211</span> * run the cluster.  All others park themselves in their constructor until<a name="line.211"></a>
+<span class="sourceLineNo">212</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.212"></a>
+<span class="sourceLineNo">213</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.213"></a>
+<span class="sourceLineNo">214</span> *<a name="line.214"></a>
+<span class="sourceLineNo">215</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.215"></a>
+<span class="sourceLineNo">216</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.216"></a>
+<span class="sourceLineNo">217</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.217"></a>
+<span class="sourceLineNo">218</span> *<a name="line.218"></a>
+<span class="sourceLineNo">219</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.219"></a>
+<span class="sourceLineNo">220</span> *<a name="line.220"></a>
+<span class="sourceLineNo">221</span> * @see org.apache.zookeeper.Watcher<a name="line.221"></a>
+<span class="sourceLineNo">222</span> */<a name="line.222"></a>
+<span class="sourceLineNo">223</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.223"></a>
+<span class="sourceLineNo">224</span>@SuppressWarnings("deprecation")<a name="line.224"></a>
+<span class="sourceLineNo">225</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  private static final Log LOG = LogFactory.getLog(HMaster.class.getName());<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   */<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  private static class InitializationMonitor extends HasThread {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.238"></a>
+<span class="sourceLineNo">239</span>     * true, do nothing otherwise.<a name="line.239"></a>
+<span class="sourceLineNo">240</span>     */<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public static final boolean HALT_DEFAULT = false;<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>    private final HMaster master;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    private final long timeout;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    private final boolean haltOnTimeout;<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    InitializationMonitor(HMaster master) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      super("MasterInitializationMonitor");<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      this.master = master;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      this.setDaemon(true);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    @Override<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    public void run() {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      try {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          Thread.sleep(timeout);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          if (master.isInitialized()) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          } else {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.265"></a>
+<span class="sourceLineNo">266</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.266"></a>
+<span class="sourceLineNo">267</span>            if (haltOnTimeout) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.268"></a>
+<span class="sourceLineNo">269</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.269"></a>
+<span class="sourceLineNo">270</span>              System.exit(-1);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>            }<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      } catch (InterruptedException ie) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      }<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  //instance into web context.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  public static final String MASTER = "master";<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  // Manager and zk listener for master election<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  private final ActiveMasterManager activeMasterManager;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  // Region server tracker<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  RegionServerTracker regionServerTracker;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  // Draining region server tracker<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  private DrainingServerTracker drainingServerTracker;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  // Tracker for load balancer state<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>  // Tracker for split and merge state<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  // Tracker for region normalizer state<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>  //Tracker for master maintenance mode setting<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>  private ClusterSchemaService clusterSchemaService;<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>  // Metrics for the HMaster<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  final MetricsMaster metricsMaster;<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  // file system manager for the master FS operations<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  private MasterFileSystem fileSystemManager;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  private MasterWalManager walManager;<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  // server manager to deal with region server info<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  private volatile ServerManager serverManager;<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  // manager of assignment nodes in zookeeper<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  private AssignmentManager assignmentManager;<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // manager of replication<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private ReplicationManager replicationManager;<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  // buffer for "fatal error" notices from region servers<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  // in the cluster. This is only used for assisting<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  // operations/debugging.<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  // flag set after we become the active master (used for testing)<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  private volatile boolean activeMaster = false;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // flag set after we complete initialization once active,<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  // it is not private since it's used in unit tests<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  private final ProcedureEvent initialized = new ProcedureEvent("master initialized");<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>  // flag set after master services are started,<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  // initialization may have not completed yet.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  volatile boolean serviceStarted = false;<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  // flag set after we complete assignMeta.<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  private final ProcedureEvent serverCrashProcessingEnabled =<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    new ProcedureEvent("server crash processing");<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  // Maximum time we should run balancer for<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  private final int maxBlancingTime;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  // Maximum percent of regions in transition when balancing<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  private final double maxRitPercent;<a name="line.342"></a>
+<span class="sourceLineNo">343</span><a name="line.343"></a>
+<span class="sourceLineNo">344</span>  private final LockManager lockManager = new LockManager(this);<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private LoadBalancer balancer;<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  private RegionNormalizer normalizer;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  private BalancerChore balancerChore;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private RegionNormalizerChore normalizerChore;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  private ClusterStatusChore clusterStatusChore;<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.351"></a>
+<span class="sourceLineNo">352</span><a name="line.352"></a>
+<span class="sourceLineNo">353</span>  CatalogJanitor catalogJanitorChore;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>  private ReplicationMetaCleaner replicationMetaCleaner;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  private ReplicationZKNodeCleanerChore replicationZKNodeCleanerChore;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  private LogCleaner logCleaner;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  private HFileCleaner hfileCleaner;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  private MobCompactionChore mobCompactChore;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  // used to synchronize the mobCompactionStates<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  // save the information of mob compactions in tables.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  MasterCoprocessorHost cpHost;<a name="line.367"></a>
+<span class="sourceLineNo">368</span><a name="line.368"></a>
+<span class="sourceLineNo">369</span>  private final boolean preLoadTableDescriptors;<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>  // Time stamps for when a hmaster became active<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  private long masterActiveTime;<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private final boolean masterCheckCompression;<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  //should we check encryption settings at master side, default true<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  private final boolean masterCheckEncryption;<a name="line.378"></a>
+<span class="sourceLineNo">379</span><a name="line.379"></a>
+<span class="sourceLineNo">380</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>  // monitor for snapshot of hbase tables<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  SnapshotManager snapshotManager;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  // monitor for distributed procedures<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  private MasterProcedureManagerHost mpmHost;<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.387"></a>
+<span class="sourceLineNo">388</span>  private volatile MasterQuotaManager quotaManager;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  private QuotaObserverChore quotaObserverChore;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.391"></a>
+<span class="sourceLineNo">392</span><a name="line.392"></a>
+<span class="sourceLineNo">393</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private WALProcedureStore procedureStore;<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>  // handle table states<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private TableStateManager tableStateManager;<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>  private long splitPlanCount;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>  private long mergePlanCount;<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>  /* Handle favored nodes information */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  private FavoredNodesManager favoredNodesManager;<a name="line.403"></a>
+<span class="sourceLineNo">404</span><a name="line.404"></a>
+<span class="sourceLineNo">405</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  private Server masterJettyServer;<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  public static class RedirectServlet extends HttpServlet {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    private final int regionServerInfoPort;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    private final String regionServerHostname;<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>    /**<a name="line.413"></a>
+<span class="sourceLineNo">414</span>     * @param infoServer that we're trying to send all requests to<a name="line.414"></a>
+<span class="sourceLineNo">415</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>     */<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>       regionServerInfoPort = infoServer.getPort();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>       regionServerHostname = hostname;<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 doGet(HttpServletRequest request,<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      String redirectHost = regionServerHostname;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      if(redirectHost == null) {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        redirectHost = request.getServerName();<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.429"></a>
+<span class="sourceLineNo">430</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.430"></a>
+<span class="sourceLineNo">431</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.431"></a>
+<span class="sourceLineNo">432</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.432"></a>
+<span class="sourceLineNo">433</span>              "to an appropriate hostname.");<a name="line.433"></a>
+<span class="sourceLineNo">434</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.434"></a>
+<span class="sourceLineNo">435</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.435"></a>
+<span class="sourceLineNo">436</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.436"></a>
+<span class="sourceLineNo">437</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          return;<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>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      String redirectUrl = request.getScheme() + "://"<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        + request.getRequestURI();<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      response.sendRedirect(redirectUrl);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  }<a name="line.448"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   * Initializes the HMaster. The steps are as follows:<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   * &lt;p&gt;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * &lt;ol&gt;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.454"></a>
+<span class="sourceLineNo">455</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.455"></a>
+<span class="sourceLineNo">456</span>   * &lt;/ol&gt;<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   * &lt;p&gt;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * Remaining steps of initialization occur in<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * the master becomes the active one.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  public HMaster(final Configuration conf, CoordinatedStateManager csm)<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      throws IOException, KeeperException {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    super(conf, csm);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      conf.getLong("hbase.master.buffer.for.rs.fatals", 1*1024*1024));<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>    LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.469"></a>
+<span class="sourceLineNo">470</span><a name="line.470"></a>
+<span class="sourceLineNo">471</span>    // Disable usage of meta replicas in the master<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span>    Replication.decorateMasterConfiguration(this.conf);<a name="line.474"></a>
 <span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    Replication.decorateMasterConfiguration(this.conf);<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>    // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    // config param for task trackers, but we can piggyback off of it.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<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>    // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>    // should we check encryption settings at master side, default true<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.488"></a>
+<span class="sourceLineNo">476</span>    // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    // config param for task trackers, but we can piggyback off of it.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<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">482</span>    // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.483"></a>
+<span class="sourceLineNo">484</span><a name="line.484"></a>
+<span class="sourceLineNo">485</span>    // should we check encryption settings at master side, default true<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.486"></a>
+<span class="sourceLineNo">487</span><a name="line.487"></a>
+<span class="sourceLineNo">488</span>    this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.488"></a>
 <span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.490"></a>
-<span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>    // preload table descriptor at startup<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>    this.maxBlancingTime = getMaxBalancingTime();<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.497"></a>
+<span class="sourceLineNo">490</span>    // preload table descriptor at startup<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.491"></a>
+<span class="sourceLineNo">492</span><a name="line.492"></a>
+<span class="sourceLineNo">493</span>    this.maxBlancingTime = getMaxBalancingTime();<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>    // Do we publish the status?<a name="line.497"></a>
 <span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    // Do we publish the status?<a name="line.499"></a>
-<span class="sourceLineNo">500</span><a name="line.500"></a>
-<span class="sourceLineNo">501</span>    boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    Class&lt;? extends ClusterStatusPublisher.Publisher&gt; publisherClass =<a name="line.503"></a>
-<span class="sourceLineNo">504</span>        conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.504"></a>
-<span class="sourceLineNo">505</span>            ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.505"></a>
-<span class="sourceLineNo">506</span>            ClusterStatusPublisher.Publisher.class);<a name="line.506"></a>
-<span class="sourceLineNo">507</span><a name="line.507"></a>
-<span class="sourceLineNo">508</span>    if (shouldPublish) {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      if (publisherClass == null) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.510"></a>
-<span class="sourceLineNo">511</span>            ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.511"></a>
-<span class="sourceLineNo">512</span>            " is not set - not publishing status");<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      } else {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>        getChoreService().scheduleChore(clusterStatusPublisherChore);<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><a name="line.518"></a>
-<span class="sourceLineNo">519</span>    // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      setInitLatch(new CountDownLatch(1));<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      activeMasterManager = new ActiveMasterManager(zooKeeper, this.serverName, this);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      int infoPort = putUpJettyServer();<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      startActiveMasterManager(infoPort);<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    } else {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      activeMasterManager = null;<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>  // return the actual infoPort, -1 means disable info server.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>  private int putUpJettyServer() throws IOException {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    if (!conf.getBoolean("hbase.master.infoserver.redirect", true)) {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      return -1;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    final int infoPort = conf.getInt("hbase.master.info.port.orig",<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      HConstants.DEFAULT_MASTER_INFOPORT);<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    // -1 is for disabling info server, so no redirecting<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    if (infoPort &lt; 0 || infoServer == null) {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      return -1;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    }<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    if(infoPort == infoServer.getPort()) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      return infoPort;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    final String addr = conf.get("hbase.master.info.bindAddress", "0.0.0.0");<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    if (!Addressing.isLocalAddress(InetAddress.getByName(addr))) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      String msg =<a name="line.546"></a>
-<span class="sourceLineNo">547</span>          "Failed to start redirecting jetty server. Address " + addr<a name="line.547"></a>
-<span class="sourceLineNo">548</span>              + " does not belong to this host. Correct configuration parameter: "<a name="line.548"></a>
-<span class="sourceLineNo">549</span>              + "hbase.master.info.bindAddress";<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      LOG.error(msg);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      throw new IOException(msg);<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>    // TODO I'm pretty sure we could just add another binding to the InfoServer run by<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    // the RegionServer and have it run the RedirectServlet instead of standing up<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    // a second entire stack here.<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    masterJettyServer = new Server();<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    final ServerConnector connector = new ServerConnector(masterJettyServer);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    connector.setHost(addr);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>    connector.setPort(infoPort);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    masterJettyServer.addConnector(connector);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    masterJettyServer.setStopAtShutdown(true);<a name="line.562"></a>
+<span class="sourceLineNo">499</span>    boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.499"></a>
+<span class="sourceLineNo">500</span>        HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    Class&lt;? extends ClusterStatusPublisher.Publisher&gt; publisherClass =<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.502"></a>
+<span class="sourceLineNo">503</span>            ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.503"></a>
+<span class="sourceLineNo">504</span>            ClusterStatusPublisher.Publisher.class);<a name="line.504"></a>
+<span class="sourceLineNo">505</span><a name="line.505"></a>
+<span class="sourceLineNo">506</span>    if (shouldPublish) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      if (publisherClass == null) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>        LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.508"></a>
+<span class="sourceLineNo">509</span>            ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.509"></a>
+<span class="sourceLineNo">510</span>            " is not set - not publishing status");<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      } else {<a name="line.511"></a>
+<span class="sourceLineNo">512</span>        clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>        getChoreService().scheduleChore(clusterStatusPublisherChore);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      }<a name="line.514"></a>
+<span class="sourceLineNo"

<TRUNCATED>

[18/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html
index 38cee64..d900251 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html
@@ -220,1065 +220,1075 @@
 <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>    final Procedure pollResult = rq.peek();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      removeFromRunQueue(fairq, rq);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      return null;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>    rq.poll();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    if (rq.isEmpty() || xlockReq) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      removeFromRunQueue(fairq, rq);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      // if the rq is in the fairq because of runnable child<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      // check if the next procedure is still a child.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      Procedure nextProc = rq.peek();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        removeFromRunQueue(fairq, rq);<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>    return pollResult;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">215</span>    if (pollResult == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      return null;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      removeFromRunQueue(fairq, rq);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      return null;<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>    rq.poll();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    if (rq.isEmpty() || xlockReq) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      removeFromRunQueue(fairq, rq);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      // if the rq is in the fairq because of runnable child<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      // check if the next procedure is still a child.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      Procedure nextProc = rq.peek();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        removeFromRunQueue(fairq, rq);<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      String resourceName, LockAndQueue queue) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    LockInfo info = new LockInfo();<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    info.setResourceType(resourceType);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    info.setResourceName(resourceName);<a name="line.243"></a>
+<span class="sourceLineNo">238</span>    return pollResult;<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      String resourceName, LockAndQueue queue) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    LockInfo info = new LockInfo();<a name="line.243"></a>
 <span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    if (queue.hasExclusiveLock()) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.246"></a>
+<span class="sourceLineNo">245</span>    info.setResourceType(resourceType);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    info.setResourceName(resourceName);<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      info.setSharedLockCount(queue.getSharedLockCount());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        continue;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.263"></a>
+<span class="sourceLineNo">248</span>    if (queue.hasExclusiveLock()) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      info.setSharedLockCount(queue.getSharedLockCount());<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>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        continue;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
 <span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>      switch (lockProcedure.getType()) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      case EXCLUSIVE:<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        break;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      case SHARED:<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.270"></a>
+<span class="sourceLineNo">265</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>      switch (lockProcedure.getType()) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      case EXCLUSIVE:<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.270"></a>
 <span class="sourceLineNo">271</span>        break;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.275"></a>
+<span class="sourceLineNo">272</span>      case SHARED:<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        break;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
 <span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">277</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.278"></a>
 <span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return info;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">280</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
 <span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Override<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    schedLock();<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.288"></a>
+<span class="sourceLineNo">283</span>    return info;<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>  @Override<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    schedLock();<a name="line.288"></a>
 <span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          .entrySet()) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        String serverName = entry.getKey().getServerName();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        LockAndQueue queue = entry.getValue();<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>        if (queue.isLocked()) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              serverName, queue);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          lockInfos.add(lockInfo);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          .entrySet()) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        String namespaceName = entry.getKey();<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        LockAndQueue queue = entry.getValue();<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>        if (queue.isLocked()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              namespaceName, queue);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>          lockInfos.add(lockInfo);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        }<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.314"></a>
-<span class="sourceLineNo">315</span>          .entrySet()) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        String tableName = entry.getKey().getNameAsString();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        LockAndQueue queue = entry.getValue();<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>        if (queue.isLocked()) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.320"></a>
-<span class="sourceLineNo">321</span>              tableName, queue);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          lockInfos.add(lockInfo);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        String regionName = entry.getKey();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        LockAndQueue queue = entry.getValue();<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>        if (queue.isLocked()) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              regionName, queue);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          lockInfos.add(lockInfo);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      }<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>      return lockInfos;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    } finally {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      schedUnlock();<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>  @Override<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    LockAndQueue queue = null;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    schedLock();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    try {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      switch (resourceType) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        case SERVER:<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.350"></a>
-<span class="sourceLineNo">351</span>          break;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        case NAMESPACE:<a name="line.352"></a>
-<span class="sourceLineNo">353</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.353"></a>
+<span class="sourceLineNo">290</span>    try {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          .entrySet()) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        String serverName = entry.getKey().getServerName();<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        LockAndQueue queue = entry.getValue();<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>        if (queue.isLocked()) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              serverName, queue);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          lockInfos.add(lockInfo);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          .entrySet()) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        String namespaceName = entry.getKey();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        LockAndQueue queue = entry.getValue();<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>        if (queue.isLocked()) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.311"></a>
+<span class="sourceLineNo">312</span>              namespaceName, queue);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>          lockInfos.add(lockInfo);<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>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.317"></a>
+<span class="sourceLineNo">318</span>          .entrySet()) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        String tableName = entry.getKey().getNameAsString();<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        LockAndQueue queue = entry.getValue();<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>        if (queue.isLocked()) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.323"></a>
+<span class="sourceLineNo">324</span>              tableName, queue);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>          lockInfos.add(lockInfo);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        String regionName = entry.getKey();<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        LockAndQueue queue = entry.getValue();<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>        if (queue.isLocked()) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.334"></a>
+<span class="sourceLineNo">335</span>              regionName, queue);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          lockInfos.add(lockInfo);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return lockInfos;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    } finally {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      schedUnlock();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    LockAndQueue queue = null;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    schedLock();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    try {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      switch (resourceType) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        case SERVER:<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.353"></a>
 <span class="sourceLineNo">354</span>          break;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        case TABLE:<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.356"></a>
+<span class="sourceLineNo">355</span>        case NAMESPACE:<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.356"></a>
 <span class="sourceLineNo">357</span>          break;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        case REGION:<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          queue = locking.regionLocks.get(resourceName);<a name="line.359"></a>
+<span class="sourceLineNo">358</span>        case TABLE:<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.359"></a>
 <span class="sourceLineNo">360</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    } finally {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      schedUnlock();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public void clear() {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    schedLock();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    try {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      clearQueue();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      locking.clear();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    } finally {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      schedUnlock();<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>  protected void clearQueue() {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    // Remove Servers<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      serverBuckets[i] = null;<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>    // Remove Tables<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    tableMap = null;<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
+<span class="sourceLineNo">361</span>        case REGION:<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          queue = locking.regionLocks.get(resourceName);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    } finally {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      schedUnlock();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  @Override<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  public void clear() {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    schedLock();<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    try {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      clearQueue();<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      locking.clear();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    } finally {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      schedUnlock();<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><a name="line.382"></a>
+<span class="sourceLineNo">383</span>  protected void clearQueue() {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // Remove Servers<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      serverBuckets[i] = null;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>    // Remove Tables<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    tableMap = null;<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    while (treeMap != null) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Override<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  protected int queueSize() {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    int count = 0;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // Server queues<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      while (serverIter.hasNext()) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        count += serverIter.next().size();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>    // Table queues<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    while (tableIter.hasNext()) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      count += tableIter.next().size();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    return count;<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 completionCleanup(final Procedure proc) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    if (proc instanceof TableProcedureInterface) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      boolean tableDeleted;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (proc.hasException()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          // create failed because the table already exist<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        } else {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          // the operation failed because the table does not exist<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      } else {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        // the table was deleted<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if (tableDeleted) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        return;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    } else {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      return;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      fairq.add(queue);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      fairq.remove(queue);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>  // ============================================================================<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  //  Table Queue Lookup Helpers<a name="line.466"></a>
-<span class="sourceLineNo">467</span>  // ============================================================================<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    if (node != null) return node;<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    return node;<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private void removeTableQueue(TableName tableName) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    locking.removeTableLock(tableName);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  }<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    return proc instanceof TableProcedureInterface;<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>  private static TableName getTableName(Procedure proc) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  }<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>  //  Server Queue Lookup Helpers<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  // ============================================================================<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    if (node != null) return node;<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    return node;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  }<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    return Math.abs(hashCode) % buckets.length;<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>  private static boolean isServerProcedure(Procedure proc) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  // ============================================================================<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  //  Table and Server Queue Implementation<a name="line.518"></a>
-<span class="sourceLineNo">519</span>  // ============================================================================<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    @Override<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      return node.compareKey((ServerName)key);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      super(serverName, serverLock);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>    @Override<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      switch (spi.getServerOperationType()) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        case CRASH_HANDLER:<a name="line.536"></a>
-<span class="sourceLineNo">537</span>          return true;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        default:<a name="line.538"></a>
-<span class="sourceLineNo">539</span>          break;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      }<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    @Override<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    public int compareKey(TableQueue node, Object key) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      return node.compareKey((TableName)key);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    }<a name="line.549"></a>
-<span class="sourceLineNo">550</span>  }<a name="line.550"></a>
-<span class="sourceLineNo">551</span><a name="line.551"></a>
-<span class="sourceLineNo">552</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    private final LockStatus namespaceLockStatus;<a name="line.553"></a>
+<span class="sourceLineNo">394</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    while (treeMap != null) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  @Override<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  protected int queueSize() {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    int count = 0;<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>    // Server queues<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      while (serverIter.hasNext()) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        count += serverIter.next().size();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>    // Table queues<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    while (tableIter.hasNext()) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      count += tableIter.next().size();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    return count;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  @Override<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  public void completionCleanup(final Procedure proc) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    if (proc instanceof TableProcedureInterface) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      boolean tableDeleted;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      if (proc.hasException()) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>          // create failed because the table already exist<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        } else {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          // the operation failed because the table does not exist<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      } else {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        // the table was deleted<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      }<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      if (tableDeleted) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        return;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      }<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } else {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      return;<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><a name="line.454"></a>
+<span class="sourceLineNo">455</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      fairq.add(queue);<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>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      fairq.remove(queue);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  }<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>  // ============================================================================<a name="line.468"></a>
+<span class="sourceLineNo">469</span>  //  Table Queue Lookup Helpers<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  // ============================================================================<a name="line.470"></a>
+<span class="sourceLineNo">471</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    if (node != null) return node;<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    return node;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  }<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>  private void removeTableQueue(TableName tableName) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    locking.removeTableLock(tableName);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span><a name="line.486"></a>
+<span class="sourceLineNo">487</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    return proc instanceof TableProcedureInterface;<a name="line.488"></a>
+<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>  private static TableName getTableName(Procedure proc) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  }<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>  // ============================================================================<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  //  Server Queue Lookup Helpers<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  // ============================================================================<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    if (node != null) return node;<a name="line.501"></a>
+<span class="sourceLineNo">502</span><a name="line.502"></a>
+<span class="sourceLineNo">503</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    return node;<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>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return Math.abs(hashCode) % buckets.length;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>  private static boolean isServerProcedure(Procedure proc) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
+<span class="sourceLineNo">519</span><a name="line.519"></a>
+<span class="sourceLineNo">520</span>  // ============================================================================<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  //  Table and Server Queue Implementation<a name="line.521"></a>
+<span class="sourceLineNo">522</span>  // ============================================================================<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    @Override<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      return node.compareKey((ServerName)key);<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>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      super(serverName, serverLock);<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>    @Override<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      switch (spi.getServerOperationType()) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        case CRASH_HANDLER:<a name="line.539"></a>
+<span class="sourceLineNo">540</span>          return true;<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        default:<a name="line.541"></a>
+<span class="sourceLineNo">542</span>          break;<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    @Override<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    public int compareKey(TableQueue node, Object key) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      return node.compareKey((TableName)key);<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><a name="line.554"></a>
-<span class="sourceLineNo">555</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        LockStatus namespaceLockStatus) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      super(tableName, priority, tableLock);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      this.namespaceLockStatus = namespaceLockStatus;<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>    @Override<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    public boolean isAvailable() {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      // we can't execute operation on this table<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>        return false;<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>      if (getLockStatus().hasExclusiveLock()) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        // if we have an exclusive lock already taken<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        // only child of the lock owner can be executed<a name="line.571"></a>
-<span class="sourceLineNo">572</span>        final Procedure nextProc = peek();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>      // no xlock<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return true;<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>    @Override<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
-<span class="sourceLineNo">585</span><a name="line.585"></a>
-<span class="sourceLineNo">586</span>  // ============================================================================<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  //  Table Locking Helpers<a name="line.587"></a>
-<span class="sourceLineNo">588</span>  // ============================================================================<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    switch (proc.getTableOperationType()) {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      case CREATE:<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      case DELETE:<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      case DISABLE:<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      case ENABLE:<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        return true;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      case EDIT:<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        // we allow concurrent edit on the NS table<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      case READ:<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        return false;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      // region operations are using the shared-lock on the table<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      // and then they will grab an xlock on the region.<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      case REGION_SPLIT:<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      case REGION_MERGE:<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      case REGION_ASSIGN:<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      case REGION_UNASSIGN:<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      case REGION_EDIT:<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      case REGION_GC:<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      case MERGED_REGIONS_GC:<a name="line.609"></a>
-<span class="sourceLineNo">610</span>        return false;<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      default:<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        break;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    }<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        proc.getTableOperationType());<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  /**<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * Get lock info for a resource of specified type and name and log details<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   */<a name="line.620"></a>
-<span class="sourceLineNo">621</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    if (!LOG.isDebugEnabled()) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      return;<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    if (lockInfo != null) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.628"></a>
-<span class="sourceLineNo">629</span>          lockInfo.getSharedLockCount();<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      if (proc != null) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      }<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      LOG.debug(msg);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    }<a name="line.636"></a>
-<span class="sourceLineNo">637</span>  }<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>  /**<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   * Suspend the procedure if the specified table is already locked.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.641"></a>
-<span class="sourceLineNo">642</span>   * @param procedure the procedure trying to acquire the lock<a name="line.642"></a>
-<span class="sourceLineNo">643</span>   * @param table Table to lock<a name="line.643"></a>
-<span class="sourceLineNo">644</span>   * @return true if the procedure has to wait for the table to be available<a name="line.644"></a>
-<span class="sourceLineNo">645</span>   */<a name="line.645"></a>
-<span class="sourceLineNo">646</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    schedLock();<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    try {<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      final String namespace = table.getNamespaceAsString();<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      if (!namespaceLock.trySharedLock()) {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>        waitProcedure(namespaceLock, procedure);<a name="line.653"></a>
-<span class="sourceLineNo">654</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        return true;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      if (!tableLock.tryExclusiveLock(procedure)) {<a name="line.657"></a>
-<span class="sourceLineNo">658</span>        namespaceLock.releaseSharedLock();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>        waitProcedure(tableLock, procedure);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.TABLE, table.getNameAsString());<a name="line.660"></a>
+<span class="sourceLineNo">555</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    private final LockStatus namespaceLockStatus;<a name="line.556"></a>
+<span class="sourceLineNo">557</span><a name="line.557"></a>
+<span class="sourceLineNo">558</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>        LockStatus namespaceLockStatus) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      super(tableName, priority, tableLock);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      this.namespaceLockStatus = namespaceLockStatus;<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    }<a name="line.562"></a>
+<span class="sourceLineNo">563</span><a name="line.563"></a>
+<span class="sourceLineNo">564</span>    @Override<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    public boolean isAvailable() {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      // we can't execute operation on this table<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.568"></a>
+<span class="sourceLineNo">569</span>        return false;<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      }<a name="line.570"></a>
+<span class="sourceLineNo">571</span><a name="line.571"></a>
+<span class="sourceLineNo">572</span>      if (getLockStatus().hasExclusiveLock()) {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>        // if we have an exclusive lock already taken<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        // only child of the lock owner can be executed<a name="line.574"></a>
+<span class="sourceLineNo">575</span>        final Procedure nextProc = peek();<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>      // no xlock<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      return true;<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
+<span class="sourceLineNo">582</span><a name="line.582"></a>
+<span class="sourceLineNo">583</span>    @Override<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    }<a name="line.586"></a>
+<span class="sourceLineNo">587</span>  }<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>  // ============================================================================<a name="line.589"></a>
+<span class="sourceLineNo">590</span>  //  Table Locking Helpers<a name="line.590"></a>
+<span class="sourceLineNo">591</span>  // ============================================================================<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  /**<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @param proc must not be null<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   */<a name="line.594"></a>
+<span class="sourceLineNo">595</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    switch (proc.getTableOperationType()) {<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      case CREATE:<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      case DELETE:<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      case DISABLE:<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      case ENABLE:<a name="line.600"></a>
+<span class="sourceLineNo">601</span>        return true;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      case EDIT:<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        // we allow concurrent edit on the NS table<a name="line.603"></a>
+<span class="sourceLineNo">604</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      case READ:<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        return false;<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      // region operations are using the shared-lock on the table<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      // and then they will grab an xlock on the region.<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      case REGION_SPLIT:<a name="line.609"></a>
+<span class="sourceLineNo">610</span>      case REGION_MERGE:<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      case REGION_ASSIGN:<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      case REGION_UNASSIGN:<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      case REGION_EDIT:<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      case REGION_GC:<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      case MERGED_REGIONS_GC:<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        return false;<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      default:<a name="line.617"></a>
+<span class="sourceLineNo">618</span>        break;<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    }<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.620"></a>
+<span class="sourceLineNo">621</span>        proc.getTableOperationType());<a name="line.621"></a>
+<span class="sourceLineNo">622</span>  }<a name="line.622"></a>
+<span class="sourceLineNo">623</span><a name="line.623"></a>
+<span class="sourceLineNo">624</span>  /**<a name="line.624"></a>
+<span class="sourceLineNo">625</span>   * Get lock info for a resource of specified type and name and log details<a name="line.625"></a>
+<span class="sourceLineNo">626</span>   */<a name="line.626"></a>
+<span class="sourceLineNo">627</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    if (!LOG.isDebugEnabled()) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>      return;<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>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    if (lockInfo != null) {<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.634"></a>
+<span class="sourceLineNo">635</span>          lockInfo.getSharedLockCount();<a name="line.635"></a>
+<span class="sourceLineNo">636</span><a name="line.636"></a>
+<span class="sourceLineNo">637</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.637"></a>
+<span class="sourceLineNo">638</span>      if (proc != null) {<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      }<a name="line.640"></a>
+<span class="sourceLineNo">641</span>      LOG.debug(msg);<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>  }<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   * Suspend the procedure if the specified table is already locked.<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.647"></a>
+<span class="sourceLineNo">648</span>   * @param procedure the procedure trying to acquire the lock<a name="line.648"></a>
+<span class="sourceLineNo">649</span>   * @param table Table to lock<a name="line.649"></a>
+<span class="sourceLineNo">650</span>   * @return true if the procedure has to wait for the table to be available<a name="line.650"></a>
+<span class="sourceLineNo">651</span>   */<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    schedLock();<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    try {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>      final String namespace = table.getNamespaceAsString();<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      if (!namespaceLock.trySharedLock()) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>        waitProcedure(namespaceLock, procedure);<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.660"></a>
 <span class="sourceLineNo">661</span>        return true;<a name="line.661"></a>
 <span class="sourceLineNo">662</span>      }<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      removeFromRunQueue(tableRunQueue, getTableQueue(table));<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      return false;<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    } finally {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      schedUnlock();<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  }<a name="line.668"></a>
-<span class="sourceLineNo">669</span><a name="line.669"></a>
-<span class="sourceLineNo">670</span>  /**<a name="line.670"></a>
-<span class="sourceLineNo">671</span>   * Wake the procedures waiting for the specified table<a name="line.671"></a>
-<span class="sourceLineNo">672</span>   * @param procedure the procedure releasing the lock<a name="line.672"></a>
-<span class="sourceLineNo">673</span>   * @param table the name of the table that has the exclusive lock<a name="line.673"></a>
-<span class="sourceLineNo">674</span>   */<a name="line.674"></a>
-<span class="sourceLineNo">675</span>  public void wakeTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    schedLock();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    try {<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(table.getNamespaceAsString());<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      int waitingCount = 0;<a name="line.680"></a>
-<span class="sourceLineNo">681</span><a name="line.681"></a>
-<span class="sourceLineNo">682</span>      if (!tableLock.hasParentLock(procedure)) {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>        tableLock.releaseExclusiveLock(procedure);<a name="line.683"></a>
-<span class="sourceLineNo">684</span>        waitingCount += wakeWaitingProcedures(tableLock);<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      }<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      if (namespaceLock.releaseSharedLock()) {<a name="line.686"></a>
-<span class="sourceLineNo">687</span>        waitingCount += wakeWaitingProcedures(namespaceLock);<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      }<a name="line.688"></a>
-<span class="sourceLineNo">689</span>      addToRunQueue(tableRunQueue, getTableQueue(table));<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      wakePollIfNeeded(waitingCount);<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    } finally {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>      schedUnlock();<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><a name="line.695"></a>
-<span class="sourceLineNo">696</span>  /**<a name="line.696"></a>
-<span class="sourceLineNo">697</span>   * Suspend the procedure if the specified table is already locked.<a name="line.697"></a>
-<span class="sourceLineNo">698</span>   * other "read" operations in the table-queue may be executed concurrently,<a name="line.698"></a>
-<span class="sourceLineNo">699</span>   * @param procedure the procedure trying to acquire the lock<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   * @param table Table to lock<a name="line.700"></a>
-<span class="sourceLineNo">701</span>   * @return true if the procedure has to wait for the table to be available<a name="line.701"></a>
-<span class="sourceLineNo">702</span>   */<a name="line.702"></a>
-<span class="sourceLineNo">703</span>  public boolean waitTableSharedLock(final Procedure procedure, final TableName table) {<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    return waitTableQueueSharedLock(procedure, table) == null;<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>  private TableQueue waitTableQueueSharedLock(final Procedure procedure, final TableName table) {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    schedLock();<a name="line.708"></a>
-<span class="sou

<TRUNCATED>

[29/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/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 8254fe9..30d7c40 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -131,9 +131,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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.DeleteCompare.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteCompare</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/DeleteTracker.DeleteCompare.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteCompare</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/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/110df817/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
index dc2f127..91776e4 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
@@ -110,8 +110,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.FilterType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/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 9da8ca6..09974e8 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="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/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/110df817/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 29f4bfc..59ab0ce 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -198,9 +198,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/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/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/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/110df817/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 2a2f407..c8d5ade 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -522,14 +522,14 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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.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/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/overview-tree.html b/devapidocs/overview-tree.html
index ab368cd..45710cf 100644
--- a/devapidocs/overview-tree.html
+++ b/devapidocs/overview-tree.html
@@ -2697,6 +2697,7 @@
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TruncateTableProcedure</span></a></li>
 </ul>
 </li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">RecoverMetaProcedure</span></a> (implements org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerCrashProcedure</span></a> (implements org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">ServerProcedureInterface</a>)</li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/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 0bfe414..cf4b832 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 = "95808b467287e3510baa13634d8ef14af7a74aa8";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "a5db120e6090faecb680f3f1e297f78e567ba3a3";<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 = "Mon Jul 31 14:42:21 UTC 2017";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Tue Aug  1 14:39:46 UTC 2017";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://asf920.gq1.ygridcore.net/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "25ae4c9ddbc978b53145eb29236bb5c4";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "57e11df6ae23400a5a92fb9cdec2a813";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 


[13/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html
index 38cee64..d900251 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html
@@ -220,1065 +220,1075 @@
 <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>    final Procedure pollResult = rq.peek();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      removeFromRunQueue(fairq, rq);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      return null;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>    rq.poll();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    if (rq.isEmpty() || xlockReq) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      removeFromRunQueue(fairq, rq);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      // if the rq is in the fairq because of runnable child<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      // check if the next procedure is still a child.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      Procedure nextProc = rq.peek();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        removeFromRunQueue(fairq, rq);<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>    return pollResult;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">215</span>    if (pollResult == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      return null;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      removeFromRunQueue(fairq, rq);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      return null;<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>    rq.poll();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    if (rq.isEmpty() || xlockReq) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      removeFromRunQueue(fairq, rq);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      // if the rq is in the fairq because of runnable child<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      // check if the next procedure is still a child.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      Procedure nextProc = rq.peek();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        removeFromRunQueue(fairq, rq);<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      String resourceName, LockAndQueue queue) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    LockInfo info = new LockInfo();<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    info.setResourceType(resourceType);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    info.setResourceName(resourceName);<a name="line.243"></a>
+<span class="sourceLineNo">238</span>    return pollResult;<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      String resourceName, LockAndQueue queue) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    LockInfo info = new LockInfo();<a name="line.243"></a>
 <span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    if (queue.hasExclusiveLock()) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.246"></a>
+<span class="sourceLineNo">245</span>    info.setResourceType(resourceType);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    info.setResourceName(resourceName);<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      info.setSharedLockCount(queue.getSharedLockCount());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        continue;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.263"></a>
+<span class="sourceLineNo">248</span>    if (queue.hasExclusiveLock()) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      info.setSharedLockCount(queue.getSharedLockCount());<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>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        continue;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
 <span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>      switch (lockProcedure.getType()) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      case EXCLUSIVE:<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        break;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      case SHARED:<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.270"></a>
+<span class="sourceLineNo">265</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>      switch (lockProcedure.getType()) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      case EXCLUSIVE:<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.270"></a>
 <span class="sourceLineNo">271</span>        break;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.275"></a>
+<span class="sourceLineNo">272</span>      case SHARED:<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        break;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
 <span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">277</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.278"></a>
 <span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return info;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">280</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
 <span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Override<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    schedLock();<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.288"></a>
+<span class="sourceLineNo">283</span>    return info;<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>  @Override<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    schedLock();<a name="line.288"></a>
 <span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          .entrySet()) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        String serverName = entry.getKey().getServerName();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        LockAndQueue queue = entry.getValue();<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>        if (queue.isLocked()) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              serverName, queue);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          lockInfos.add(lockInfo);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          .entrySet()) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        String namespaceName = entry.getKey();<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        LockAndQueue queue = entry.getValue();<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>        if (queue.isLocked()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              namespaceName, queue);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>          lockInfos.add(lockInfo);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        }<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.314"></a>
-<span class="sourceLineNo">315</span>          .entrySet()) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        String tableName = entry.getKey().getNameAsString();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        LockAndQueue queue = entry.getValue();<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>        if (queue.isLocked()) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.320"></a>
-<span class="sourceLineNo">321</span>              tableName, queue);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          lockInfos.add(lockInfo);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        String regionName = entry.getKey();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        LockAndQueue queue = entry.getValue();<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>        if (queue.isLocked()) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              regionName, queue);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          lockInfos.add(lockInfo);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      }<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>      return lockInfos;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    } finally {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      schedUnlock();<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>  @Override<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    LockAndQueue queue = null;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    schedLock();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    try {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      switch (resourceType) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        case SERVER:<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.350"></a>
-<span class="sourceLineNo">351</span>          break;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        case NAMESPACE:<a name="line.352"></a>
-<span class="sourceLineNo">353</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.353"></a>
+<span class="sourceLineNo">290</span>    try {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          .entrySet()) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        String serverName = entry.getKey().getServerName();<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        LockAndQueue queue = entry.getValue();<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>        if (queue.isLocked()) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              serverName, queue);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          lockInfos.add(lockInfo);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          .entrySet()) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        String namespaceName = entry.getKey();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        LockAndQueue queue = entry.getValue();<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>        if (queue.isLocked()) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.311"></a>
+<span class="sourceLineNo">312</span>              namespaceName, queue);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>          lockInfos.add(lockInfo);<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>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.317"></a>
+<span class="sourceLineNo">318</span>          .entrySet()) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        String tableName = entry.getKey().getNameAsString();<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        LockAndQueue queue = entry.getValue();<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>        if (queue.isLocked()) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.323"></a>
+<span class="sourceLineNo">324</span>              tableName, queue);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>          lockInfos.add(lockInfo);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        String regionName = entry.getKey();<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        LockAndQueue queue = entry.getValue();<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>        if (queue.isLocked()) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.334"></a>
+<span class="sourceLineNo">335</span>              regionName, queue);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          lockInfos.add(lockInfo);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return lockInfos;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    } finally {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      schedUnlock();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    LockAndQueue queue = null;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    schedLock();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    try {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      switch (resourceType) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        case SERVER:<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.353"></a>
 <span class="sourceLineNo">354</span>          break;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        case TABLE:<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.356"></a>
+<span class="sourceLineNo">355</span>        case NAMESPACE:<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.356"></a>
 <span class="sourceLineNo">357</span>          break;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        case REGION:<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          queue = locking.regionLocks.get(resourceName);<a name="line.359"></a>
+<span class="sourceLineNo">358</span>        case TABLE:<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.359"></a>
 <span class="sourceLineNo">360</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    } finally {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      schedUnlock();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public void clear() {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    schedLock();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    try {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      clearQueue();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      locking.clear();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    } finally {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      schedUnlock();<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>  protected void clearQueue() {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    // Remove Servers<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      serverBuckets[i] = null;<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>    // Remove Tables<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    tableMap = null;<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
+<span class="sourceLineNo">361</span>        case REGION:<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          queue = locking.regionLocks.get(resourceName);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    } finally {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      schedUnlock();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  @Override<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  public void clear() {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    schedLock();<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    try {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      clearQueue();<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      locking.clear();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    } finally {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      schedUnlock();<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><a name="line.382"></a>
+<span class="sourceLineNo">383</span>  protected void clearQueue() {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // Remove Servers<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      serverBuckets[i] = null;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>    // Remove Tables<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    tableMap = null;<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    while (treeMap != null) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Override<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  protected int queueSize() {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    int count = 0;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // Server queues<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      while (serverIter.hasNext()) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        count += serverIter.next().size();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>    // Table queues<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    while (tableIter.hasNext()) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      count += tableIter.next().size();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    return count;<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 completionCleanup(final Procedure proc) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    if (proc instanceof TableProcedureInterface) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      boolean tableDeleted;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (proc.hasException()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          // create failed because the table already exist<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        } else {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          // the operation failed because the table does not exist<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      } else {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        // the table was deleted<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if (tableDeleted) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        return;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    } else {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      return;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      fairq.add(queue);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      fairq.remove(queue);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>  // ============================================================================<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  //  Table Queue Lookup Helpers<a name="line.466"></a>
-<span class="sourceLineNo">467</span>  // ============================================================================<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    if (node != null) return node;<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    return node;<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private void removeTableQueue(TableName tableName) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    locking.removeTableLock(tableName);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  }<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    return proc instanceof TableProcedureInterface;<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>  private static TableName getTableName(Procedure proc) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  }<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>  //  Server Queue Lookup Helpers<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  // ============================================================================<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    if (node != null) return node;<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    return node;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  }<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    return Math.abs(hashCode) % buckets.length;<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>  private static boolean isServerProcedure(Procedure proc) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  // ============================================================================<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  //  Table and Server Queue Implementation<a name="line.518"></a>
-<span class="sourceLineNo">519</span>  // ============================================================================<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    @Override<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      return node.compareKey((ServerName)key);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      super(serverName, serverLock);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>    @Override<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      switch (spi.getServerOperationType()) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        case CRASH_HANDLER:<a name="line.536"></a>
-<span class="sourceLineNo">537</span>          return true;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        default:<a name="line.538"></a>
-<span class="sourceLineNo">539</span>          break;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      }<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    @Override<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    public int compareKey(TableQueue node, Object key) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      return node.compareKey((TableName)key);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    }<a name="line.549"></a>
-<span class="sourceLineNo">550</span>  }<a name="line.550"></a>
-<span class="sourceLineNo">551</span><a name="line.551"></a>
-<span class="sourceLineNo">552</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    private final LockStatus namespaceLockStatus;<a name="line.553"></a>
+<span class="sourceLineNo">394</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    while (treeMap != null) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  @Override<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  protected int queueSize() {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    int count = 0;<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>    // Server queues<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      while (serverIter.hasNext()) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        count += serverIter.next().size();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>    // Table queues<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    while (tableIter.hasNext()) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      count += tableIter.next().size();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    return count;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  @Override<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  public void completionCleanup(final Procedure proc) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    if (proc instanceof TableProcedureInterface) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      boolean tableDeleted;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      if (proc.hasException()) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>          // create failed because the table already exist<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        } else {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          // the operation failed because the table does not exist<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      } else {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        // the table was deleted<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      }<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      if (tableDeleted) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        return;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      }<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } else {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      return;<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><a name="line.454"></a>
+<span class="sourceLineNo">455</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      fairq.add(queue);<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>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      fairq.remove(queue);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  }<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>  // ============================================================================<a name="line.468"></a>
+<span class="sourceLineNo">469</span>  //  Table Queue Lookup Helpers<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  // ============================================================================<a name="line.470"></a>
+<span class="sourceLineNo">471</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    if (node != null) return node;<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    return node;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  }<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>  private void removeTableQueue(TableName tableName) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    locking.removeTableLock(tableName);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span><a name="line.486"></a>
+<span class="sourceLineNo">487</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    return proc instanceof TableProcedureInterface;<a name="line.488"></a>
+<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>  private static TableName getTableName(Procedure proc) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  }<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>  // ============================================================================<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  //  Server Queue Lookup Helpers<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  // ============================================================================<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    if (node != null) return node;<a name="line.501"></a>
+<span class="sourceLineNo">502</span><a name="line.502"></a>
+<span class="sourceLineNo">503</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    return node;<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>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return Math.abs(hashCode) % buckets.length;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>  private static boolean isServerProcedure(Procedure proc) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
+<span class="sourceLineNo">519</span><a name="line.519"></a>
+<span class="sourceLineNo">520</span>  // ============================================================================<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  //  Table and Server Queue Implementation<a name="line.521"></a>
+<span class="sourceLineNo">522</span>  // ============================================================================<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    @Override<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      return node.compareKey((ServerName)key);<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>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      super(serverName, serverLock);<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>    @Override<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      switch (spi.getServerOperationType()) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        case CRASH_HANDLER:<a name="line.539"></a>
+<span class="sourceLineNo">540</span>          return true;<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        default:<a name="line.541"></a>
+<span class="sourceLineNo">542</span>          break;<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    @Override<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    public int compareKey(TableQueue node, Object key) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      return node.compareKey((TableName)key);<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><a name="line.554"></a>
-<span class="sourceLineNo">555</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        LockStatus namespaceLockStatus) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      super(tableName, priority, tableLock);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      this.namespaceLockStatus = namespaceLockStatus;<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>    @Override<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    public boolean isAvailable() {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      // we can't execute operation on this table<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>        return false;<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>      if (getLockStatus().hasExclusiveLock()) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        // if we have an exclusive lock already taken<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        // only child of the lock owner can be executed<a name="line.571"></a>
-<span class="sourceLineNo">572</span>        final Procedure nextProc = peek();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>      // no xlock<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return true;<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>    @Override<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
-<span class="sourceLineNo">585</span><a name="line.585"></a>
-<span class="sourceLineNo">586</span>  // ============================================================================<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  //  Table Locking Helpers<a name="line.587"></a>
-<span class="sourceLineNo">588</span>  // ============================================================================<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    switch (proc.getTableOperationType()) {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      case CREATE:<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      case DELETE:<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      case DISABLE:<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      case ENABLE:<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        return true;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      case EDIT:<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        // we allow concurrent edit on the NS table<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      case READ:<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        return false;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      // region operations are using the shared-lock on the table<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      // and then they will grab an xlock on the region.<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      case REGION_SPLIT:<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      case REGION_MERGE:<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      case REGION_ASSIGN:<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      case REGION_UNASSIGN:<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      case REGION_EDIT:<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      case REGION_GC:<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      case MERGED_REGIONS_GC:<a name="line.609"></a>
-<span class="sourceLineNo">610</span>        return false;<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      default:<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        break;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    }<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        proc.getTableOperationType());<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  /**<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * Get lock info for a resource of specified type and name and log details<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   */<a name="line.620"></a>
-<span class="sourceLineNo">621</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    if (!LOG.isDebugEnabled()) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      return;<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    if (lockInfo != null) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.628"></a>
-<span class="sourceLineNo">629</span>          lockInfo.getSharedLockCount();<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      if (proc != null) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      }<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      LOG.debug(msg);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    }<a name="line.636"></a>
-<span class="sourceLineNo">637</span>  }<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>  /**<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   * Suspend the procedure if the specified table is already locked.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.641"></a>
-<span class="sourceLineNo">642</span>   * @param procedure the procedure trying to acquire the lock<a name="line.642"></a>
-<span class="sourceLineNo">643</span>   * @param table Table to lock<a name="line.643"></a>
-<span class="sourceLineNo">644</span>   * @return true if the procedure has to wait for the table to be available<a name="line.644"></a>
-<span class="sourceLineNo">645</span>   */<a name="line.645"></a>
-<span class="sourceLineNo">646</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    schedLock();<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    try {<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      final String namespace = table.getNamespaceAsString();<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      if (!namespaceLock.trySharedLock()) {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>        waitProcedure(namespaceLock, procedure);<a name="line.653"></a>
-<span class="sourceLineNo">654</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        return true;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      if (!tableLock.tryExclusiveLock(procedure)) {<a name="line.657"></a>
-<span class="sourceLineNo">658</span>        namespaceLock.releaseSharedLock();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>        waitProcedure(tableLock, procedure);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.TABLE, table.getNameAsString());<a name="line.660"></a>
+<span class="sourceLineNo">555</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    private final LockStatus namespaceLockStatus;<a name="line.556"></a>
+<span class="sourceLineNo">557</span><a name="line.557"></a>
+<span class="sourceLineNo">558</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>        LockStatus namespaceLockStatus) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      super(tableName, priority, tableLock);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      this.namespaceLockStatus = namespaceLockStatus;<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    }<a name="line.562"></a>
+<span class="sourceLineNo">563</span><a name="line.563"></a>
+<span class="sourceLineNo">564</span>    @Override<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    public boolean isAvailable() {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      // we can't execute operation on this table<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.568"></a>
+<span class="sourceLineNo">569</span>        return false;<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      }<a name="line.570"></a>
+<span class="sourceLineNo">571</span><a name="line.571"></a>
+<span class="sourceLineNo">572</span>      if (getLockStatus().hasExclusiveLock()) {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>        // if we have an exclusive lock already taken<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        // only child of the lock owner can be executed<a name="line.574"></a>
+<span class="sourceLineNo">575</span>        final Procedure nextProc = peek();<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>      // no xlock<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      return true;<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
+<span class="sourceLineNo">582</span><a name="line.582"></a>
+<span class="sourceLineNo">583</span>    @Override<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    }<a name="line.586"></a>
+<span class="sourceLineNo">587</span>  }<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>  // ============================================================================<a name="line.589"></a>
+<span class="sourceLineNo">590</span>  //  Table Locking Helpers<a name="line.590"></a>
+<span class="sourceLineNo">591</span>  // ============================================================================<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  /**<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @param proc must not be null<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   */<a name="line.594"></a>
+<span class="sourceLineNo">595</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    switch (proc.getTableOperationType()) {<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      case CREATE:<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      case DELETE:<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      case DISABLE:<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      case ENABLE:<a name="line.600"></a>
+<span class="sourceLineNo">601</span>        return true;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      case EDIT:<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        // we allow concurrent edit on the NS table<a name="line.603"></a>
+<span class="sourceLineNo">604</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      case READ:<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        return false;<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      // region operations are using the shared-lock on the table<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      // and then they will grab an xlock on the region.<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      case REGION_SPLIT:<a name="line.609"></a>
+<span class="sourceLineNo">610</span>      case REGION_MERGE:<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      case REGION_ASSIGN:<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      case REGION_UNASSIGN:<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      case REGION_EDIT:<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      case REGION_GC:<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      case MERGED_REGIONS_GC:<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        return false;<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      default:<a name="line.617"></a>
+<span class="sourceLineNo">618</span>        break;<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    }<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.620"></a>
+<span class="sourceLineNo">621</span>        proc.getTableOperationType());<a name="line.621"></a>
+<span class="sourceLineNo">622</span>  }<a name="line.622"></a>
+<span class="sourceLineNo">623</span><a name="line.623"></a>
+<span class="sourceLineNo">624</span>  /**<a name="line.624"></a>
+<span class="sourceLineNo">625</span>   * Get lock info for a resource of specified type and name and log details<a name="line.625"></a>
+<span class="sourceLineNo">626</span>   */<a name="line.626"></a>
+<span class="sourceLineNo">627</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    if (!LOG.isDebugEnabled()) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>      return;<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>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    if (lockInfo != null) {<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.634"></a>
+<span class="sourceLineNo">635</span>          lockInfo.getSharedLockCount();<a name="line.635"></a>
+<span class="sourceLineNo">636</span><a name="line.636"></a>
+<span class="sourceLineNo">637</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.637"></a>
+<span class="sourceLineNo">638</span>      if (proc != null) {<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      }<a name="line.640"></a>
+<span class="sourceLineNo">641</span>      LOG.debug(msg);<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>  }<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   * Suspend the procedure if the specified table is already locked.<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.647"></a>
+<span class="sourceLineNo">648</span>   * @param procedure the procedure trying to acquire the lock<a name="line.648"></a>
+<span class="sourceLineNo">649</span>   * @param table Table to lock<a name="line.649"></a>
+<span class="sourceLineNo">650</span>   * @return true if the procedure has to wait for the table to be available<a name="line.650"></a>
+<span class="sourceLineNo">651</span>   */<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    schedLock();<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    try {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>      final String namespace = table.getNamespaceAsString();<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      if (!namespaceLock.trySharedLock()) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>        waitProcedure(namespaceLock, procedure);<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.660"></a>
 <span class="sourceLineNo">661</span>        return true;<a name="line.661"></a>
 <span class="sourceLineNo">662</span>      }<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      removeFromRunQueue(tableRunQueue, getTableQueue(table));<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      return false;<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    } finally {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      schedUnlock();<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  }<a name="line.668"></a>
-<span class="sourceLineNo">669</span><a name="line.669"></a>
-<span class="sourceLineNo">670</span>  /**<a name="line.670"></a>
-<span class="sourceLineNo">671</span>   * Wake the procedures waiting for the specified table<a name="line.671"></a>
-<span class="sourceLineNo">672</span>   * @param procedure the procedure releasing the lock<a name="line.672"></a>
-<span class="sourceLineNo">673</span>   * @param table the name of the table that has the exclusive lock<a name="line.673"></a>
-<span class="sourceLineNo">674</span>   */<a name="line.674"></a>
-<span class="sourceLineNo">675</span>  public void wakeTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    schedLock();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    try {<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(table.getNamespaceAsString());<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      int waitingCount = 0;<a name="line.680"></a>
-<span class="sourceLineNo">681</span><a name="line.681"></a>
-<span class="sourceLineNo">682</span>      if (!tableLock.hasParentLock(procedure)) {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>        tableLock.releaseExclusiveLock(procedure);<a name="line.683"></a>
-<span class="sourceLineNo">684</span>        waitingCount += wakeWaitingProcedures(tableLock);<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      }<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      if (namespaceLock.releaseSharedLock()) {<a name="line.686"></a>
-<span class="sourceLineNo">687</span>        waitingCount += wakeWaitingProcedures(namespaceLock);<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      }<a name="line.688"></a>
-<span class="sourceLineNo">689</span>      addToRunQueue(tableRunQueue, getTableQueue(table));<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      wakePollIfNeeded(waitingCount);<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    } finally {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>      schedUnlock();<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><a name="line.695"></a>
-<span class="sourceLineNo">696</span>  /**<a name="line.696"></a>
-<span class="sourceLineNo">697</span>   * Suspend the procedure if the specified table is already locked.<a name="line.697"></a>
-<span class="sourceLineNo">698</span>   * other "read" operations in the table-queue may be executed concurrently,<a name="line.698"></a>
-<span class="sourceLineNo">699</span>   * @param procedure the procedure trying to acquire the lock<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   * @param table Table to lock<a name="line.700"></a>
-<span class="sourceLineNo">701</span>   * @return true if the procedure has to wait for the table to be available<a name="line.701"></a>
-<span class="sourceLineNo">702</span>   */<a name="line.702"></a>
-<span class="sourceLineNo">703</span>  public boolean waitTableSharedLock(final Procedure procedure, final TableName table) {<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    return waitTableQueueSharedLock(procedure, table) == null;<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>  private TableQueue waitTableQueueSharedLock(final Procedure procedure, final TableName table) {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    schedLock();<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    try {<a name="line.709"></a>
-<span

<TRUNCATED>

[20/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html
index 38cee64..d900251 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html
@@ -220,1065 +220,1075 @@
 <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>    final Procedure pollResult = rq.peek();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      removeFromRunQueue(fairq, rq);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      return null;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>    rq.poll();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    if (rq.isEmpty() || xlockReq) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      removeFromRunQueue(fairq, rq);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      // if the rq is in the fairq because of runnable child<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      // check if the next procedure is still a child.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      Procedure nextProc = rq.peek();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        removeFromRunQueue(fairq, rq);<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>    return pollResult;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">215</span>    if (pollResult == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      return null;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      removeFromRunQueue(fairq, rq);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      return null;<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>    rq.poll();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    if (rq.isEmpty() || xlockReq) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      removeFromRunQueue(fairq, rq);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      // if the rq is in the fairq because of runnable child<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      // check if the next procedure is still a child.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      Procedure nextProc = rq.peek();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        removeFromRunQueue(fairq, rq);<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      String resourceName, LockAndQueue queue) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    LockInfo info = new LockInfo();<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    info.setResourceType(resourceType);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    info.setResourceName(resourceName);<a name="line.243"></a>
+<span class="sourceLineNo">238</span>    return pollResult;<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      String resourceName, LockAndQueue queue) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    LockInfo info = new LockInfo();<a name="line.243"></a>
 <span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    if (queue.hasExclusiveLock()) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.246"></a>
+<span class="sourceLineNo">245</span>    info.setResourceType(resourceType);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    info.setResourceName(resourceName);<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      info.setSharedLockCount(queue.getSharedLockCount());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        continue;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.263"></a>
+<span class="sourceLineNo">248</span>    if (queue.hasExclusiveLock()) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      info.setSharedLockCount(queue.getSharedLockCount());<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>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        continue;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
 <span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>      switch (lockProcedure.getType()) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      case EXCLUSIVE:<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        break;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      case SHARED:<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.270"></a>
+<span class="sourceLineNo">265</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>      switch (lockProcedure.getType()) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      case EXCLUSIVE:<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.270"></a>
 <span class="sourceLineNo">271</span>        break;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.275"></a>
+<span class="sourceLineNo">272</span>      case SHARED:<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        break;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
 <span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">277</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.278"></a>
 <span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return info;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">280</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
 <span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Override<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    schedLock();<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.288"></a>
+<span class="sourceLineNo">283</span>    return info;<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>  @Override<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    schedLock();<a name="line.288"></a>
 <span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          .entrySet()) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        String serverName = entry.getKey().getServerName();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        LockAndQueue queue = entry.getValue();<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>        if (queue.isLocked()) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              serverName, queue);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          lockInfos.add(lockInfo);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          .entrySet()) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        String namespaceName = entry.getKey();<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        LockAndQueue queue = entry.getValue();<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>        if (queue.isLocked()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              namespaceName, queue);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>          lockInfos.add(lockInfo);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        }<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.314"></a>
-<span class="sourceLineNo">315</span>          .entrySet()) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        String tableName = entry.getKey().getNameAsString();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        LockAndQueue queue = entry.getValue();<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>        if (queue.isLocked()) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.320"></a>
-<span class="sourceLineNo">321</span>              tableName, queue);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          lockInfos.add(lockInfo);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        String regionName = entry.getKey();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        LockAndQueue queue = entry.getValue();<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>        if (queue.isLocked()) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              regionName, queue);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          lockInfos.add(lockInfo);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      }<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>      return lockInfos;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    } finally {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      schedUnlock();<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>  @Override<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    LockAndQueue queue = null;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    schedLock();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    try {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      switch (resourceType) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        case SERVER:<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.350"></a>
-<span class="sourceLineNo">351</span>          break;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        case NAMESPACE:<a name="line.352"></a>
-<span class="sourceLineNo">353</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.353"></a>
+<span class="sourceLineNo">290</span>    try {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          .entrySet()) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        String serverName = entry.getKey().getServerName();<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        LockAndQueue queue = entry.getValue();<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>        if (queue.isLocked()) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              serverName, queue);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          lockInfos.add(lockInfo);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          .entrySet()) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        String namespaceName = entry.getKey();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        LockAndQueue queue = entry.getValue();<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>        if (queue.isLocked()) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.311"></a>
+<span class="sourceLineNo">312</span>              namespaceName, queue);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>          lockInfos.add(lockInfo);<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>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.317"></a>
+<span class="sourceLineNo">318</span>          .entrySet()) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        String tableName = entry.getKey().getNameAsString();<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        LockAndQueue queue = entry.getValue();<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>        if (queue.isLocked()) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.323"></a>
+<span class="sourceLineNo">324</span>              tableName, queue);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>          lockInfos.add(lockInfo);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        String regionName = entry.getKey();<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        LockAndQueue queue = entry.getValue();<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>        if (queue.isLocked()) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.334"></a>
+<span class="sourceLineNo">335</span>              regionName, queue);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          lockInfos.add(lockInfo);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return lockInfos;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    } finally {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      schedUnlock();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    LockAndQueue queue = null;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    schedLock();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    try {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      switch (resourceType) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        case SERVER:<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.353"></a>
 <span class="sourceLineNo">354</span>          break;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        case TABLE:<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.356"></a>
+<span class="sourceLineNo">355</span>        case NAMESPACE:<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.356"></a>
 <span class="sourceLineNo">357</span>          break;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        case REGION:<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          queue = locking.regionLocks.get(resourceName);<a name="line.359"></a>
+<span class="sourceLineNo">358</span>        case TABLE:<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.359"></a>
 <span class="sourceLineNo">360</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    } finally {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      schedUnlock();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public void clear() {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    schedLock();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    try {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      clearQueue();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      locking.clear();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    } finally {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      schedUnlock();<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>  protected void clearQueue() {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    // Remove Servers<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      serverBuckets[i] = null;<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>    // Remove Tables<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    tableMap = null;<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
+<span class="sourceLineNo">361</span>        case REGION:<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          queue = locking.regionLocks.get(resourceName);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    } finally {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      schedUnlock();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  @Override<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  public void clear() {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    schedLock();<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    try {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      clearQueue();<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      locking.clear();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    } finally {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      schedUnlock();<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><a name="line.382"></a>
+<span class="sourceLineNo">383</span>  protected void clearQueue() {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // Remove Servers<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      serverBuckets[i] = null;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>    // Remove Tables<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    tableMap = null;<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    while (treeMap != null) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Override<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  protected int queueSize() {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    int count = 0;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // Server queues<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      while (serverIter.hasNext()) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        count += serverIter.next().size();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>    // Table queues<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    while (tableIter.hasNext()) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      count += tableIter.next().size();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    return count;<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 completionCleanup(final Procedure proc) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    if (proc instanceof TableProcedureInterface) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      boolean tableDeleted;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (proc.hasException()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          // create failed because the table already exist<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        } else {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          // the operation failed because the table does not exist<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      } else {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        // the table was deleted<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if (tableDeleted) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        return;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    } else {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      return;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      fairq.add(queue);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      fairq.remove(queue);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>  // ============================================================================<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  //  Table Queue Lookup Helpers<a name="line.466"></a>
-<span class="sourceLineNo">467</span>  // ============================================================================<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    if (node != null) return node;<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    return node;<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private void removeTableQueue(TableName tableName) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    locking.removeTableLock(tableName);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  }<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    return proc instanceof TableProcedureInterface;<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>  private static TableName getTableName(Procedure proc) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  }<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>  //  Server Queue Lookup Helpers<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  // ============================================================================<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    if (node != null) return node;<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    return node;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  }<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    return Math.abs(hashCode) % buckets.length;<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>  private static boolean isServerProcedure(Procedure proc) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  // ============================================================================<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  //  Table and Server Queue Implementation<a name="line.518"></a>
-<span class="sourceLineNo">519</span>  // ============================================================================<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    @Override<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      return node.compareKey((ServerName)key);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      super(serverName, serverLock);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>    @Override<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      switch (spi.getServerOperationType()) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        case CRASH_HANDLER:<a name="line.536"></a>
-<span class="sourceLineNo">537</span>          return true;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        default:<a name="line.538"></a>
-<span class="sourceLineNo">539</span>          break;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      }<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    @Override<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    public int compareKey(TableQueue node, Object key) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      return node.compareKey((TableName)key);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    }<a name="line.549"></a>
-<span class="sourceLineNo">550</span>  }<a name="line.550"></a>
-<span class="sourceLineNo">551</span><a name="line.551"></a>
-<span class="sourceLineNo">552</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    private final LockStatus namespaceLockStatus;<a name="line.553"></a>
+<span class="sourceLineNo">394</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    while (treeMap != null) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  @Override<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  protected int queueSize() {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    int count = 0;<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>    // Server queues<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      while (serverIter.hasNext()) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        count += serverIter.next().size();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>    // Table queues<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    while (tableIter.hasNext()) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      count += tableIter.next().size();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    return count;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  @Override<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  public void completionCleanup(final Procedure proc) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    if (proc instanceof TableProcedureInterface) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      boolean tableDeleted;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      if (proc.hasException()) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>          // create failed because the table already exist<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        } else {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          // the operation failed because the table does not exist<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      } else {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        // the table was deleted<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      }<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      if (tableDeleted) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        return;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      }<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } else {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      return;<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><a name="line.454"></a>
+<span class="sourceLineNo">455</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      fairq.add(queue);<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>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      fairq.remove(queue);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  }<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>  // ============================================================================<a name="line.468"></a>
+<span class="sourceLineNo">469</span>  //  Table Queue Lookup Helpers<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  // ============================================================================<a name="line.470"></a>
+<span class="sourceLineNo">471</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    if (node != null) return node;<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    return node;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  }<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>  private void removeTableQueue(TableName tableName) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    locking.removeTableLock(tableName);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span><a name="line.486"></a>
+<span class="sourceLineNo">487</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    return proc instanceof TableProcedureInterface;<a name="line.488"></a>
+<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>  private static TableName getTableName(Procedure proc) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  }<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>  // ============================================================================<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  //  Server Queue Lookup Helpers<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  // ============================================================================<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    if (node != null) return node;<a name="line.501"></a>
+<span class="sourceLineNo">502</span><a name="line.502"></a>
+<span class="sourceLineNo">503</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    return node;<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>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return Math.abs(hashCode) % buckets.length;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>  private static boolean isServerProcedure(Procedure proc) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
+<span class="sourceLineNo">519</span><a name="line.519"></a>
+<span class="sourceLineNo">520</span>  // ============================================================================<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  //  Table and Server Queue Implementation<a name="line.521"></a>
+<span class="sourceLineNo">522</span>  // ============================================================================<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    @Override<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      return node.compareKey((ServerName)key);<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>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      super(serverName, serverLock);<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>    @Override<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      switch (spi.getServerOperationType()) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        case CRASH_HANDLER:<a name="line.539"></a>
+<span class="sourceLineNo">540</span>          return true;<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        default:<a name="line.541"></a>
+<span class="sourceLineNo">542</span>          break;<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    @Override<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    public int compareKey(TableQueue node, Object key) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      return node.compareKey((TableName)key);<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><a name="line.554"></a>
-<span class="sourceLineNo">555</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        LockStatus namespaceLockStatus) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      super(tableName, priority, tableLock);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      this.namespaceLockStatus = namespaceLockStatus;<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>    @Override<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    public boolean isAvailable() {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      // we can't execute operation on this table<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>        return false;<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>      if (getLockStatus().hasExclusiveLock()) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        // if we have an exclusive lock already taken<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        // only child of the lock owner can be executed<a name="line.571"></a>
-<span class="sourceLineNo">572</span>        final Procedure nextProc = peek();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>      // no xlock<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return true;<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>    @Override<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
-<span class="sourceLineNo">585</span><a name="line.585"></a>
-<span class="sourceLineNo">586</span>  // ============================================================================<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  //  Table Locking Helpers<a name="line.587"></a>
-<span class="sourceLineNo">588</span>  // ============================================================================<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    switch (proc.getTableOperationType()) {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      case CREATE:<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      case DELETE:<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      case DISABLE:<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      case ENABLE:<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        return true;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      case EDIT:<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        // we allow concurrent edit on the NS table<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      case READ:<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        return false;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      // region operations are using the shared-lock on the table<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      // and then they will grab an xlock on the region.<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      case REGION_SPLIT:<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      case REGION_MERGE:<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      case REGION_ASSIGN:<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      case REGION_UNASSIGN:<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      case REGION_EDIT:<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      case REGION_GC:<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      case MERGED_REGIONS_GC:<a name="line.609"></a>
-<span class="sourceLineNo">610</span>        return false;<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      default:<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        break;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    }<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        proc.getTableOperationType());<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  /**<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * Get lock info for a resource of specified type and name and log details<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   */<a name="line.620"></a>
-<span class="sourceLineNo">621</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    if (!LOG.isDebugEnabled()) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      return;<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    if (lockInfo != null) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.628"></a>
-<span class="sourceLineNo">629</span>          lockInfo.getSharedLockCount();<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      if (proc != null) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      }<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      LOG.debug(msg);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    }<a name="line.636"></a>
-<span class="sourceLineNo">637</span>  }<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>  /**<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   * Suspend the procedure if the specified table is already locked.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.641"></a>
-<span class="sourceLineNo">642</span>   * @param procedure the procedure trying to acquire the lock<a name="line.642"></a>
-<span class="sourceLineNo">643</span>   * @param table Table to lock<a name="line.643"></a>
-<span class="sourceLineNo">644</span>   * @return true if the procedure has to wait for the table to be available<a name="line.644"></a>
-<span class="sourceLineNo">645</span>   */<a name="line.645"></a>
-<span class="sourceLineNo">646</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    schedLock();<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    try {<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      final String namespace = table.getNamespaceAsString();<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      if (!namespaceLock.trySharedLock()) {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>        waitProcedure(namespaceLock, procedure);<a name="line.653"></a>
-<span class="sourceLineNo">654</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        return true;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      if (!tableLock.tryExclusiveLock(procedure)) {<a name="line.657"></a>
-<span class="sourceLineNo">658</span>        namespaceLock.releaseSharedLock();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>        waitProcedure(tableLock, procedure);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.TABLE, table.getNameAsString());<a name="line.660"></a>
+<span class="sourceLineNo">555</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    private final LockStatus namespaceLockStatus;<a name="line.556"></a>
+<span class="sourceLineNo">557</span><a name="line.557"></a>
+<span class="sourceLineNo">558</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>        LockStatus namespaceLockStatus) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      super(tableName, priority, tableLock);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      this.namespaceLockStatus = namespaceLockStatus;<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    }<a name="line.562"></a>
+<span class="sourceLineNo">563</span><a name="line.563"></a>
+<span class="sourceLineNo">564</span>    @Override<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    public boolean isAvailable() {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      // we can't execute operation on this table<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.568"></a>
+<span class="sourceLineNo">569</span>        return false;<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      }<a name="line.570"></a>
+<span class="sourceLineNo">571</span><a name="line.571"></a>
+<span class="sourceLineNo">572</span>      if (getLockStatus().hasExclusiveLock()) {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>        // if we have an exclusive lock already taken<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        // only child of the lock owner can be executed<a name="line.574"></a>
+<span class="sourceLineNo">575</span>        final Procedure nextProc = peek();<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>      // no xlock<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      return true;<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
+<span class="sourceLineNo">582</span><a name="line.582"></a>
+<span class="sourceLineNo">583</span>    @Override<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    }<a name="line.586"></a>
+<span class="sourceLineNo">587</span>  }<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>  // ============================================================================<a name="line.589"></a>
+<span class="sourceLineNo">590</span>  //  Table Locking Helpers<a name="line.590"></a>
+<span class="sourceLineNo">591</span>  // ============================================================================<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  /**<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @param proc must not be null<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   */<a name="line.594"></a>
+<span class="sourceLineNo">595</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    switch (proc.getTableOperationType()) {<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      case CREATE:<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      case DELETE:<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      case DISABLE:<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      case ENABLE:<a name="line.600"></a>
+<span class="sourceLineNo">601</span>        return true;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      case EDIT:<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        // we allow concurrent edit on the NS table<a name="line.603"></a>
+<span class="sourceLineNo">604</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      case READ:<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        return false;<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      // region operations are using the shared-lock on the table<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      // and then they will grab an xlock on the region.<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      case REGION_SPLIT:<a name="line.609"></a>
+<span class="sourceLineNo">610</span>      case REGION_MERGE:<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      case REGION_ASSIGN:<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      case REGION_UNASSIGN:<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      case REGION_EDIT:<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      case REGION_GC:<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      case MERGED_REGIONS_GC:<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        return false;<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      default:<a name="line.617"></a>
+<span class="sourceLineNo">618</span>        break;<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    }<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.620"></a>
+<span class="sourceLineNo">621</span>        proc.getTableOperationType());<a name="line.621"></a>
+<span class="sourceLineNo">622</span>  }<a name="line.622"></a>
+<span class="sourceLineNo">623</span><a name="line.623"></a>
+<span class="sourceLineNo">624</span>  /**<a name="line.624"></a>
+<span class="sourceLineNo">625</span>   * Get lock info for a resource of specified type and name and log details<a name="line.625"></a>
+<span class="sourceLineNo">626</span>   */<a name="line.626"></a>
+<span class="sourceLineNo">627</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    if (!LOG.isDebugEnabled()) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>      return;<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>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    if (lockInfo != null) {<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.634"></a>
+<span class="sourceLineNo">635</span>          lockInfo.getSharedLockCount();<a name="line.635"></a>
+<span class="sourceLineNo">636</span><a name="line.636"></a>
+<span class="sourceLineNo">637</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.637"></a>
+<span class="sourceLineNo">638</span>      if (proc != null) {<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      }<a name="line.640"></a>
+<span class="sourceLineNo">641</span>      LOG.debug(msg);<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>  }<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   * Suspend the procedure if the specified table is already locked.<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.647"></a>
+<span class="sourceLineNo">648</span>   * @param procedure the procedure trying to acquire the lock<a name="line.648"></a>
+<span class="sourceLineNo">649</span>   * @param table Table to lock<a name="line.649"></a>
+<span class="sourceLineNo">650</span>   * @return true if the procedure has to wait for the table to be available<a name="line.650"></a>
+<span class="sourceLineNo">651</span>   */<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    schedLock();<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    try {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>      final String namespace = table.getNamespaceAsString();<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      if (!namespaceLock.trySharedLock()) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>        waitProcedure(namespaceLock, procedure);<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.660"></a>
 <span class="sourceLineNo">661</span>        return true;<a name="line.661"></a>
 <span class="sourceLineNo">662</span>      }<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      removeFromRunQueue(tableRunQueue, getTableQueue(table));<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      return false;<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    } finally {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      schedUnlock();<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  }<a name="line.668"></a>
-<span class="sourceLineNo">669</span><a name="line.669"></a>
-<span class="sourceLineNo">670</span>  /**<a name="line.670"></a>
-<span class="sourceLineNo">671</span>   * Wake the procedures waiting for the specified table<a name="line.671"></a>
-<span class="sourceLineNo">672</span>   * @param procedure the procedure releasing the lock<a name="line.672"></a>
-<span class="sourceLineNo">673</span>   * @param table the name of the table that has the exclusive lock<a name="line.673"></a>
-<span class="sourceLineNo">674</span>   */<a name="line.674"></a>
-<span class="sourceLineNo">675</span>  public void wakeTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    schedLock();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    try {<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(table.getNamespaceAsString());<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      int waitingCount = 0;<a name="line.680"></a>
-<span class="sourceLineNo">681</span><a name="line.681"></a>
-<span class="sourceLineNo">682</span>      if (!tableLock.hasParentLock(procedure)) {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>        tableLock.releaseExclusiveLock(procedure);<a name="line.683"></a>
-<span class="sourceLineNo">684</span>        waitingCount += wakeWaitingProcedures(tableLock);<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      }<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      if (namespaceLock.releaseSharedLock()) {<a name="line.686"></a>
-<span class="sourceLineNo">687</span>        waitingCount += wakeWaitingProcedures(namespaceLock);<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      }<a name="line.688"></a>
-<span class="sourceLineNo">689</span>      addToRunQueue(tableRunQueue, getTableQueue(table));<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      wakePollIfNeeded(waitingCount);<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    } finally {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>      schedUnlock();<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><a name="line.695"></a>
-<span class="sourceLineNo">696</span>  /**<a name="line.696"></a>
-<span class="sourceLineNo">697</span>   * Suspend the procedure if the specified table is already locked.<a name="line.697"></a>
-<span class="sourceLineNo">698</span>   * other "read" operations in the table-queue may be executed concurrently,<a name="line.698"></a>
-<span class="sourceLineNo">699</span>   * @param procedure the procedure trying to acquire the lock<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   * @param table Table to lock<a name="line.700"></a>
-<span class="sourceLineNo">701</span>   * @return true if the procedure has to wait for the table to be available<a name="line.701"></a>
-<span class="sourceLineNo">702</span>   */<a name="line.702"></a>
-<span class="sourceLineNo">703</span>  public boolean waitTableSharedLock(final Procedure procedure, final TableName table) {<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    return waitTableQueueSharedLock(procedure, table) == null;<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>  private TableQueue waitTableQueueSharedLock(final Procedure procedure, final TableName table) {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    schedLock();<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    try {

<TRUNCATED>

[08/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/source-repository.html b/hbase-archetypes/hbase-client-project/source-repository.html
index cafdf5f..6f5815e 100644
--- a/hbase-archetypes/hbase-client-project/source-repository.html
+++ b/hbase-archetypes/hbase-client-project/source-repository.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-client-project/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-client-project/team-list.html b/hbase-archetypes/hbase-client-project/team-list.html
index a95265c..a40ec0c 100644
--- a/hbase-archetypes/hbase-client-project/team-list.html
+++ b/hbase-archetypes/hbase-client-project/team-list.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-client archetype">Apache HBase - Exemplar for hbase-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/checkstyle.html b/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
index 5b42e3f..67e3b5e 100644
--- a/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
+++ b/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/dependencies.html b/hbase-archetypes/hbase-shaded-client-project/dependencies.html
index 70f75a8..345e268 100644
--- a/hbase-archetypes/hbase-shaded-client-project/dependencies.html
+++ b/hbase-archetypes/hbase-shaded-client-project/dependencies.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html b/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
index 40a76d5..667e363 100644
--- a/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
+++ b/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/dependency-info.html b/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
index ce1cd44..3f89eaf 100644
--- a/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
+++ b/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/dependency-management.html b/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
index 478f1ed..97a293c 100644
--- a/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
+++ b/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/index.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/index.html b/hbase-archetypes/hbase-shaded-client-project/index.html
index c13647f..3d17aa4 100644
--- a/hbase-archetypes/hbase-shaded-client-project/index.html
+++ b/hbase-archetypes/hbase-shaded-client-project/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/integration.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/integration.html b/hbase-archetypes/hbase-shaded-client-project/integration.html
index 7151cdc..d2ba688 100644
--- a/hbase-archetypes/hbase-shaded-client-project/integration.html
+++ b/hbase-archetypes/hbase-shaded-client-project/integration.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html b/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
index 41a524b..73fe461 100644
--- a/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
+++ b/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/license.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/license.html b/hbase-archetypes/hbase-shaded-client-project/license.html
index cf0d659..2983304 100644
--- a/hbase-archetypes/hbase-shaded-client-project/license.html
+++ b/hbase-archetypes/hbase-shaded-client-project/license.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/mail-lists.html b/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
index 2de433c..ccbca9e 100644
--- a/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
+++ b/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/plugin-management.html b/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
index dd775df..827fced 100644
--- a/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
+++ b/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/plugins.html b/hbase-archetypes/hbase-shaded-client-project/plugins.html
index 647e2a2..8011e61 100644
--- a/hbase-archetypes/hbase-shaded-client-project/plugins.html
+++ b/hbase-archetypes/hbase-shaded-client-project/plugins.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/project-info.html b/hbase-archetypes/hbase-shaded-client-project/project-info.html
index 8368008..5606066 100644
--- a/hbase-archetypes/hbase-shaded-client-project/project-info.html
+++ b/hbase-archetypes/hbase-shaded-client-project/project-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/project-reports.html b/hbase-archetypes/hbase-shaded-client-project/project-reports.html
index 0ae4a9f..1b4bd56 100644
--- a/hbase-archetypes/hbase-shaded-client-project/project-reports.html
+++ b/hbase-archetypes/hbase-shaded-client-project/project-reports.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/project-summary.html b/hbase-archetypes/hbase-shaded-client-project/project-summary.html
index 4074437..6033b08 100644
--- a/hbase-archetypes/hbase-shaded-client-project/project-summary.html
+++ b/hbase-archetypes/hbase-shaded-client-project/project-summary.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/source-repository.html b/hbase-archetypes/hbase-shaded-client-project/source-repository.html
index c1199aa..719d672 100644
--- a/hbase-archetypes/hbase-shaded-client-project/source-repository.html
+++ b/hbase-archetypes/hbase-shaded-client-project/source-repository.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/hbase-shaded-client-project/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/hbase-shaded-client-project/team-list.html b/hbase-archetypes/hbase-shaded-client-project/team-list.html
index 9743fbe..069223f 100644
--- a/hbase-archetypes/hbase-shaded-client-project/team-list.html
+++ b/hbase-archetypes/hbase-shaded-client-project/team-list.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Exemplar for hbase-shaded-client archetype">Apache HBase - Exemplar for hbase-shaded-client archetype</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/index.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/index.html b/hbase-archetypes/index.html
index 8ca32b2..5bb3921 100644
--- a/hbase-archetypes/index.html
+++ b/hbase-archetypes/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/integration.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/integration.html b/hbase-archetypes/integration.html
index e1b2ab1..1ca4b47 100644
--- a/hbase-archetypes/integration.html
+++ b/hbase-archetypes/integration.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/issue-tracking.html b/hbase-archetypes/issue-tracking.html
index 1e60a37..f298b72 100644
--- a/hbase-archetypes/issue-tracking.html
+++ b/hbase-archetypes/issue-tracking.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/license.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/license.html b/hbase-archetypes/license.html
index de311c0..9914f0a 100644
--- a/hbase-archetypes/license.html
+++ b/hbase-archetypes/license.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>
@@ -126,7 +126,210 @@
 <h2><a name="Project_Licenses"></a>Project Licenses</h2><a name="Project_Licenses"></a>
 <div class="section">
 <h3><a name="Apache_License_Version_2.0"></a>Apache License, Version 2.0</h3><a name="Apache_License_Version_2.0"></a>
-<p>Can't read the url [https://www.apache.org/licenses/LICENSE-2.0.txt] : connect timed out</p></div></div>
+<div class="source">
+<pre>
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      &quot;License&quot; shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      &quot;Licensor&quot; shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      &quot;Legal Entity&quot; shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      &quot;control&quot; means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      &quot;You&quot; (or &quot;Your&quot;) shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      &quot;Source&quot; form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      &quot;Object&quot; form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      &quot;Work&quot; shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      &quot;Derivative Works&quot; shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      &quot;Contribution&quot; shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, &quot;submitted&quot;
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as &quot;Not a Contribution.&quot;
+
+      &quot;Contributor&quot; shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a &quot;NOTICE&quot; text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an &quot;AS IS&quot; BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets &quot;[]&quot;
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same &quot;printed page&quot; as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+</pre></div></div></div>
       </div>
     </div>
     <div class="clear">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/mail-lists.html b/hbase-archetypes/mail-lists.html
index 380c6cd..7b624ca 100644
--- a/hbase-archetypes/mail-lists.html
+++ b/hbase-archetypes/mail-lists.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/plugin-management.html b/hbase-archetypes/plugin-management.html
index 4ba9d01..f6f255f 100644
--- a/hbase-archetypes/plugin-management.html
+++ b/hbase-archetypes/plugin-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/plugins.html b/hbase-archetypes/plugins.html
index ff0b064..724329b 100644
--- a/hbase-archetypes/plugins.html
+++ b/hbase-archetypes/plugins.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/project-info.html b/hbase-archetypes/project-info.html
index 8487d16..d1b6cac 100644
--- a/hbase-archetypes/project-info.html
+++ b/hbase-archetypes/project-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/project-summary.html b/hbase-archetypes/project-summary.html
index 05a4ab4..68725a8 100644
--- a/hbase-archetypes/project-summary.html
+++ b/hbase-archetypes/project-summary.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/source-repository.html b/hbase-archetypes/source-repository.html
index 6346675..f87d54d 100644
--- a/hbase-archetypes/source-repository.html
+++ b/hbase-archetypes/source-repository.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-archetypes/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-archetypes/team-list.html b/hbase-archetypes/team-list.html
index 1c8ad8e..3d711e0 100644
--- a/hbase-archetypes/team-list.html
+++ b/hbase-archetypes/team-list.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Archetypes">Apache HBase - Archetypes</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-spark/checkstyle.html b/hbase-spark/checkstyle.html
index 5476340..aa186e0 100644
--- a/hbase-spark/checkstyle.html
+++ b/hbase-spark/checkstyle.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-spark/dependencies.html b/hbase-spark/dependencies.html
index 3bf4222..12470b5 100644
--- a/hbase-spark/dependencies.html
+++ b/hbase-spark/dependencies.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-spark/dependency-convergence.html b/hbase-spark/dependency-convergence.html
index 81b135a..ba33ad5 100644
--- a/hbase-spark/dependency-convergence.html
+++ b/hbase-spark/dependency-convergence.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-spark/dependency-info.html b/hbase-spark/dependency-info.html
index ceba145..61a865b 100644
--- a/hbase-spark/dependency-info.html
+++ b/hbase-spark/dependency-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-spark/dependency-management.html b/hbase-spark/dependency-management.html
index 69e6ba6..d435aad 100644
--- a/hbase-spark/dependency-management.html
+++ b/hbase-spark/dependency-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/index.html
----------------------------------------------------------------------
diff --git a/hbase-spark/index.html b/hbase-spark/index.html
index 82d972c..d7a3bc5 100644
--- a/hbase-spark/index.html
+++ b/hbase-spark/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/integration.html
----------------------------------------------------------------------
diff --git a/hbase-spark/integration.html b/hbase-spark/integration.html
index 714140e..8dfb6ed 100644
--- a/hbase-spark/integration.html
+++ b/hbase-spark/integration.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-spark/issue-tracking.html b/hbase-spark/issue-tracking.html
index 67e3fe8..cd86b6e 100644
--- a/hbase-spark/issue-tracking.html
+++ b/hbase-spark/issue-tracking.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/license.html
----------------------------------------------------------------------
diff --git a/hbase-spark/license.html b/hbase-spark/license.html
index 3b1bc02..120d38b 100644
--- a/hbase-spark/license.html
+++ b/hbase-spark/license.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-spark/mail-lists.html b/hbase-spark/mail-lists.html
index c8e769d..175d79b 100644
--- a/hbase-spark/mail-lists.html
+++ b/hbase-spark/mail-lists.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-spark/plugin-management.html b/hbase-spark/plugin-management.html
index a2f4faa..5800098 100644
--- a/hbase-spark/plugin-management.html
+++ b/hbase-spark/plugin-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-spark/plugins.html b/hbase-spark/plugins.html
index 16e08c7..8b1d7fa 100644
--- a/hbase-spark/plugins.html
+++ b/hbase-spark/plugins.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-spark/project-info.html b/hbase-spark/project-info.html
index 287c327..8e0bd06 100644
--- a/hbase-spark/project-info.html
+++ b/hbase-spark/project-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-spark/project-reports.html b/hbase-spark/project-reports.html
index 16c9cc09..8ef568c 100644
--- a/hbase-spark/project-reports.html
+++ b/hbase-spark/project-reports.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/hbase-spark/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-spark/project-summary.html b/hbase-spark/project-summary.html
index 42a9581..8e518dc 100644
--- a/hbase-spark/project-summary.html
+++ b/hbase-spark/project-summary.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-07-31 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2017-08-01 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20170731" />
+    <meta name="Date-Revision-yyyymmdd" content="20170801" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2017-07-31</span>
+        <span id="publishDate">Last Published: 2017-08-01</span>
                   &nbsp;| <span id="projectVersion">Version: 3.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>


[40/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html b/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
index e14ce29..3e41813 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
@@ -2678,14 +2678,6 @@
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterMetaBootstrap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#previouslyFailedMetaRSs">previouslyFailedMetaRSs</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterMetaBootstrap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#previouslyFailedServers">previouslyFailedServers</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">SnapshotOfRegionAssignmentFromMeta.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html#primaryRSToRegionMap">primaryRSToRegionMap</a></span></code>&nbsp;</td>
 </tr>
@@ -2832,7 +2824,7 @@
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getDrainingServersList--">getDrainingServersList</a></span>()</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getFailedServersFromLogFolders--">getFailedServersFromLogFolders</a></span>()</code>
 <div class="block">Inspect the log directory to find dead servers which need recovery work</div>
 </td>
@@ -2855,36 +2847,30 @@
                                   <a href="http://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html?is-external=true" title="class or interface in java.util.function">Predicate</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerLoad.html" title="class in org.apache.hadoop.hbase">ServerLoad</a>&gt;&nbsp;idleServerPredicator)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterMetaBootstrap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#getPreviouselyFailedMetaServersFromZK--">getPreviouselyFailedMetaServersFromZK</a></span>()</code>
-<div class="block">This function returns a set of region server names under hbase:meta recovering region ZK node</div>
-</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">SnapshotOfRegionAssignmentFromMeta.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html#getPrimaryToRegionInfoMap--">getPrimaryToRegionInfoMap</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">SnapshotOfRegionAssignmentFromMeta.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html#getRegionServerToRegionMap--">getRegionServerToRegionMap</a></span>()</code>
 <div class="block">Get regionserver to region map</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>,<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">SnapshotOfRegionAssignmentFromMeta.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html#getRegionToRegionServerMap--">getRegionToRegionServerMap</a></span>()</code>
 <div class="block">Get region to region server map</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getRequeuedDeadServers--">getRequeuedDeadServers</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">SnapshotOfRegionAssignmentFromMeta.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html#getSecondaryToRegionInfoMap--">getSecondaryToRegionInfoMap</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>,<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">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableRegionForRow-org.apache.hadoop.hbase.TableName-byte:A-">getTableRegionForRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                     byte[]&nbsp;rowKey)</code>
@@ -2892,28 +2878,28 @@
  the given row.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">SnapshotOfRegionAssignmentFromMeta.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html#getTertiaryToRegionInfoMap--">getTertiaryToRegionInfoMap</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listDrainingRegionServers--">listDrainingRegionServers</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterServices.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html#listDrainingRegionServers--">listDrainingRegionServers</a></span>()</code>
 <div class="block">List region servers marked as draining to not get additional regions assigned to them.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#retainAssignment-java.util.Map-java.util.List-">retainAssignment</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;regions,
                 <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code>
 <div class="block">Assign regions to the previously hosting region server</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#roundRobinAssignment-java.util.List-java.util.List-">roundRobinAssignment</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&nbsp;regions,
                     <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code>
@@ -3296,10 +3282,6 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterMetaBootstrap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#splitMetaLogBeforeAssignment-org.apache.hadoop.hbase.ServerName-">splitMetaLogBeforeAssignment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;currentMetaServer)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#updateLastFlushedSequenceIds-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerLoad-">updateLastFlushedSequenceIds</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn,
                             <a href="../../../../../org/apache/hadoop/hbase/ServerLoad.html" title="class in org.apache.hadoop.hbase">ServerLoad</a>&nbsp;hsl)</code>
 <div class="block">Updates last flushed sequence Ids for the regions on server sn</div>
@@ -3315,69 +3297,62 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterMetaBootstrap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#assignMeta-java.util.Set-int-">assignMeta</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;previouslyFailedMetaRSs,
-          int&nbsp;replicaId)</code>
-<div class="block">Check <code>hbase:meta</code> is assigned.</div>
-</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/master/RegionPlan.html" title="class in org.apache.hadoop.hbase.master">RegionPlan</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#balanceCluster-java.util.Map-">balanceCluster</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&gt;&nbsp;clusterState)</code>
 <div class="block">Perform the major balance operation</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/master/RegionPlan.html" title="class in org.apache.hadoop.hbase.master">RegionPlan</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#balanceCluster-org.apache.hadoop.hbase.TableName-java.util.Map-">balanceCluster</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
               <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&gt;&nbsp;clusterState)</code>
 <div class="block">Perform the major balance operation</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#createDestinationServersList-java.util.List-">createDestinationServersList</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serversToExclude)</code>
 <div class="block">Creates a list of possible destinations for a region.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getLogDirs-java.util.Set-">getLogDirs</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getOnlineServersListWithPredicator-java.util.List-java.util.function.Predicate-">getOnlineServersListWithPredicator</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;keys,
                                   <a href="http://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html?is-external=true" title="class or interface in java.util.function">Predicate</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerLoad.html" title="class in org.apache.hadoop.hbase">ServerLoad</a>&gt;&nbsp;idleServerPredicator)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">RackManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RackManager.html#getRack-java.util.List-">getRack</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code>
 <div class="block">Same as <a href="../../../../../org/apache/hadoop/hbase/master/RackManager.html#getRack-org.apache.hadoop.hbase.ServerName-"><code>RackManager.getRack(ServerName)</code></a> except that a list is passed</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitLogManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.html#handleDeadWorkers-java.util.Set-">handleDeadWorkers</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignmentVerificationReport.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/AssignmentVerificationReport.html#printHServerAddressSet-java.util.Set-">printHServerAddressSet</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverSet)</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">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#randomAssignment-org.apache.hadoop.hbase.HRegionInfo-java.util.List-">randomAssignment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;regionInfo,
                 <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code>
 <div class="block">Get a random region server from the list</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#removeDeadNotExpiredServers-java.util.List-">removeDeadNotExpiredServers</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code>
 <div class="block">Loop through the deadNotExpired server list and remove them from the
  servers.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitLogManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.html#removeRecoveringRegions-java.util.Set-java.lang.Boolean-">removeRecoveringRegions</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames,
                        <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;isMetaRecovery)</code>
@@ -3385,46 +3360,46 @@
  region server hosting the region can allow reads to the recovered region</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitLogManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.html#removeStaleRecoveringRegions-java.util.Set-">removeStaleRecoveringRegions</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;failedServers)</code>
 <div class="block">It removes stale recovering regions under /hbase/recovering-regions/[encoded region name]
  during master initialization phase.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#removeStaleRecoveringRegionsFromZK-java.util.Set-">removeStaleRecoveringRegionsFromZK</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;failedServers)</code>
 <div class="block">Wrapper function on <a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.html#removeStaleRecoveringRegions-java.util.Set-"><code>SplitLogManager.removeStaleRecoveringRegions(Set)</code></a></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#retainAssignment-java.util.Map-java.util.List-">retainAssignment</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;regions,
                 <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code>
 <div class="block">Assign regions to the previously hosting region server</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#retainAssignment-java.util.Map-java.util.List-">retainAssignment</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;regions,
                 <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code>
 <div class="block">Assign regions to the previously hosting region server</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#roundRobinAssignment-java.util.List-java.util.List-">roundRobinAssignment</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;&nbsp;regions,
                     <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code>
 <div class="block">Perform a Round Robin assignment of regions.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#sendFavoredNodes-org.apache.hadoop.hbase.ServerName-java.util.Map-">sendFavoredNodes</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server,
                 <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbsp;favoredNodes)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionOpeningState.html" title="enum in org.apache.hadoop.hbase.regionserver">RegionOpeningState</a></code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#sendRegionOpen-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.HRegionInfo-java.util.List-">sendRegionOpen</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server,
               <a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;region,
@@ -3432,31 +3407,31 @@
 <div class="block">Sends an OPEN RPC to the specified server to open the specified region.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionOpeningState.html" title="enum in org.apache.hadoop.hbase.regionserver">RegionOpeningState</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#sendRegionOpen-org.apache.hadoop.hbase.ServerName-java.util.List-">sendRegionOpen</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server,
               <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&gt;&nbsp;regionOpenInfos)</code>
 <div class="block">Sends an OPEN RPC to the specified server to open the specified region.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#setClusterLoad-java.util.Map-">setClusterLoad</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">H
 RegionInfo</a>&gt;&gt;&gt;&nbsp;ClusterLoad)</code>
 <div class="block">Pass RegionStates and allow balancer to set the current cluster load.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitLog-java.util.Set-">splitLog</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitLog-java.util.Set-org.apache.hadoop.fs.PathFilter-">splitLog</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames,
         org.apache.hadoop.fs.PathFilter&nbsp;filter)</code>
 <div class="block">This method is the base split method that splits WAL files matching a filter.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitLogManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.html#splitLogDistributed-java.util.Set-java.util.List-org.apache.hadoop.fs.PathFilter-">splitLogDistributed</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames,
                    <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;logDirs,
@@ -3466,7 +3441,7 @@
  server.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitMetaLog-java.util.Set-">splitMetaLog</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames)</code>
 <div class="block">Specialized method to handle the splitting for meta WAL</div>
@@ -4523,18 +4498,22 @@
 </tr>
 <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">ServerCrashException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashException.html#serverName">serverName</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#failedMetaServer">failedMetaServer</a></span></code>&nbsp;</td>
 </tr>
 <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">RSProcedureDispatcher.AbstractRSRemoteCall.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.AbstractRSRemoteCall.html#serverName">serverName</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">ServerCrashException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashException.html#serverName">serverName</a></span></code>&nbsp;</td>
 </tr>
 <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">RSProcedureDispatcher.CompatRemoteProcedureResolver.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.CompatRemoteProcedureResolver.html#serverName">serverName</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">RSProcedureDispatcher.AbstractRSRemoteCall.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.AbstractRSRemoteCall.html#serverName">serverName</a></span></code>&nbsp;</td>
 </tr>
 <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">RSProcedureDispatcher.CompatRemoteProcedureResolver.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.CompatRemoteProcedureResolver.html#serverName">serverName</a></span></code>&nbsp;</td>
+</tr>
+<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">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#serverName">serverName</a></span></code>
 <div class="block">Name of the crashed server to process.</div>
 </td>
@@ -4697,6 +4676,20 @@
                     <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOpenOperation.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher.RegionOpenOperation</a>&gt;&nbsp;operations)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#RecoverMetaProcedure-org.apache.hadoop.hbase.ServerName-boolean-">RecoverMetaProcedure</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;failedMetaServer,
+                    boolean&nbsp;shouldSplitLog)</code>
+<div class="block">Call this constructor to queue up a <a href="../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a> in response to meta
+ carrying server crash</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#RecoverMetaProcedure-org.apache.hadoop.hbase.ServerName-boolean-org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch-">RecoverMetaProcedure</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;failedMetaServer,
+                    boolean&nbsp;shouldSplitLog,
+                    <a href="../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a>&nbsp;latch)</code>
+<div class="block">Constructor with latch, for blocking/ sync usage</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionCloseOperation.html#RegionCloseOperation-org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.ServerName-">RegionCloseOperation</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteProcedure.html" title="interface in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteProcedure</a>&nbsp;remoteProcedure,
                     <a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;regionInfo,
                     <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;destinationServer)</code>&nbsp;</td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html b/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
index e0fb2dd..b32edd4 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
@@ -7198,17 +7198,21 @@ service.</div>
 </tr>
 <tr 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"><span class="typeNameLabel">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#getTableName--">getTableName</a></span>()</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#getTableName--">getTableName</a></span>()</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <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"><span class="typeNameLabel">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#getTableName--">getTableName</a></span>()</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#getTableName--">getTableName</a></span>()</code>&nbsp;</td>
 </tr>
 <tr 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"><span class="typeNameLabel">DeleteColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.html#getTableName--">getTableName</a></span>()</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#getTableName--">getTableName</a></span>()</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<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"><span class="typeNameLabel">DeleteColumnFamilyProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.html#getTableName--">getTableName</a></span>()</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></code></td>
 <td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#getTableName-org.apache.hadoop.hbase.procedure2.Procedure-">getTableName</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html b/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
index 623845f..29d3ebe 100644
--- a/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
@@ -88,12 +88,12 @@
 </ul>
 <h2 title="Annotation Type Hierarchy">Annotation Type Hierarchy</h2>
 <ul>
-<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Unstable.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceStability.Unstable</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Stable.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceStability.Stable</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Evolving.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceStability.Evolving</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.LimitedPrivate.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceAudience.LimitedPrivate</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Public.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceAudience.Public</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceAudience.Private</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Public.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceAudience.Public</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Evolving.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceStability.Evolving</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Stable.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceStability.Stable</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Unstable.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="typeNameLink">InterfaceStability.Unstable</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 </ul>
 </div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/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 ac6d904..88d4063 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -538,25 +538,25 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/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/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/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/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/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/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/HBaseAdmin.ReplicationState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">HBaseAdmin.ReplicationState</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/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/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/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/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/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/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/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotType</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/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 73e1e7d..f709ea1 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="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/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/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.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/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">HFileBlock.Writer.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">CacheConfig.ExternalBlockCaches</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/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 6db317d..cdb6af5 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -341,9 +341,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/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/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/110df817/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 809d1a5..453a2bc 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -284,10 +284,10 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/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/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/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/110df817/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
index 9f117be..2e236a7 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.231">HMaster.InitializationMonitor</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.232">HMaster.InitializationMonitor</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" title="class in org.apache.hadoop.hbase.util">HasThread</a></pre>
 <div class="block">Protection against zombie master. Started once Master accepts active responsibility and
  starts taking over responsibilities. Allows a finite time window before giving up ownership.</div>
@@ -250,7 +250,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>TIMEOUT_KEY</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.233">TIMEOUT_KEY</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.234">TIMEOUT_KEY</a></pre>
 <div class="block">The amount of time in milliseconds to sleep before checking initialization status.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -264,7 +264,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>TIMEOUT_DEFAULT</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.234">TIMEOUT_DEFAULT</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.235">TIMEOUT_DEFAULT</a></pre>
 </li>
 </ul>
 <a name="HALT_KEY">
@@ -273,7 +273,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>HALT_KEY</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.240">HALT_KEY</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.241">HALT_KEY</a></pre>
 <div class="block">When timeout expired and initialization has not complete, call <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/System.html?is-external=true#exit-int-" title="class or interface in java.lang"><code>System.exit(int)</code></a> when
  true, do nothing otherwise.</div>
 <dl>
@@ -288,7 +288,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>HALT_DEFAULT</h4>
-<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.241">HALT_DEFAULT</a></pre>
+<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.242">HALT_DEFAULT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.InitializationMonitor.HALT_DEFAULT">Constant Field Values</a></dd>
@@ -301,7 +301,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>master</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.243">master</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.244">master</a></pre>
 </li>
 </ul>
 <a name="timeout">
@@ -310,7 +310,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>timeout</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.244">timeout</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.245">timeout</a></pre>
 </li>
 </ul>
 <a name="haltOnTimeout">
@@ -319,7 +319,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>haltOnTimeout</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.245">haltOnTimeout</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.246">haltOnTimeout</a></pre>
 </li>
 </ul>
 </li>
@@ -336,7 +336,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>InitializationMonitor</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.248">InitializationMonitor</a>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.249">InitializationMonitor</a>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
 <div class="block">Creates a Thread that monitors the <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInitialized--"><code>HMaster.isInitialized()</code></a> state.</div>
 </li>
 </ul>
@@ -354,7 +354,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.257">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.258">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>


[21/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html
index 38cee64..d900251 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html
@@ -220,1065 +220,1075 @@
 <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>    final Procedure pollResult = rq.peek();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      removeFromRunQueue(fairq, rq);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      return null;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>    rq.poll();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    if (rq.isEmpty() || xlockReq) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      removeFromRunQueue(fairq, rq);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      // if the rq is in the fairq because of runnable child<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      // check if the next procedure is still a child.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      Procedure nextProc = rq.peek();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        removeFromRunQueue(fairq, rq);<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>    return pollResult;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">215</span>    if (pollResult == null) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      return null;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    final boolean xlockReq = rq.requireExclusiveLock(pollResult);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    if (xlockReq &amp;&amp; rq.getLockStatus().isLocked() &amp;&amp; !rq.getLockStatus().hasLockAccess(pollResult)) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      // someone is already holding the lock (e.g. shared lock). avoid a yield<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      removeFromRunQueue(fairq, rq);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      return null;<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>    rq.poll();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    if (rq.isEmpty() || xlockReq) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      removeFromRunQueue(fairq, rq);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    } else if (rq.getLockStatus().hasParentLock(pollResult)) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      // if the rq is in the fairq because of runnable child<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      // check if the next procedure is still a child.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      // if not, remove the rq from the fairq and go back to the xlock state<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      Procedure nextProc = rq.peek();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      if (nextProc != null &amp;&amp; !Procedure.haveSameParent(nextProc, pollResult)) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        removeFromRunQueue(fairq, rq);<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      String resourceName, LockAndQueue queue) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    LockInfo info = new LockInfo();<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    info.setResourceType(resourceType);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    info.setResourceName(resourceName);<a name="line.243"></a>
+<span class="sourceLineNo">238</span>    return pollResult;<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 LockInfo createLockInfo(LockInfo.ResourceType resourceType,<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      String resourceName, LockAndQueue queue) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    LockInfo info = new LockInfo();<a name="line.243"></a>
 <span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    if (queue.hasExclusiveLock()) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.246"></a>
+<span class="sourceLineNo">245</span>    info.setResourceType(resourceType);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    info.setResourceName(resourceName);<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      info.setSharedLockCount(queue.getSharedLockCount());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        continue;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.263"></a>
+<span class="sourceLineNo">248</span>    if (queue.hasExclusiveLock()) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      info.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>      Procedure&lt;?&gt; exclusiveLockOwnerProcedure = queue.getExclusiveLockOwnerProcedure();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      ProcedureInfo exclusiveLockOwnerProcedureInfo =<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          ProcedureUtil.convertToProcedureInfo(exclusiveLockOwnerProcedure);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      info.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureInfo);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    } else if (queue.getSharedLockCount() &gt; 0) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      info.setLockType(LockInfo.LockType.SHARED);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      info.setSharedLockCount(queue.getSharedLockCount());<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>    for (Procedure&lt;?&gt; procedure : queue) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      if (!(procedure instanceof LockProcedure)) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        continue;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
 <span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>      switch (lockProcedure.getType()) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      case EXCLUSIVE:<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        break;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      case SHARED:<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.270"></a>
+<span class="sourceLineNo">265</span>      LockProcedure lockProcedure = (LockProcedure)procedure;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      LockInfo.WaitingProcedure waitingProcedure = new LockInfo.WaitingProcedure();<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>      switch (lockProcedure.getType()) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      case EXCLUSIVE:<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        waitingProcedure.setLockType(LockInfo.LockType.EXCLUSIVE);<a name="line.270"></a>
 <span class="sourceLineNo">271</span>        break;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.275"></a>
+<span class="sourceLineNo">272</span>      case SHARED:<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        waitingProcedure.setLockType(LockInfo.LockType.SHARED);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        break;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
 <span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">277</span>      ProcedureInfo procedureInfo = ProcedureUtil.convertToProcedureInfo(lockProcedure);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      waitingProcedure.setProcedure(procedureInfo);<a name="line.278"></a>
 <span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return info;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">280</span>      info.addWaitingProcedure(waitingProcedure);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
 <span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Override<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    schedLock();<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.288"></a>
+<span class="sourceLineNo">283</span>    return info;<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>  @Override<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  public List&lt;LockInfo&gt; listLocks() {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    schedLock();<a name="line.288"></a>
 <span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          .entrySet()) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        String serverName = entry.getKey().getServerName();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        LockAndQueue queue = entry.getValue();<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>        if (queue.isLocked()) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              serverName, queue);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          lockInfos.add(lockInfo);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          .entrySet()) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        String namespaceName = entry.getKey();<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        LockAndQueue queue = entry.getValue();<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>        if (queue.isLocked()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              namespaceName, queue);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>          lockInfos.add(lockInfo);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        }<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.314"></a>
-<span class="sourceLineNo">315</span>          .entrySet()) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        String tableName = entry.getKey().getNameAsString();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        LockAndQueue queue = entry.getValue();<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>        if (queue.isLocked()) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.320"></a>
-<span class="sourceLineNo">321</span>              tableName, queue);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          lockInfos.add(lockInfo);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        String regionName = entry.getKey();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        LockAndQueue queue = entry.getValue();<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>        if (queue.isLocked()) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              regionName, queue);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          lockInfos.add(lockInfo);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      }<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>      return lockInfos;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    } finally {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      schedUnlock();<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>  @Override<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    LockAndQueue queue = null;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    schedLock();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    try {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      switch (resourceType) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        case SERVER:<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.350"></a>
-<span class="sourceLineNo">351</span>          break;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        case NAMESPACE:<a name="line.352"></a>
-<span class="sourceLineNo">353</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.353"></a>
+<span class="sourceLineNo">290</span>    try {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      List&lt;LockInfo&gt; lockInfos = new ArrayList&lt;&gt;();<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>      for (Entry&lt;ServerName, LockAndQueue&gt; entry : locking.serverLocks<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          .entrySet()) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        String serverName = entry.getKey().getServerName();<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        LockAndQueue queue = entry.getValue();<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>        if (queue.isLocked()) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.SERVER,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              serverName, queue);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          lockInfos.add(lockInfo);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.namespaceLocks<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          .entrySet()) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        String namespaceName = entry.getKey();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        LockAndQueue queue = entry.getValue();<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>        if (queue.isLocked()) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.NAMESPACE,<a name="line.311"></a>
+<span class="sourceLineNo">312</span>              namespaceName, queue);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>          lockInfos.add(lockInfo);<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>      for (Entry&lt;TableName, LockAndQueue&gt; entry : locking.tableLocks<a name="line.317"></a>
+<span class="sourceLineNo">318</span>          .entrySet()) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        String tableName = entry.getKey().getNameAsString();<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        LockAndQueue queue = entry.getValue();<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>        if (queue.isLocked()) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.TABLE,<a name="line.323"></a>
+<span class="sourceLineNo">324</span>              tableName, queue);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>          lockInfos.add(lockInfo);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>      for (Entry&lt;String, LockAndQueue&gt; entry : locking.regionLocks.entrySet()) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        String regionName = entry.getKey();<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        LockAndQueue queue = entry.getValue();<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>        if (queue.isLocked()) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          LockInfo lockInfo = createLockInfo(LockInfo.ResourceType.REGION,<a name="line.334"></a>
+<span class="sourceLineNo">335</span>              regionName, queue);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          lockInfos.add(lockInfo);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return lockInfos;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    } finally {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      schedUnlock();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public LockInfo getLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    LockAndQueue queue = null;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    schedLock();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    try {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      switch (resourceType) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        case SERVER:<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          queue = locking.serverLocks.get(ServerName.valueOf(resourceName));<a name="line.353"></a>
 <span class="sourceLineNo">354</span>          break;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        case TABLE:<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.356"></a>
+<span class="sourceLineNo">355</span>        case NAMESPACE:<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          queue = locking.namespaceLocks.get(resourceName);<a name="line.356"></a>
 <span class="sourceLineNo">357</span>          break;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        case REGION:<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          queue = locking.regionLocks.get(resourceName);<a name="line.359"></a>
+<span class="sourceLineNo">358</span>        case TABLE:<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          queue = locking.tableLocks.get(TableName.valueOf(resourceName));<a name="line.359"></a>
 <span class="sourceLineNo">360</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    } finally {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      schedUnlock();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public void clear() {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    schedLock();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    try {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      clearQueue();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      locking.clear();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    } finally {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      schedUnlock();<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>  protected void clearQueue() {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    // Remove Servers<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      serverBuckets[i] = null;<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>    // Remove Tables<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    tableMap = null;<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  }<a name="line.392"></a>
+<span class="sourceLineNo">361</span>        case REGION:<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          queue = locking.regionLocks.get(resourceName);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          break;<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>      return queue != null ? createLockInfo(resourceType, resourceName, queue) : null;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    } finally {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      schedUnlock();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  @Override<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  public void clear() {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    schedLock();<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    try {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      clearQueue();<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      locking.clear();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    } finally {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      schedUnlock();<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><a name="line.382"></a>
+<span class="sourceLineNo">383</span>  protected void clearQueue() {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // Remove Servers<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      clear(serverBuckets[i], serverRunQueue, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      serverBuckets[i] = null;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>    // Remove Tables<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    clear(tableMap, tableRunQueue, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    tableMap = null;<a name="line.392"></a>
 <span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    while (treeMap != null) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Override<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  protected int queueSize() {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    int count = 0;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // Server queues<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      while (serverIter.hasNext()) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        count += serverIter.next().size();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>    // Table queues<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    while (tableIter.hasNext()) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      count += tableIter.next().size();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    return count;<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 completionCleanup(final Procedure proc) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    if (proc instanceof TableProcedureInterface) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      boolean tableDeleted;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (proc.hasException()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          // create failed because the table already exist<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        } else {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          // the operation failed because the table does not exist<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      } else {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        // the table was deleted<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if (tableDeleted) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        return;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    } else {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      return;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      fairq.add(queue);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      fairq.remove(queue);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>  // ============================================================================<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  //  Table Queue Lookup Helpers<a name="line.466"></a>
-<span class="sourceLineNo">467</span>  // ============================================================================<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    if (node != null) return node;<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    return node;<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private void removeTableQueue(TableName tableName) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    locking.removeTableLock(tableName);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  }<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    return proc instanceof TableProcedureInterface;<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>  private static TableName getTableName(Procedure proc) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  }<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>  //  Server Queue Lookup Helpers<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  // ============================================================================<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    if (node != null) return node;<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    return node;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  }<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    return Math.abs(hashCode) % buckets.length;<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>  private static boolean isServerProcedure(Procedure proc) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  // ============================================================================<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  //  Table and Server Queue Implementation<a name="line.518"></a>
-<span class="sourceLineNo">519</span>  // ============================================================================<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    @Override<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      return node.compareKey((ServerName)key);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      super(serverName, serverLock);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>    @Override<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      switch (spi.getServerOperationType()) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        case CRASH_HANDLER:<a name="line.536"></a>
-<span class="sourceLineNo">537</span>          return true;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        default:<a name="line.538"></a>
-<span class="sourceLineNo">539</span>          break;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      }<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    @Override<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    public int compareKey(TableQueue node, Object key) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      return node.compareKey((TableName)key);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    }<a name="line.549"></a>
-<span class="sourceLineNo">550</span>  }<a name="line.550"></a>
-<span class="sourceLineNo">551</span><a name="line.551"></a>
-<span class="sourceLineNo">552</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    private final LockStatus namespaceLockStatus;<a name="line.553"></a>
+<span class="sourceLineNo">394</span>    assert size() == 0 : "expected queue size to be 0, got " + size();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private &lt;T extends Comparable&lt;T&gt;, TNode extends Queue&lt;T&gt;&gt; void clear(TNode treeMap,<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      final FairQueue&lt;T&gt; fairq, final AvlKeyComparator&lt;TNode&gt; comparator) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    while (treeMap != null) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      Queue&lt;T&gt; node = AvlTree.getFirst(treeMap);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      treeMap = AvlTree.remove(treeMap, node.getKey(), comparator);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      if (fairq != null) removeFromRunQueue(fairq, node);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  @Override<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  protected int queueSize() {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    int count = 0;<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>    // Server queues<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    final AvlTreeIterator&lt;ServerQueue&gt; serverIter = new AvlTreeIterator&lt;&gt;();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    for (int i = 0; i &lt; serverBuckets.length; ++i) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      serverIter.seekFirst(serverBuckets[i]);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      while (serverIter.hasNext()) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        count += serverIter.next().size();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>    // Table queues<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    final AvlTreeIterator&lt;TableQueue&gt; tableIter = new AvlTreeIterator&lt;&gt;(tableMap);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    while (tableIter.hasNext()) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      count += tableIter.next().size();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    return count;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  @Override<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  public void completionCleanup(final Procedure proc) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    if (proc instanceof TableProcedureInterface) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      TableProcedureInterface iProcTable = (TableProcedureInterface)proc;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      boolean tableDeleted;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      if (proc.hasException()) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        Exception procEx = proc.getException().unwrapRemoteException();<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        if (iProcTable.getTableOperationType() == TableOperationType.CREATE) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>          // create failed because the table already exist<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          tableDeleted = !(procEx instanceof TableExistsException);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        } else {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          // the operation failed because the table does not exist<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          tableDeleted = (procEx instanceof TableNotFoundException);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      } else {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        // the table was deleted<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        tableDeleted = (iProcTable.getTableOperationType() == TableOperationType.DELETE);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      }<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      if (tableDeleted) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        markTableAsDeleted(iProcTable.getTableName(), proc);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        return;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      }<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } else {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      // No cleanup for ServerProcedureInterface types, yet.<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      return;<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><a name="line.454"></a>
+<span class="sourceLineNo">455</span>  private static &lt;T extends Comparable&lt;T&gt;&gt; void addToRunQueue(FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    if (!AvlIterableList.isLinked(queue) &amp;&amp; !queue.isEmpty()) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      fairq.add(queue);<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>  private static &lt;T extends Comparable&lt;T&gt;&gt; void removeFromRunQueue(<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      FairQueue&lt;T&gt; fairq, Queue&lt;T&gt; queue) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    if (AvlIterableList.isLinked(queue)) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      fairq.remove(queue);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  }<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>  // ============================================================================<a name="line.468"></a>
+<span class="sourceLineNo">469</span>  //  Table Queue Lookup Helpers<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  // ============================================================================<a name="line.470"></a>
+<span class="sourceLineNo">471</span>  private TableQueue getTableQueue(TableName tableName) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    TableQueue node = AvlTree.get(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    if (node != null) return node;<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>    node = new TableQueue(tableName, tablePriorities.getPriority(tableName),<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        locking.getTableLock(tableName), locking.getNamespaceLock(tableName.getNamespaceAsString()));<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    tableMap = AvlTree.insert(tableMap, node);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    return node;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  }<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>  private void removeTableQueue(TableName tableName) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    tableMap = AvlTree.remove(tableMap, tableName, TABLE_QUEUE_KEY_COMPARATOR);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    locking.removeTableLock(tableName);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span><a name="line.486"></a>
+<span class="sourceLineNo">487</span>  private static boolean isTableProcedure(Procedure proc) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    return proc instanceof TableProcedureInterface;<a name="line.488"></a>
+<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>  private static TableName getTableName(Procedure proc) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    return ((TableProcedureInterface)proc).getTableName();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  }<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>  // ============================================================================<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  //  Server Queue Lookup Helpers<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  // ============================================================================<a name="line.497"></a>
+<span class="sourceLineNo">498</span>  private ServerQueue getServerQueue(ServerName serverName) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    final int index = getBucketIndex(serverBuckets, serverName.hashCode());<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    ServerQueue node = AvlTree.get(serverBuckets[index], serverName, SERVER_QUEUE_KEY_COMPARATOR);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    if (node != null) return node;<a name="line.501"></a>
+<span class="sourceLineNo">502</span><a name="line.502"></a>
+<span class="sourceLineNo">503</span>    node = new ServerQueue(serverName, locking.getServerLock(serverName));<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    serverBuckets[index] = AvlTree.insert(serverBuckets[index], node);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    return node;<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>  private static int getBucketIndex(Object[] buckets, int hashCode) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return Math.abs(hashCode) % buckets.length;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>  private static boolean isServerProcedure(Procedure proc) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    return proc instanceof ServerProcedureInterface;<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>  private static ServerName getServerName(Procedure proc) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    return ((ServerProcedureInterface)proc).getServerName();<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
+<span class="sourceLineNo">519</span><a name="line.519"></a>
+<span class="sourceLineNo">520</span>  // ============================================================================<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  //  Table and Server Queue Implementation<a name="line.521"></a>
+<span class="sourceLineNo">522</span>  // ============================================================================<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  private static class ServerQueueKeyComparator implements AvlKeyComparator&lt;ServerQueue&gt; {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    @Override<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    public int compareKey(ServerQueue node, Object key) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      return node.compareKey((ServerName)key);<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>  public static class ServerQueue extends Queue&lt;ServerName&gt; {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    public ServerQueue(ServerName serverName, LockStatus serverLock) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      super(serverName, serverLock);<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>    @Override<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      ServerProcedureInterface spi = (ServerProcedureInterface)proc;<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      switch (spi.getServerOperationType()) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        case CRASH_HANDLER:<a name="line.539"></a>
+<span class="sourceLineNo">540</span>          return true;<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        default:<a name="line.541"></a>
+<span class="sourceLineNo">542</span>          break;<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      throw new UnsupportedOperationException("unexpected type " + spi.getServerOperationType());<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><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  private static class TableQueueKeyComparator implements AvlKeyComparator&lt;TableQueue&gt; {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    @Override<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    public int compareKey(TableQueue node, Object key) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      return node.compareKey((TableName)key);<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><a name="line.554"></a>
-<span class="sourceLineNo">555</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        LockStatus namespaceLockStatus) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      super(tableName, priority, tableLock);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      this.namespaceLockStatus = namespaceLockStatus;<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>    @Override<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    public boolean isAvailable() {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      // we can't execute operation on this table<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>        return false;<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>      if (getLockStatus().hasExclusiveLock()) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        // if we have an exclusive lock already taken<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        // only child of the lock owner can be executed<a name="line.571"></a>
-<span class="sourceLineNo">572</span>        final Procedure nextProc = peek();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>      // no xlock<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return true;<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>    @Override<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
-<span class="sourceLineNo">585</span><a name="line.585"></a>
-<span class="sourceLineNo">586</span>  // ============================================================================<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  //  Table Locking Helpers<a name="line.587"></a>
-<span class="sourceLineNo">588</span>  // ============================================================================<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    switch (proc.getTableOperationType()) {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      case CREATE:<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      case DELETE:<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      case DISABLE:<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      case ENABLE:<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        return true;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      case EDIT:<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        // we allow concurrent edit on the NS table<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      case READ:<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        return false;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      // region operations are using the shared-lock on the table<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      // and then they will grab an xlock on the region.<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      case REGION_SPLIT:<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      case REGION_MERGE:<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      case REGION_ASSIGN:<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      case REGION_UNASSIGN:<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      case REGION_EDIT:<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      case REGION_GC:<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      case MERGED_REGIONS_GC:<a name="line.609"></a>
-<span class="sourceLineNo">610</span>        return false;<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      default:<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        break;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    }<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        proc.getTableOperationType());<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  /**<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * Get lock info for a resource of specified type and name and log details<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   */<a name="line.620"></a>
-<span class="sourceLineNo">621</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    if (!LOG.isDebugEnabled()) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      return;<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    if (lockInfo != null) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.628"></a>
-<span class="sourceLineNo">629</span>          lockInfo.getSharedLockCount();<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      if (proc != null) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      }<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      LOG.debug(msg);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    }<a name="line.636"></a>
-<span class="sourceLineNo">637</span>  }<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>  /**<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   * Suspend the procedure if the specified table is already locked.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.641"></a>
-<span class="sourceLineNo">642</span>   * @param procedure the procedure trying to acquire the lock<a name="line.642"></a>
-<span class="sourceLineNo">643</span>   * @param table Table to lock<a name="line.643"></a>
-<span class="sourceLineNo">644</span>   * @return true if the procedure has to wait for the table to be available<a name="line.644"></a>
-<span class="sourceLineNo">645</span>   */<a name="line.645"></a>
-<span class="sourceLineNo">646</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    schedLock();<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    try {<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      final String namespace = table.getNamespaceAsString();<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      if (!namespaceLock.trySharedLock()) {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>        waitProcedure(namespaceLock, procedure);<a name="line.653"></a>
-<span class="sourceLineNo">654</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        return true;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      if (!tableLock.tryExclusiveLock(procedure)) {<a name="line.657"></a>
-<span class="sourceLineNo">658</span>        namespaceLock.releaseSharedLock();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>        waitProcedure(tableLock, procedure);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.TABLE, table.getNameAsString());<a name="line.660"></a>
+<span class="sourceLineNo">555</span>  public static class TableQueue extends Queue&lt;TableName&gt; {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    private final LockStatus namespaceLockStatus;<a name="line.556"></a>
+<span class="sourceLineNo">557</span><a name="line.557"></a>
+<span class="sourceLineNo">558</span>    public TableQueue(TableName tableName, int priority, LockStatus tableLock,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>        LockStatus namespaceLockStatus) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      super(tableName, priority, tableLock);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      this.namespaceLockStatus = namespaceLockStatus;<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    }<a name="line.562"></a>
+<span class="sourceLineNo">563</span><a name="line.563"></a>
+<span class="sourceLineNo">564</span>    @Override<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    public boolean isAvailable() {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      // if there are no items in the queue, or the namespace is locked.<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      // we can't execute operation on this table<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      if (isEmpty() || namespaceLockStatus.hasExclusiveLock()) {<a name="line.568"></a>
+<span class="sourceLineNo">569</span>        return false;<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      }<a name="line.570"></a>
+<span class="sourceLineNo">571</span><a name="line.571"></a>
+<span class="sourceLineNo">572</span>      if (getLockStatus().hasExclusiveLock()) {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>        // if we have an exclusive lock already taken<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        // only child of the lock owner can be executed<a name="line.574"></a>
+<span class="sourceLineNo">575</span>        final Procedure nextProc = peek();<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        return nextProc != null &amp;&amp; getLockStatus().hasLockAccess(nextProc);<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>      // no xlock<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      return true;<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
+<span class="sourceLineNo">582</span><a name="line.582"></a>
+<span class="sourceLineNo">583</span>    @Override<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    public boolean requireExclusiveLock(Procedure proc) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      return requireTableExclusiveLock((TableProcedureInterface)proc);<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    }<a name="line.586"></a>
+<span class="sourceLineNo">587</span>  }<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>  // ============================================================================<a name="line.589"></a>
+<span class="sourceLineNo">590</span>  //  Table Locking Helpers<a name="line.590"></a>
+<span class="sourceLineNo">591</span>  // ============================================================================<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  /**<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @param proc must not be null<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   */<a name="line.594"></a>
+<span class="sourceLineNo">595</span>  private static boolean requireTableExclusiveLock(TableProcedureInterface proc) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>    switch (proc.getTableOperationType()) {<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      case CREATE:<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      case DELETE:<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      case DISABLE:<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      case ENABLE:<a name="line.600"></a>
+<span class="sourceLineNo">601</span>        return true;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      case EDIT:<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        // we allow concurrent edit on the NS table<a name="line.603"></a>
+<span class="sourceLineNo">604</span>        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      case READ:<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        return false;<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      // region operations are using the shared-lock on the table<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      // and then they will grab an xlock on the region.<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      case REGION_SPLIT:<a name="line.609"></a>
+<span class="sourceLineNo">610</span>      case REGION_MERGE:<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      case REGION_ASSIGN:<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      case REGION_UNASSIGN:<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      case REGION_EDIT:<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      case REGION_GC:<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      case MERGED_REGIONS_GC:<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        return false;<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      default:<a name="line.617"></a>
+<span class="sourceLineNo">618</span>        break;<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    }<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    throw new UnsupportedOperationException("unexpected type " +<a name="line.620"></a>
+<span class="sourceLineNo">621</span>        proc.getTableOperationType());<a name="line.621"></a>
+<span class="sourceLineNo">622</span>  }<a name="line.622"></a>
+<span class="sourceLineNo">623</span><a name="line.623"></a>
+<span class="sourceLineNo">624</span>  /**<a name="line.624"></a>
+<span class="sourceLineNo">625</span>   * Get lock info for a resource of specified type and name and log details<a name="line.625"></a>
+<span class="sourceLineNo">626</span>   */<a name="line.626"></a>
+<span class="sourceLineNo">627</span>  protected void logLockInfoForResource(LockInfo.ResourceType resourceType, String resourceName) {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    if (!LOG.isDebugEnabled()) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>      return;<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>    LockInfo lockInfo = getLockInfoForResource(resourceType, resourceName);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    if (lockInfo != null) {<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      String msg = resourceType.toString() + " '" + resourceName + "', shared lock count=" +<a name="line.634"></a>
+<span class="sourceLineNo">635</span>          lockInfo.getSharedLockCount();<a name="line.635"></a>
+<span class="sourceLineNo">636</span><a name="line.636"></a>
+<span class="sourceLineNo">637</span>      ProcedureInfo proc = lockInfo.getExclusiveLockOwnerProcedure();<a name="line.637"></a>
+<span class="sourceLineNo">638</span>      if (proc != null) {<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        msg += ", exclusively locked by procId=" + proc.getProcId();<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      }<a name="line.640"></a>
+<span class="sourceLineNo">641</span>      LOG.debug(msg);<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>  }<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   * Suspend the procedure if the specified table is already locked.<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   * Other operations in the table-queue will be executed after the lock is released.<a name="line.647"></a>
+<span class="sourceLineNo">648</span>   * @param procedure the procedure trying to acquire the lock<a name="line.648"></a>
+<span class="sourceLineNo">649</span>   * @param table Table to lock<a name="line.649"></a>
+<span class="sourceLineNo">650</span>   * @return true if the procedure has to wait for the table to be available<a name="line.650"></a>
+<span class="sourceLineNo">651</span>   */<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  public boolean waitTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    schedLock();<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    try {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>      final String namespace = table.getNamespaceAsString();<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(namespace);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      if (!namespaceLock.trySharedLock()) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>        waitProcedure(namespaceLock, procedure);<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        logLockInfoForResource(LockInfo.ResourceType.NAMESPACE, namespace);<a name="line.660"></a>
 <span class="sourceLineNo">661</span>        return true;<a name="line.661"></a>
 <span class="sourceLineNo">662</span>      }<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      removeFromRunQueue(tableRunQueue, getTableQueue(table));<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      return false;<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    } finally {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      schedUnlock();<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  }<a name="line.668"></a>
-<span class="sourceLineNo">669</span><a name="line.669"></a>
-<span class="sourceLineNo">670</span>  /**<a name="line.670"></a>
-<span class="sourceLineNo">671</span>   * Wake the procedures waiting for the specified table<a name="line.671"></a>
-<span class="sourceLineNo">672</span>   * @param procedure the procedure releasing the lock<a name="line.672"></a>
-<span class="sourceLineNo">673</span>   * @param table the name of the table that has the exclusive lock<a name="line.673"></a>
-<span class="sourceLineNo">674</span>   */<a name="line.674"></a>
-<span class="sourceLineNo">675</span>  public void wakeTableExclusiveLock(final Procedure procedure, final TableName table) {<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    schedLock();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    try {<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      final LockAndQueue namespaceLock = locking.getNamespaceLock(table.getNamespaceAsString());<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      final LockAndQueue tableLock = locking.getTableLock(table);<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      int waitingCount = 0;<a name="line.680"></a>
-<span class="sourceLineNo">681</span><a name="line.681"></a>
-<span class="sourceLineNo">682</span>      if (!tableLock.hasParentLock(procedure)) {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>        tableLock.releaseExclusiveLock(procedure);<a name="line.683"></a>
-<span class="sourceLineNo">684</span>        waitingCount += wakeWaitingProcedures(tableLock);<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      }<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      if (namespaceLock.releaseSharedLock()) {<a name="line.686"></a>
-<span class="sourceLineNo">687</span>        waitingCount += wakeWaitingProcedures(namespaceLock);<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      }<a name="line.688"></a>
-<span class="sourceLineNo">689</span>      addToRunQueue(tableRunQueue, getTableQueue(table));<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      wakePollIfNeeded(waitingCount);<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    } finally {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>      schedUnlock();<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><a name="line.695"></a>
-<span class="sourceLineNo">696</span>  /**<a name="line.696"></a>
-<span class="sourceLineNo">697</span>   * Suspend the procedure if the specified table is already locked.<a name="line.697"></a>
-<span class="sourceLineNo">698</span>   * other "read" operations in the table-queue may be executed concurrently,<a name="line.698"></a>
-<span class="sourceLineNo">699</span>   * @param procedure the procedure trying to acquire the lock<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   * @param table Table to lock<a name="line.700"></a>
-<span class="sourceLineNo">701</span>   * @return true if the procedure has to wait for the table to be available<a name="line.701"></a>
-<span class="sourceLineNo">702</span>   */<a name="line.702"></a>
-<span class="sourceLineNo">703</span>  public boolean waitTableSharedLock(final Procedure procedure, final TableName table) {<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    return waitTableQueueSharedLock(procedure, table) == null;<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>  private TableQueue waitTableQueueSharedLock(final Procedure procedure, final TableName table) {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    schedLock();<a name="line.708"></a>
-<span class="sourceLineNo"

<TRUNCATED>

[39/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
index 2f5315a..1b7c66d 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.410">HMaster.RedirectServlet</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.408">HMaster.RedirectServlet</a>
 extends javax.servlet.http.HttpServlet</pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -243,7 +243,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>serialVersionUID</h4>
-<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.411">serialVersionUID</a></pre>
+<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.409">serialVersionUID</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.RedirectServlet.serialVersionUID">Constant Field Values</a></dd>
@@ -256,7 +256,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>regionServerInfoPort</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.412">regionServerInfoPort</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.410">regionServerInfoPort</a></pre>
 </li>
 </ul>
 <a name="regionServerHostname">
@@ -265,7 +265,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>regionServerHostname</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.413">regionServerHostname</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.411">regionServerHostname</a></pre>
 </li>
 </ul>
 </li>
@@ -282,7 +282,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RedirectServlet</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.419">RedirectServlet</a>(<a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a>&nbsp;infoServer,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.417">RedirectServlet</a>(<a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a>&nbsp;infoServer,
                        <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;hostname)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -305,7 +305,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>doGet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.425">doGet</a>(javax.servlet.http.HttpServletRequest&nbsp;request,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.423">doGet</a>(javax.servlet.http.HttpServletRequest&nbsp;request,
                   javax.servlet.http.HttpServletResponse&nbsp;response)
            throws javax.servlet.ServletException,
                   <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>


[35/43] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html
index c882c32..6f3361e 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html
@@ -409,7 +409,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBe
 foreExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/ap
 ache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.html
index 329927c..16d3061 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.html
@@ -405,7 +405,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBe
 foreExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/ap
 ache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html
index 078ed8c..5f0be68 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html
@@ -382,7 +382,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBe
 foreExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/ap
 ache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html
index 2e99109..bc07c93 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html
@@ -369,7 +369,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollba
 ck-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBefore
 ExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html
index 029f015..ce80b5d 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html
@@ -382,7 +382,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBe
 foreExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/ap
 ache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html
index 5d85514..2f5da71 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html
@@ -371,7 +371,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBe
 foreExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/ap
 ache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html
index f179eac..2484350 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.1181">MasterProcedureScheduler.FairQueue</a>&lt;T extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;&gt;
+<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.1191">MasterProcedureScheduler.FairQueue</a>&lt;T extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;&gt;
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -244,7 +244,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>quantum</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1182">quantum</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1192">quantum</a></pre>
 </li>
 </ul>
 <a name="currentQueue">
@@ -253,7 +253,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>currentQueue</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="type parameter in MasterProcedureScheduler.FairQueue">T</a> extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="type parameter in MasterProcedureScheduler.FairQueue">T</a>&gt;&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1184">currentQueue</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="type parameter in MasterProcedureScheduler.FairQueue">T</a> extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="type parameter in MasterProcedureScheduler.FairQueue">T</a>&gt;&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1194">currentQueue</a></pre>
 </li>
 </ul>
 <a name="queueHead">
@@ -262,7 +262,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>queueHead</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="type parameter in MasterProcedureScheduler.FairQueue">T</a> extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="type parameter in MasterProcedureScheduler.FairQueue">T</a>&gt;&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1185">queueHead</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="type parameter in MasterProcedureScheduler.FairQueue">T</a> extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="type parameter in MasterProcedureScheduler.FairQueue">T</a>&gt;&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1195">queueHead</a></pre>
 </li>
 </ul>
 <a name="currentQuantum">
@@ -271,7 +271,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>currentQuantum</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1186">currentQuantum</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1196">currentQuantum</a></pre>
 </li>
 </ul>
 <a name="size">
@@ -280,7 +280,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>size</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1187">size</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1197">size</a></pre>
 </li>
 </ul>
 </li>
@@ -297,7 +297,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>FairQueue</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1189">FairQueue</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1199">FairQueue</a>()</pre>
 </li>
 </ul>
 <a name="FairQueue-int-">
@@ -306,7 +306,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FairQueue</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1193">FairQueue</a>(int&nbsp;quantum)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1203">FairQueue</a>(int&nbsp;quantum)</pre>
 </li>
 </ul>
 </li>
@@ -323,7 +323,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>hasRunnables</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1197">hasRunnables</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1207">hasRunnables</a>()</pre>
 </li>
 </ul>
 <a name="add-org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler.Queue-">
@@ -332,7 +332,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1201">add</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="type parameter in MasterProcedureScheduler.FairQueue">T</a>&gt;&nbsp;queue)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1211">add</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="type parameter in MasterProcedureScheduler.FairQueue">T</a>&gt;&nbsp;queue)</pre>
 </li>
 </ul>
 <a name="remove-org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler.Queue-">
@@ -341,7 +341,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>remove</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1207">remove</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="type parameter in MasterProcedureScheduler.FairQueue">T</a>&gt;&nbsp;queue)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1217">remove</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="type parameter in MasterProcedureScheduler.FairQueue">T</a>&gt;&nbsp;queue)</pre>
 </li>
 </ul>
 <a name="poll--">
@@ -350,7 +350,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>poll</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="type parameter in MasterProcedureScheduler.FairQueue">T</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1216">poll</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="type parameter in MasterProcedureScheduler.FairQueue">T</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1226">poll</a>()</pre>
 </li>
 </ul>
 <a name="nextQueue--">
@@ -359,7 +359,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>nextQueue</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1239">nextQueue</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1249">nextQueue</a>()</pre>
 </li>
 </ul>
 <a name="setNextQueue-org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler.Queue-">
@@ -368,7 +368,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setNextQueue</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1245">setNextQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="type parameter in MasterProcedureScheduler.FairQueue">T</a>&gt;&nbsp;queue)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1255">setNextQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="type parameter in MasterProcedureScheduler.FairQueue">T</a>&gt;&nbsp;queue)</pre>
 </li>
 </ul>
 <a name="calculateQuantum-org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler.Queue-">
@@ -377,7 +377,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>calculateQuantum</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1254">calculateQuantum</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&nbsp;queue)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#line.1264">calculateQuantum</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&nbsp;queue)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html
index 8095e0a..e620046 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private abstract static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.1008">MasterProcedureScheduler.Queue</a>&lt;TKey extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;TKey&gt;&gt;
+<pre>private abstract static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.1014">MasterProcedureScheduler.Queue</a>&lt;TKey extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;TKey&gt;&gt;
 extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinkedNode.html" title="class in org.apache.hadoop.hbase.util">AvlUtil.AvlLinkedNode</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;TKey&gt;&gt;</pre>
 </li>
 </ul>
@@ -296,7 +296,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockList">
 <li class="blockList">
 <h4>key</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="type parameter in MasterProcedureScheduler.Queue">TKey</a> extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="type parameter in MasterProcedureScheduler.Queue">TKey</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1012">key</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="type parameter in MasterProcedureScheduler.Queue">TKey</a> extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="type parameter in MasterProcedureScheduler.Queue">TKey</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1022">key</a></pre>
 </li>
 </ul>
 <a name="priority">
@@ -305,7 +305,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockList">
 <li class="blockList">
 <h4>priority</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1013">priority</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1023">priority</a></pre>
 </li>
 </ul>
 <a name="runnables">
@@ -314,7 +314,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockList">
 <li class="blockList">
 <h4>runnables</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureDeque.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureDeque</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1014">runnables</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureDeque.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureDeque</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1024">runnables</a></pre>
 </li>
 </ul>
 <a name="lockStatus">
@@ -323,7 +323,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockListLast">
 <li class="blockList">
 <h4>lockStatus</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1016">lockStatus</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1026">lockStatus</a></pre>
 </li>
 </ul>
 </li>
@@ -342,7 +342,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockList">
 <li class="blockList">
 <h4>Queue</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1018">Queue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="type parameter in MasterProcedureScheduler.Queue">TKey</a>&nbsp;key,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1028">Queue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="type parameter in MasterProcedureScheduler.Queue">TKey</a>&nbsp;key,
              <a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a>&nbsp;lockStatus)</pre>
 </li>
 </ul>
@@ -354,7 +354,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockListLast">
 <li class="blockList">
 <h4>Queue</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1022">Queue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="type parameter in MasterProcedureScheduler.Queue">TKey</a>&nbsp;key,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1032">Queue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="type parameter in MasterProcedureScheduler.Queue">TKey</a>&nbsp;key,
              int&nbsp;priority,
              <a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a>&nbsp;lockStatus)</pre>
 </li>
@@ -373,7 +373,11 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockList">
 <li class="blockList">
 <h4>requireExclusiveLock</h4>
-<pre>abstract&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1010">requireExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
+<pre>abstract&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1020">requireExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>proc</code> - must not be null</dd>
+</dl>
 </li>
 </ul>
 <a name="getKey--">
@@ -382,7 +386,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockList">
 <li class="blockList">
 <h4>getKey</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="type parameter in MasterProcedureScheduler.Queue">TKey</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1028">getKey</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="type parameter in MasterProcedureScheduler.Queue">TKey</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1038">getKey</a>()</pre>
 </li>
 </ul>
 <a name="getPriority--">
@@ -391,7 +395,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockList">
 <li class="blockList">
 <h4>getPriority</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1032">getPriority</a>()</pre>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1042">getPriority</a>()</pre>
 </li>
 </ul>
 <a name="getLockStatus--">
@@ -400,7 +404,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockList">
 <li class="blockList">
 <h4>getLockStatus</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1036">getLockStatus</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1046">getLockStatus</a>()</pre>
 </li>
 </ul>
 <a name="isAvailable--">
@@ -409,7 +413,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockList">
 <li class="blockList">
 <h4>isAvailable</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1042">isAvailable</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1052">isAvailable</a>()</pre>
 </li>
 </ul>
 <a name="add-org.apache.hadoop.hbase.procedure2.Procedure-boolean-">
@@ -418,7 +422,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1049">add</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1059">add</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc,
                 boolean&nbsp;addToFront)</pre>
 </li>
 </ul>
@@ -428,7 +432,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockList">
 <li class="blockList">
 <h4>peek</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1057">peek</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1067">peek</a>()</pre>
 </li>
 </ul>
 <a name="poll--">
@@ -437,7 +441,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockList">
 <li class="blockList">
 <h4>poll</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1061">poll</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1071">poll</a>()</pre>
 </li>
 </ul>
 <a name="isEmpty--">
@@ -446,7 +450,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockList">
 <li class="blockList">
 <h4>isEmpty</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1065">isEmpty</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1075">isEmpty</a>()</pre>
 </li>
 </ul>
 <a name="size--">
@@ -455,7 +459,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1069">size</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1079">size</a>()</pre>
 </li>
 </ul>
 <a name="compareKey-java.lang.Comparable-">
@@ -466,7 +470,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockList">
 <li class="blockList">
 <h4>compareKey</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1076">compareKey</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="type parameter in MasterProcedureScheduler.Queue">TKey</a>&nbsp;cmpKey)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1086">compareKey</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="type parameter in MasterProcedureScheduler.Queue">TKey</a>&nbsp;cmpKey)</pre>
 </li>
 </ul>
 <a name="compareTo-org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler.Queue-">
@@ -475,7 +479,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1081">compareTo</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="type parameter in MasterProcedureScheduler.Queue">TKey</a>&gt;&nbsp;other)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1091">compareTo</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="type parameter in MasterProcedureScheduler.Queue">TKey</a>&gt;&nbsp;other)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlNode.html#compareTo-TNode-">compareTo</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlNode.html" title="class in org.apache.hadoop.hbase.util">AvlUtil.AvlNode</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="type parameter in MasterProcedureScheduler.Queue">TKey</a> extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="type parameter in MasterProcedureScheduler.Queue">TKey<
 /a>&gt;&gt;&gt;</code></dd>
@@ -488,7 +492,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlLinke
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1086">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#line.1096">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html
index 233d1b9..f6692e4 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.1100">MasterProcedureScheduler.SchemaLocking</a>
+<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.1110">MasterProcedureScheduler.SchemaLocking</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Locks on namespaces, tables, and regions.
  Since LockAndQueue implementation is NOT thread-safe, schedLock() guards all calls to these
@@ -257,7 +257,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>serverLocks</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1101">serverLocks</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1111">serverLocks</a></pre>
 </li>
 </ul>
 <a name="namespaceLocks">
@@ -266,7 +266,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>namespaceLocks</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1102">namespaceLocks</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1112">namespaceLocks</a></pre>
 </li>
 </ul>
 <a name="tableLocks">
@@ -275,7 +275,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>tableLocks</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1103">tableLocks</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1113">tableLocks</a></pre>
 </li>
 </ul>
 <a name="regionLocks">
@@ -284,7 +284,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>regionLocks</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1105">regionLocks</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1115">regionLocks</a></pre>
 </li>
 </ul>
 </li>
@@ -301,7 +301,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SchemaLocking</h4>
-<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1100">SchemaLocking</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1110">SchemaLocking</a>()</pre>
 </li>
 </ul>
 </li>
@@ -320,7 +320,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getLock</h4>
-<pre>private&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1107">getLock</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;T,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&gt;&nbsp;map,
+<pre>private&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1117">getLock</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;T,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&gt;&nbsp;map,
                                  T&nbsp;key)</pre>
 </li>
 </ul>
@@ -330,7 +330,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableLock</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1116">getTableLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1126">getTableLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 <a name="removeTableLock-org.apache.hadoop.hbase.TableName-">
@@ -339,7 +339,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>removeTableLock</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1120">removeTableLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1130">removeTableLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 <a name="getNamespaceLock-java.lang.String-">
@@ -348,7 +348,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getNamespaceLock</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1124">getNamespaceLock</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1134">getNamespaceLock</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)</pre>
 </li>
 </ul>
 <a name="getRegionLock-java.lang.String-">
@@ -357,7 +357,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionLock</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1128">getRegionLock</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encodedRegionName)</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1138">getRegionLock</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encodedRegionName)</pre>
 </li>
 </ul>
 <a name="removeRegionLock-java.lang.String-">
@@ -366,7 +366,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>removeRegionLock</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1132">removeRegionLock</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encodedRegionName)</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1142">removeRegionLock</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encodedRegionName)</pre>
 </li>
 </ul>
 <a name="getServerLock-org.apache.hadoop.hbase.ServerName-">
@@ -375,7 +375,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerLock</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1136">getServerLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1146">getServerLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 </li>
 </ul>
 <a name="clear--">
@@ -384,7 +384,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>clear</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1145">clear</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1155">clear</a>()</pre>
 <div class="block">Removes all locks by clearing the maps.
  Used when procedure executor is stopped for failure and recovery testing.</div>
 </li>
@@ -395,7 +395,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1153">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1163">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -408,7 +408,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>filterUnlocked</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1160">filterUnlocked</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;?,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&gt;&nbsp;locks)</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.SchemaLocking.html#line.1170">filterUnlocked</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;?,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>&gt;&nbsp;locks)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html
index 0195faa..90c7729 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html
@@ -128,7 +128,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.527">MasterProcedureScheduler.ServerQueue</a>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.530">MasterProcedureScheduler.ServerQueue</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</pre>
 </li>
 </ul>
@@ -227,7 +227,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Mast
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ServerQueue</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html#line.528">ServerQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html#line.531">ServerQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                    <a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a>&nbsp;serverLock)</pre>
 </li>
 </ul>
@@ -245,10 +245,12 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Mast
 <ul class="blockListLast">
 <li class="blockList">
 <h4>requireExclusiveLock</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html#line.533">requireExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html#line.536">requireExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html#requireExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">requireExclusiveLock</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.Queue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>proc</code> - must not be null</dd>
 </dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/110df817/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueueKeyComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueueKeyComparator.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueueKeyComparator.html
index f732b9b..dbec844 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueueKeyComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueueKeyComparator.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.520">MasterProcedureScheduler.ServerQueueKeyComparator</a>
+<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.523">MasterProcedureScheduler.ServerQueueKeyComparator</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKeyComparator.html" title="interface in org.apache.hadoop.hbase.util">AvlUtil.AvlKeyComparator</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.ServerQueue</a>&gt;</pre>
 </li>
@@ -190,7 +190,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ServerQueueKeyComparator</h4>
-<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueueKeyComparator.html#line.520">ServerQueueKeyComparator</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueueKeyComparator.html#line.523">ServerQueueKeyComparator</a>()</pre>
 </li>
 </ul>
 </li>
@@ -207,7 +207,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compareKey</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueueKeyComparator.html#line.522">compareKey</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.ServerQueue</a>&nbsp;node,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueueKeyComparator.html#line.525">compareKey</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.ServerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.ServerQueue</a>&nbsp;node,
                       <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>