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

[01/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site c28bec8eb -> 40477ee92


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html
index cfe0ebc..f1bd6d3 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html
@@ -88,135 +88,142 @@
 <span class="sourceLineNo">080</span>    fs.delete(logDir, true);<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>  @Test<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  public void testTimeoutEventProcedure() throws Exception {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    final int NTIMEOUTS = 5;<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>    TestTimeoutEventProcedure proc = new TestTimeoutEventProcedure(500, NTIMEOUTS);<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    procExecutor.submitProcedure(proc);<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>    ProcedureTestingUtility.waitProcedure(procExecutor, proc.getProcId());<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    ProcedureTestingUtility.assertIsAbortException(procExecutor.getResult(proc.getProcId()));<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    assertEquals(NTIMEOUTS + 1, proc.getTimeoutsCount());<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  @Test<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public void testTimeoutEventProcedureDoubleExecution() throws Exception {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    testTimeoutEventProcedureDoubleExecution(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>  @Test<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public void testTimeoutEventProcedureDoubleExecutionKillIfSuspended() throws Exception {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    testTimeoutEventProcedureDoubleExecution(true);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  }<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private void testTimeoutEventProcedureDoubleExecution(final boolean killIfSuspended)<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      throws Exception {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    TestTimeoutEventProcedure proc = new TestTimeoutEventProcedure(1000, 3);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExecutor, true);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    ProcedureTestingUtility.setKillIfSuspended(procExecutor, killIfSuspended);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    long procId = procExecutor.submitProcedure(proc);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    ProcedureTestingUtility.testRecoveryAndDoubleExecution(procExecutor, procId, true);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    ProcedureTestingUtility.assertIsAbortException(procExecutor.getResult(proc.getProcId()));<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>  /**<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * This Event+Procedure exhibits following behavior:<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   * &lt;ul&gt;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   *   &lt;li&gt;On procedure execute()<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   *     &lt;ul&gt;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   *       &lt;li&gt;If had enough timeouts, abort the procedure. Else....&lt;/li&gt;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   *       &lt;li&gt;Suspend the event and add self to its suspend queue&lt;/li&gt;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   *       &lt;li&gt;Go into waiting state&lt;/li&gt;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>   *     &lt;/ul&gt;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>   *   &lt;/li&gt;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   *   &lt;li&gt;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   *     On waiting timeout<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   *     &lt;ul&gt;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   *       &lt;li&gt;Wake the event (which adds this procedure back into scheduler queue), and set own's<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   *       state to RUNNABLE (so can be executed again).&lt;/li&gt;<a name="line.129"></a>
+<span class="sourceLineNo">083</span>  /**<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   * Tests being able to suspend a Procedure for N timeouts and then failing.s<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   * Resets the timeout after each elapses. See {@link TestTimeoutEventProcedure} for example<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   * of how to do this sort of trickery with the ProcedureExecutor; i.e. suspend for a while,<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   * check for a condition and if not set, suspend again, etc., ultimately failing or succeeding<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   * eventually.<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   */<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Test<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public void testTimeoutEventProcedure() throws Exception {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    final int NTIMEOUTS = 5;<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>    TestTimeoutEventProcedure proc = new TestTimeoutEventProcedure(500, NTIMEOUTS);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    procExecutor.submitProcedure(proc);<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>    ProcedureTestingUtility.waitProcedure(procExecutor, proc.getProcId());<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    ProcedureTestingUtility.assertIsAbortException(procExecutor.getResult(proc.getProcId()));<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    assertEquals(NTIMEOUTS + 1, proc.getTimeoutsCount());<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>  @Test<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  public void testTimeoutEventProcedureDoubleExecution() throws Exception {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    testTimeoutEventProcedureDoubleExecution(false);<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>  @Test<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public void testTimeoutEventProcedureDoubleExecutionKillIfSuspended() throws Exception {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    testTimeoutEventProcedureDoubleExecution(true);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>  private void testTimeoutEventProcedureDoubleExecution(final boolean killIfSuspended)<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      throws Exception {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    TestTimeoutEventProcedure proc = new TestTimeoutEventProcedure(1000, 3);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExecutor, true);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    ProcedureTestingUtility.setKillIfSuspended(procExecutor, killIfSuspended);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    long procId = procExecutor.submitProcedure(proc);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    ProcedureTestingUtility.testRecoveryAndDoubleExecution(procExecutor, procId, true);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    ProcedureTestingUtility.assertIsAbortException(procExecutor.getResult(proc.getProcId()));<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  /**<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * This Event+Procedure exhibits following behavior:<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   * &lt;ul&gt;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   *   &lt;li&gt;On procedure execute()<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   *     &lt;ul&gt;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   *       &lt;li&gt;If had enough timeouts, abort the procedure. Else....&lt;/li&gt;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   *       &lt;li&gt;Suspend the event and add self to its suspend queue&lt;/li&gt;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   *       &lt;li&gt;Go into waiting state&lt;/li&gt;<a name="line.129"></a>
 <span class="sourceLineNo">130</span>   *     &lt;/ul&gt;<a name="line.130"></a>
 <span class="sourceLineNo">131</span>   *   &lt;/li&gt;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * &lt;/ul&gt;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   */<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public static class TestTimeoutEventProcedure extends NoopProcedure&lt;TestProcEnv&gt; {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    private final ProcedureEvent event = new ProcedureEvent("timeout-event");<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    private final AtomicInteger ntimeouts = new AtomicInteger(0);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    private int maxTimeouts = 1;<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public TestTimeoutEventProcedure() {}<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>    public TestTimeoutEventProcedure(final int timeoutMsec, final int maxTimeouts) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      this.maxTimeouts = maxTimeouts;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      setTimeout(timeoutMsec);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    }<a name="line.145"></a>
+<span class="sourceLineNo">132</span>   *   &lt;li&gt;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   *     On waiting timeout<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   *     &lt;ul&gt;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   *       &lt;li&gt;Wake the event (which adds this procedure back into scheduler queue), and set own's<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   *       state to RUNNABLE (so can be executed again).&lt;/li&gt;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   *     &lt;/ul&gt;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   *   &lt;/li&gt;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * &lt;/ul&gt;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   */<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  public static class TestTimeoutEventProcedure extends NoopProcedure&lt;TestProcEnv&gt; {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    private final ProcedureEvent event = new ProcedureEvent("timeout-event");<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    private final AtomicInteger ntimeouts = new AtomicInteger(0);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    private int maxTimeouts = 1;<a name="line.145"></a>
 <span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>    public int getTimeoutsCount() {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      return ntimeouts.get();<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>    @Override<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    protected Procedure[] execute(final TestProcEnv env) throws ProcedureSuspendedException {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      LOG.info("EXECUTE " + this + " ntimeouts=" + ntimeouts);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      if (ntimeouts.get() &gt; maxTimeouts) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        setAbortFailure("test", "give up after " + ntimeouts.get());<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        return null;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      }<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>      event.suspend();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      if (event.suspendIfNotReady(this)) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        setState(ProcedureState.WAITING_TIMEOUT);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        throw new ProcedureSuspendedException();<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>      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>    protected synchronized boolean setTimeoutFailure(final TestProcEnv env) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      int n = ntimeouts.incrementAndGet();<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      LOG.info("HANDLE TIMEOUT " + this + " ntimeouts=" + n);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      setState(ProcedureState.RUNNABLE);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      event.wake((AbstractProcedureScheduler) env.getProcedureScheduler());<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      return false;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>    @Override<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    protected void afterReplay(final TestProcEnv env) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      if (getState() == ProcedureState.WAITING_TIMEOUT) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        event.suspend();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        event.suspendIfNotReady(this);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>    @Override<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        throws IOException {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      Int32Value.Builder ntimeoutsBuilder = Int32Value.newBuilder().setValue(ntimeouts.get());<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      serializer.serialize(ntimeoutsBuilder.build());<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>      Int32Value.Builder maxTimeoutsBuilder = Int32Value.newBuilder().setValue(maxTimeouts);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      serializer.serialize(maxTimeoutsBuilder.build());<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>    protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.196"></a>
-<span class="sourceLineNo">197</span>        throws IOException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      Int32Value ntimeoutsValue = serializer.deserialize(Int32Value.class);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      ntimeouts.set(ntimeoutsValue.getValue());<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>      Int32Value maxTimeoutsValue = serializer.deserialize(Int32Value.class);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      maxTimeouts = maxTimeoutsValue.getValue();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  }<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>  private class TestProcEnv {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    public ProcedureScheduler getProcedureScheduler() {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      return procExecutor.getScheduler();<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>}<a name="line.211"></a>
+<span class="sourceLineNo">147</span>    public TestTimeoutEventProcedure() {}<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>    public TestTimeoutEventProcedure(final int timeoutMsec, final int maxTimeouts) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      this.maxTimeouts = maxTimeouts;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      setTimeout(timeoutMsec);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>    public int getTimeoutsCount() {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      return ntimeouts.get();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>    @Override<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    protected Procedure[] execute(final TestProcEnv env) throws ProcedureSuspendedException {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      LOG.info("EXECUTE " + this + " ntimeouts=" + ntimeouts);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      if (ntimeouts.get() &gt; maxTimeouts) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>        setAbortFailure("test", "give up after " + ntimeouts.get());<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        return null;<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>      event.suspend();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      if (event.suspendIfNotReady(this)) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        setState(ProcedureState.WAITING_TIMEOUT);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        throw new ProcedureSuspendedException();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>      return null;<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>    protected synchronized boolean setTimeoutFailure(final TestProcEnv env) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      int n = ntimeouts.incrementAndGet();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      LOG.info("HANDLE TIMEOUT " + this + " ntimeouts=" + n);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      setState(ProcedureState.RUNNABLE);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      event.wake((AbstractProcedureScheduler) env.getProcedureScheduler());<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      return false;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    }<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>    @Override<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    protected void afterReplay(final TestProcEnv env) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      if (getState() == ProcedureState.WAITING_TIMEOUT) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        event.suspend();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        event.suspendIfNotReady(this);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>    @Override<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        throws IOException {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      Int32Value.Builder ntimeoutsBuilder = Int32Value.newBuilder().setValue(ntimeouts.get());<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      serializer.serialize(ntimeoutsBuilder.build());<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>      Int32Value.Builder maxTimeoutsBuilder = Int32Value.newBuilder().setValue(maxTimeouts);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      serializer.serialize(maxTimeoutsBuilder.build());<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>    protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        throws IOException {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      Int32Value ntimeoutsValue = serializer.deserialize(Int32Value.class);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      ntimeouts.set(ntimeoutsValue.getValue());<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>      Int32Value maxTimeoutsValue = serializer.deserialize(Int32Value.class);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      maxTimeouts = maxTimeoutsValue.getValue();<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    }<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>  private class TestProcEnv {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public ProcedureScheduler getProcedureScheduler() {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      return procExecutor.getScheduler();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>}<a name="line.218"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html
index cfe0ebc..f1bd6d3 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html
@@ -88,135 +88,142 @@
 <span class="sourceLineNo">080</span>    fs.delete(logDir, true);<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>  @Test<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  public void testTimeoutEventProcedure() throws Exception {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    final int NTIMEOUTS = 5;<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>    TestTimeoutEventProcedure proc = new TestTimeoutEventProcedure(500, NTIMEOUTS);<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    procExecutor.submitProcedure(proc);<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>    ProcedureTestingUtility.waitProcedure(procExecutor, proc.getProcId());<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    ProcedureTestingUtility.assertIsAbortException(procExecutor.getResult(proc.getProcId()));<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    assertEquals(NTIMEOUTS + 1, proc.getTimeoutsCount());<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  @Test<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public void testTimeoutEventProcedureDoubleExecution() throws Exception {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    testTimeoutEventProcedureDoubleExecution(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>  @Test<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public void testTimeoutEventProcedureDoubleExecutionKillIfSuspended() throws Exception {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    testTimeoutEventProcedureDoubleExecution(true);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  }<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private void testTimeoutEventProcedureDoubleExecution(final boolean killIfSuspended)<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      throws Exception {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    TestTimeoutEventProcedure proc = new TestTimeoutEventProcedure(1000, 3);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExecutor, true);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    ProcedureTestingUtility.setKillIfSuspended(procExecutor, killIfSuspended);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    long procId = procExecutor.submitProcedure(proc);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    ProcedureTestingUtility.testRecoveryAndDoubleExecution(procExecutor, procId, true);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    ProcedureTestingUtility.assertIsAbortException(procExecutor.getResult(proc.getProcId()));<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>  /**<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * This Event+Procedure exhibits following behavior:<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   * &lt;ul&gt;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   *   &lt;li&gt;On procedure execute()<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   *     &lt;ul&gt;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   *       &lt;li&gt;If had enough timeouts, abort the procedure. Else....&lt;/li&gt;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   *       &lt;li&gt;Suspend the event and add self to its suspend queue&lt;/li&gt;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   *       &lt;li&gt;Go into waiting state&lt;/li&gt;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>   *     &lt;/ul&gt;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>   *   &lt;/li&gt;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   *   &lt;li&gt;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   *     On waiting timeout<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   *     &lt;ul&gt;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   *       &lt;li&gt;Wake the event (which adds this procedure back into scheduler queue), and set own's<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   *       state to RUNNABLE (so can be executed again).&lt;/li&gt;<a name="line.129"></a>
+<span class="sourceLineNo">083</span>  /**<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   * Tests being able to suspend a Procedure for N timeouts and then failing.s<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   * Resets the timeout after each elapses. See {@link TestTimeoutEventProcedure} for example<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   * of how to do this sort of trickery with the ProcedureExecutor; i.e. suspend for a while,<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   * check for a condition and if not set, suspend again, etc., ultimately failing or succeeding<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   * eventually.<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   */<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Test<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public void testTimeoutEventProcedure() throws Exception {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    final int NTIMEOUTS = 5;<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>    TestTimeoutEventProcedure proc = new TestTimeoutEventProcedure(500, NTIMEOUTS);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    procExecutor.submitProcedure(proc);<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>    ProcedureTestingUtility.waitProcedure(procExecutor, proc.getProcId());<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    ProcedureTestingUtility.assertIsAbortException(procExecutor.getResult(proc.getProcId()));<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    assertEquals(NTIMEOUTS + 1, proc.getTimeoutsCount());<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>  @Test<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  public void testTimeoutEventProcedureDoubleExecution() throws Exception {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    testTimeoutEventProcedureDoubleExecution(false);<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>  @Test<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public void testTimeoutEventProcedureDoubleExecutionKillIfSuspended() throws Exception {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    testTimeoutEventProcedureDoubleExecution(true);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>  private void testTimeoutEventProcedureDoubleExecution(final boolean killIfSuspended)<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      throws Exception {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    TestTimeoutEventProcedure proc = new TestTimeoutEventProcedure(1000, 3);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExecutor, true);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    ProcedureTestingUtility.setKillIfSuspended(procExecutor, killIfSuspended);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    long procId = procExecutor.submitProcedure(proc);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    ProcedureTestingUtility.testRecoveryAndDoubleExecution(procExecutor, procId, true);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    ProcedureTestingUtility.assertIsAbortException(procExecutor.getResult(proc.getProcId()));<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  /**<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * This Event+Procedure exhibits following behavior:<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   * &lt;ul&gt;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   *   &lt;li&gt;On procedure execute()<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   *     &lt;ul&gt;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   *       &lt;li&gt;If had enough timeouts, abort the procedure. Else....&lt;/li&gt;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   *       &lt;li&gt;Suspend the event and add self to its suspend queue&lt;/li&gt;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   *       &lt;li&gt;Go into waiting state&lt;/li&gt;<a name="line.129"></a>
 <span class="sourceLineNo">130</span>   *     &lt;/ul&gt;<a name="line.130"></a>
 <span class="sourceLineNo">131</span>   *   &lt;/li&gt;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * &lt;/ul&gt;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   */<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public static class TestTimeoutEventProcedure extends NoopProcedure&lt;TestProcEnv&gt; {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    private final ProcedureEvent event = new ProcedureEvent("timeout-event");<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    private final AtomicInteger ntimeouts = new AtomicInteger(0);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    private int maxTimeouts = 1;<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public TestTimeoutEventProcedure() {}<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>    public TestTimeoutEventProcedure(final int timeoutMsec, final int maxTimeouts) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      this.maxTimeouts = maxTimeouts;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      setTimeout(timeoutMsec);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    }<a name="line.145"></a>
+<span class="sourceLineNo">132</span>   *   &lt;li&gt;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   *     On waiting timeout<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   *     &lt;ul&gt;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   *       &lt;li&gt;Wake the event (which adds this procedure back into scheduler queue), and set own's<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   *       state to RUNNABLE (so can be executed again).&lt;/li&gt;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   *     &lt;/ul&gt;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   *   &lt;/li&gt;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * &lt;/ul&gt;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   */<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  public static class TestTimeoutEventProcedure extends NoopProcedure&lt;TestProcEnv&gt; {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    private final ProcedureEvent event = new ProcedureEvent("timeout-event");<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    private final AtomicInteger ntimeouts = new AtomicInteger(0);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    private int maxTimeouts = 1;<a name="line.145"></a>
 <span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>    public int getTimeoutsCount() {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      return ntimeouts.get();<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>    @Override<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    protected Procedure[] execute(final TestProcEnv env) throws ProcedureSuspendedException {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      LOG.info("EXECUTE " + this + " ntimeouts=" + ntimeouts);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      if (ntimeouts.get() &gt; maxTimeouts) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        setAbortFailure("test", "give up after " + ntimeouts.get());<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        return null;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      }<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>      event.suspend();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      if (event.suspendIfNotReady(this)) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        setState(ProcedureState.WAITING_TIMEOUT);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        throw new ProcedureSuspendedException();<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>      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>    protected synchronized boolean setTimeoutFailure(final TestProcEnv env) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      int n = ntimeouts.incrementAndGet();<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      LOG.info("HANDLE TIMEOUT " + this + " ntimeouts=" + n);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      setState(ProcedureState.RUNNABLE);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      event.wake((AbstractProcedureScheduler) env.getProcedureScheduler());<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      return false;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>    @Override<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    protected void afterReplay(final TestProcEnv env) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      if (getState() == ProcedureState.WAITING_TIMEOUT) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        event.suspend();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        event.suspendIfNotReady(this);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>    @Override<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        throws IOException {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      Int32Value.Builder ntimeoutsBuilder = Int32Value.newBuilder().setValue(ntimeouts.get());<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      serializer.serialize(ntimeoutsBuilder.build());<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>      Int32Value.Builder maxTimeoutsBuilder = Int32Value.newBuilder().setValue(maxTimeouts);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      serializer.serialize(maxTimeoutsBuilder.build());<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>    protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.196"></a>
-<span class="sourceLineNo">197</span>        throws IOException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      Int32Value ntimeoutsValue = serializer.deserialize(Int32Value.class);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      ntimeouts.set(ntimeoutsValue.getValue());<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>      Int32Value maxTimeoutsValue = serializer.deserialize(Int32Value.class);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      maxTimeouts = maxTimeoutsValue.getValue();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  }<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>  private class TestProcEnv {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    public ProcedureScheduler getProcedureScheduler() {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      return procExecutor.getScheduler();<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>}<a name="line.211"></a>
+<span class="sourceLineNo">147</span>    public TestTimeoutEventProcedure() {}<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>    public TestTimeoutEventProcedure(final int timeoutMsec, final int maxTimeouts) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      this.maxTimeouts = maxTimeouts;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      setTimeout(timeoutMsec);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>    public int getTimeoutsCount() {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      return ntimeouts.get();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>    @Override<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    protected Procedure[] execute(final TestProcEnv env) throws ProcedureSuspendedException {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      LOG.info("EXECUTE " + this + " ntimeouts=" + ntimeouts);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      if (ntimeouts.get() &gt; maxTimeouts) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>        setAbortFailure("test", "give up after " + ntimeouts.get());<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        return null;<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>      event.suspend();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      if (event.suspendIfNotReady(this)) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        setState(ProcedureState.WAITING_TIMEOUT);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        throw new ProcedureSuspendedException();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>      return null;<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>    protected synchronized boolean setTimeoutFailure(final TestProcEnv env) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      int n = ntimeouts.incrementAndGet();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      LOG.info("HANDLE TIMEOUT " + this + " ntimeouts=" + n);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      setState(ProcedureState.RUNNABLE);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      event.wake((AbstractProcedureScheduler) env.getProcedureScheduler());<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      return false;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    }<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>    @Override<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    protected void afterReplay(final TestProcEnv env) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      if (getState() == ProcedureState.WAITING_TIMEOUT) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        event.suspend();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        event.suspendIfNotReady(this);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>    @Override<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        throws IOException {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      Int32Value.Builder ntimeoutsBuilder = Int32Value.newBuilder().setValue(ntimeouts.get());<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      serializer.serialize(ntimeoutsBuilder.build());<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>      Int32Value.Builder maxTimeoutsBuilder = Int32Value.newBuilder().setValue(maxTimeouts);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      serializer.serialize(maxTimeoutsBuilder.build());<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>    protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        throws IOException {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      Int32Value ntimeoutsValue = serializer.deserialize(Int32Value.class);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      ntimeouts.set(ntimeoutsValue.getValue());<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>      Int32Value maxTimeoutsValue = serializer.deserialize(Int32Value.class);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      maxTimeouts = maxTimeoutsValue.getValue();<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    }<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>  private class TestProcEnv {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public ProcedureScheduler getProcedureScheduler() {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      return procExecutor.getScheduler();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>}<a name="line.218"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html
index cfe0ebc..f1bd6d3 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html
@@ -88,135 +88,142 @@
 <span class="sourceLineNo">080</span>    fs.delete(logDir, true);<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>  @Test<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  public void testTimeoutEventProcedure() throws Exception {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    final int NTIMEOUTS = 5;<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>    TestTimeoutEventProcedure proc = new TestTimeoutEventProcedure(500, NTIMEOUTS);<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    procExecutor.submitProcedure(proc);<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>    ProcedureTestingUtility.waitProcedure(procExecutor, proc.getProcId());<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    ProcedureTestingUtility.assertIsAbortException(procExecutor.getResult(proc.getProcId()));<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    assertEquals(NTIMEOUTS + 1, proc.getTimeoutsCount());<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  @Test<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public void testTimeoutEventProcedureDoubleExecution() throws Exception {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    testTimeoutEventProcedureDoubleExecution(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>  @Test<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public void testTimeoutEventProcedureDoubleExecutionKillIfSuspended() throws Exception {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    testTimeoutEventProcedureDoubleExecution(true);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  }<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private void testTimeoutEventProcedureDoubleExecution(final boolean killIfSuspended)<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      throws Exception {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    TestTimeoutEventProcedure proc = new TestTimeoutEventProcedure(1000, 3);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExecutor, true);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    ProcedureTestingUtility.setKillIfSuspended(procExecutor, killIfSuspended);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    long procId = procExecutor.submitProcedure(proc);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    ProcedureTestingUtility.testRecoveryAndDoubleExecution(procExecutor, procId, true);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    ProcedureTestingUtility.assertIsAbortException(procExecutor.getResult(proc.getProcId()));<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>  /**<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * This Event+Procedure exhibits following behavior:<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   * &lt;ul&gt;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   *   &lt;li&gt;On procedure execute()<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   *     &lt;ul&gt;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   *       &lt;li&gt;If had enough timeouts, abort the procedure. Else....&lt;/li&gt;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   *       &lt;li&gt;Suspend the event and add self to its suspend queue&lt;/li&gt;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   *       &lt;li&gt;Go into waiting state&lt;/li&gt;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>   *     &lt;/ul&gt;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>   *   &lt;/li&gt;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   *   &lt;li&gt;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   *     On waiting timeout<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   *     &lt;ul&gt;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   *       &lt;li&gt;Wake the event (which adds this procedure back into scheduler queue), and set own's<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   *       state to RUNNABLE (so can be executed again).&lt;/li&gt;<a name="line.129"></a>
+<span class="sourceLineNo">083</span>  /**<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   * Tests being able to suspend a Procedure for N timeouts and then failing.s<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   * Resets the timeout after each elapses. See {@link TestTimeoutEventProcedure} for example<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   * of how to do this sort of trickery with the ProcedureExecutor; i.e. suspend for a while,<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   * check for a condition and if not set, suspend again, etc., ultimately failing or succeeding<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   * eventually.<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   */<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Test<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public void testTimeoutEventProcedure() throws Exception {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    final int NTIMEOUTS = 5;<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>    TestTimeoutEventProcedure proc = new TestTimeoutEventProcedure(500, NTIMEOUTS);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    procExecutor.submitProcedure(proc);<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>    ProcedureTestingUtility.waitProcedure(procExecutor, proc.getProcId());<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    ProcedureTestingUtility.assertIsAbortException(procExecutor.getResult(proc.getProcId()));<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    assertEquals(NTIMEOUTS + 1, proc.getTimeoutsCount());<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>  @Test<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  public void testTimeoutEventProcedureDoubleExecution() throws Exception {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    testTimeoutEventProcedureDoubleExecution(false);<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>  @Test<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public void testTimeoutEventProcedureDoubleExecutionKillIfSuspended() throws Exception {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    testTimeoutEventProcedureDoubleExecution(true);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>  private void testTimeoutEventProcedureDoubleExecution(final boolean killIfSuspended)<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      throws Exception {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    TestTimeoutEventProcedure proc = new TestTimeoutEventProcedure(1000, 3);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExecutor, true);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    ProcedureTestingUtility.setKillIfSuspended(procExecutor, killIfSuspended);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    long procId = procExecutor.submitProcedure(proc);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    ProcedureTestingUtility.testRecoveryAndDoubleExecution(procExecutor, procId, true);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    ProcedureTestingUtility.assertIsAbortException(procExecutor.getResult(proc.getProcId()));<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  /**<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * This Event+Procedure exhibits following behavior:<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   * &lt;ul&gt;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   *   &lt;li&gt;On procedure execute()<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   *     &lt;ul&gt;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   *       &lt;li&gt;If had enough timeouts, abort the procedure. Else....&lt;/li&gt;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   *       &lt;li&gt;Suspend the event and add self to its suspend queue&lt;/li&gt;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   *       &lt;li&gt;Go into waiting state&lt;/li&gt;<a name="line.129"></a>
 <span class="sourceLineNo">130</span>   *     &lt;/ul&gt;<a name="line.130"></a>
 <span class="sourceLineNo">131</span>   *   &lt;/li&gt;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * &lt;/ul&gt;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   */<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public static class TestTimeoutEventProcedure extends NoopProcedure&lt;TestProcEnv&gt; {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    private final ProcedureEvent event = new ProcedureEvent("timeout-event");<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    private final AtomicInteger ntimeouts = new AtomicInteger(0);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    private int maxTimeouts = 1;<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public TestTimeoutEventProcedure() {}<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>    public TestTimeoutEventProcedure(final int timeoutMsec, final int maxTimeouts) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      this.maxTimeouts = maxTimeouts;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      setTimeout(timeoutMsec);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    }<a name="line.145"></a>
+<span class="sourceLineNo">132</span>   *   &lt;li&gt;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   *     On waiting timeout<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   *     &lt;ul&gt;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   *       &lt;li&gt;Wake the event (which adds this procedure back into scheduler queue), and set own's<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   *       state to RUNNABLE (so can be executed again).&lt;/li&gt;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   *     &lt;/ul&gt;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   *   &lt;/li&gt;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * &lt;/ul&gt;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   */<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  public static class TestTimeoutEventProcedure extends NoopProcedure&lt;TestProcEnv&gt; {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    private final ProcedureEvent event = new ProcedureEvent("timeout-event");<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    private final AtomicInteger ntimeouts = new AtomicInteger(0);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    private int maxTimeouts = 1;<a name="line.145"></a>
 <span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>    public int getTimeoutsCount() {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      return ntimeouts.get();<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>    @Override<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    protected Procedure[] execute(final TestProcEnv env) throws ProcedureSuspendedException {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      LOG.info("EXECUTE " + this + " ntimeouts=" + ntimeouts);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      if (ntimeouts.get() &gt; maxTimeouts) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        setAbortFailure("test", "give up after " + ntimeouts.get());<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        return null;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      }<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>      event.suspend();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      if (event.suspendIfNotReady(this)) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        setState(ProcedureState.WAITING_TIMEOUT);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        throw new ProcedureSuspendedException();<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>      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>    protected synchronized boolean setTimeoutFailure(final TestProcEnv env) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      int n = ntimeouts.incrementAndGet();<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      LOG.info("HANDLE TIMEOUT " + this + " ntimeouts=" + n);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      setState(ProcedureState.RUNNABLE);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      event.wake((AbstractProcedureScheduler) env.getProcedureScheduler());<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      return false;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>    @Override<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    protected void afterReplay(final TestProcEnv env) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      if (getState() == ProcedureState.WAITING_TIMEOUT) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        event.suspend();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        event.suspendIfNotReady(this);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>    @Override<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        throws IOException {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      Int32Value.Builder ntimeoutsBuilder = Int32Value.newBuilder().setValue(ntimeouts.get());<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      serializer.serialize(ntimeoutsBuilder.build());<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>      Int32Value.Builder maxTimeoutsBuilder = Int32Value.newBuilder().setValue(maxTimeouts);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      serializer.serialize(maxTimeoutsBuilder.build());<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>    protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.196"></a>
-<span class="sourceLineNo">197</span>        throws IOException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      Int32Value ntimeoutsValue = serializer.deserialize(Int32Value.class);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      ntimeouts.set(ntimeoutsValue.getValue());<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>      Int32Value maxTimeoutsValue = serializer.deserialize(Int32Value.class);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      maxTimeouts = maxTimeoutsValue.getValue();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  }<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>  private class TestProcEnv {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    public ProcedureScheduler getProcedureScheduler() {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      return procExecutor.getScheduler();<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>}<a name="line.211"></a>
+<span class="sourceLineNo">147</span>    public TestTimeoutEventProcedure() {}<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>    public TestTimeoutEventProcedure(final int timeoutMsec, final int maxTimeouts) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      this.maxTimeouts = maxTimeouts;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      setTimeout(timeoutMsec);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>    public int getTimeoutsCount() {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      return ntimeouts.get();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>    @Override<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    protected Procedure[] execute(final TestProcEnv env) throws ProcedureSuspendedException {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      LOG.info("EXECUTE " + this + " ntimeouts=" + ntimeouts);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      if (ntimeouts.get() &gt; maxTimeouts) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>        setAbortFailure("test", "give up after " + ntimeouts.get());<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        return null;<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>      event.suspend();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      if (event.suspendIfNotReady(this)) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        setState(ProcedureState.WAITING_TIMEOUT);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        throw new ProcedureSuspendedException();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>      return null;<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>    protected synchronized boolean setTimeoutFailure(final TestProcEnv env) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      int n = ntimeouts.incrementAndGet();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      LOG.info("HANDLE TIMEOUT " + this + " ntimeouts=" + n);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      setState(ProcedureState.RUNNABLE);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      event.wake((AbstractProcedureScheduler) env.getProcedureScheduler());<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      return false;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    }<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>    @Override<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    protected void afterReplay(final TestProcEnv env) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      if (getState() == ProcedureState.WAITING_TIMEOUT) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        event.suspend();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        event.suspendIfNotReady(this);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>    @Override<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    protected void serializeStateData(ProcedureStateSerializer serializer)<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        throws IOException {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      Int32Value.Builder ntimeoutsBuilder = Int32Value.newBuilder().setValue(ntimeouts.get());<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      serializer.serialize(ntimeoutsBuilder.build());<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>      Int32Value.Builder maxTimeoutsBuilder = Int32Value.newBuilder().setValue(maxTimeouts);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      serializer.serialize(maxTimeoutsBuilder.build());<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>    protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        throws IOException {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      Int32Value ntimeoutsValue = serializer.deserialize(Int32Value.class);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      ntimeouts.set(ntimeoutsValue.getValue());<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>      Int32Value maxTimeoutsValue = serializer.deserialize(Int32Value.class);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      maxTimeouts = maxTimeoutsValue.getValue();<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    }<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>  private class TestProcEnv {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public ProcedureScheduler getProcedureScheduler() {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      return procExecutor.getScheduler();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>}<a name="line.218"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/src-html/org/apache/hadoop/hbase/util/TestRetryCounter.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/util/TestRetryCounter.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/util/TestRetryCounter.html
new file mode 100644
index 0000000..cb3ef85
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/util/TestRetryCounter.html
@@ -0,0 +1,127 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.util;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static junit.framework.TestCase.assertTrue;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.junit.ClassRule;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.junit.Test;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.junit.experimental.categories.Category;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.slf4j.Logger;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.slf4j.LoggerFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>/**<a name="line.32"></a>
+<span class="sourceLineNo">033</span>* Basic test for some old functionality we don't seem to have used but that looks nice.<a name="line.33"></a>
+<span class="sourceLineNo">034</span> */<a name="line.34"></a>
+<span class="sourceLineNo">035</span>@Category({MiscTests.class, SmallTests.class})<a name="line.35"></a>
+<span class="sourceLineNo">036</span>public class TestRetryCounter {<a name="line.36"></a>
+<span class="sourceLineNo">037</span>  @ClassRule<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.38"></a>
+<span class="sourceLineNo">039</span>      HBaseClassTestRule.forClass(TestRetryCounter.class);<a name="line.39"></a>
+<span class="sourceLineNo">040</span>  private static final Logger LOG = LoggerFactory.getLogger(TestRetryCounter.class);<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>  @Test<a name="line.42"></a>
+<span class="sourceLineNo">043</span>  public void testBasics() throws InterruptedException {<a name="line.43"></a>
+<span class="sourceLineNo">044</span>    int maxAttempts = 10;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>    RetryCounterFactory factory =<a name="line.45"></a>
+<span class="sourceLineNo">046</span>        new RetryCounterFactory(maxAttempts, 10, 1000);<a name="line.46"></a>
+<span class="sourceLineNo">047</span>    RetryCounter retryCounter = factory.create();<a name="line.47"></a>
+<span class="sourceLineNo">048</span>    while (retryCounter.shouldRetry()) {<a name="line.48"></a>
+<span class="sourceLineNo">049</span>      LOG.info("Attempt={}, backoffTime={}", retryCounter.getAttemptTimes(),<a name="line.49"></a>
+<span class="sourceLineNo">050</span>          retryCounter.getBackoffTime());<a name="line.50"></a>
+<span class="sourceLineNo">051</span>      retryCounter.sleepUntilNextRetry();<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    }<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    assertTrue(retryCounter.getAttemptTimes() == maxAttempts);<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[02/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html
index 1168f08..c35fef9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html#line.134">TestProcedureEvents.TestTimeoutEventProcedure</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html#line.141">TestProcedureEvents.TestTimeoutEventProcedure</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.NoopProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureTestingUtility.NoopProcedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureEvents.TestProcEnv</a>&gt;</pre>
 <div class="block">This Event+Procedure exhibits following behavior:
  <ul>
@@ -300,7 +300,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureTest
 <ul class="blockList">
 <li class="blockList">
 <h4>event</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureEvent <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.135">event</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureEvent <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.142">event</a></pre>
 </li>
 </ul>
 <a name="ntimeouts">
@@ -309,7 +309,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureTest
 <ul class="blockList">
 <li class="blockList">
 <h4>ntimeouts</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.137">ntimeouts</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.144">ntimeouts</a></pre>
 </li>
 </ul>
 <a name="maxTimeouts">
@@ -318,7 +318,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureTest
 <ul class="blockListLast">
 <li class="blockList">
 <h4>maxTimeouts</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.138">maxTimeouts</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.145">maxTimeouts</a></pre>
 </li>
 </ul>
 </li>
@@ -335,7 +335,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureTest
 <ul class="blockList">
 <li class="blockList">
 <h4>TestTimeoutEventProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.140">TestTimeoutEventProcedure</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.147">TestTimeoutEventProcedure</a>()</pre>
 </li>
 </ul>
 <a name="TestTimeoutEventProcedure-int-int-">
@@ -344,7 +344,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureTest
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestTimeoutEventProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.142">TestTimeoutEventProcedure</a>(int&nbsp;timeoutMsec,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.149">TestTimeoutEventProcedure</a>(int&nbsp;timeoutMsec,
                                  int&nbsp;maxTimeouts)</pre>
 </li>
 </ul>
@@ -362,7 +362,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureTest
 <ul class="blockList">
 <li class="blockList">
 <h4>getTimeoutsCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.147">getTimeoutsCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.154">getTimeoutsCount</a>()</pre>
 </li>
 </ul>
 <a name="execute-org.apache.hadoop.hbase.procedure2.TestProcedureEvents.TestProcEnv-">
@@ -371,7 +371,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureTest
 <ul class="blockList">
 <li class="blockList">
 <h4>execute</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.procedure2.Procedure[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.152">execute</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureEvents.TestProcEnv</a>&nbsp;env)
+<pre>protected&nbsp;org.apache.hadoop.hbase.procedure2.Procedure[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.159">execute</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureEvents.TestProcEnv</a>&nbsp;env)
                                                           throws org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -387,7 +387,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureTest
 <ul class="blockList">
 <li class="blockList">
 <h4>setTimeoutFailure</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.169">setTimeoutFailure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureEvents.TestProcEnv</a>&nbsp;env)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.176">setTimeoutFailure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureEvents.TestProcEnv</a>&nbsp;env)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code>setTimeoutFailure</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.procedure2.Procedure&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureEvents.TestProcEnv</a>&gt;</code></dd>
@@ -400,7 +400,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureTest
 <ul class="blockList">
 <li class="blockList">
 <h4>afterReplay</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.178">afterReplay</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureEvents.TestProcEnv</a>&nbsp;env)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.185">afterReplay</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureEvents.TestProcEnv</a>&nbsp;env)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code>afterReplay</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.procedure2.Procedure&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureEvents.TestProcEnv</a>&gt;</code></dd>
@@ -413,7 +413,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureTest
 <ul class="blockList">
 <li class="blockList">
 <h4>serializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.186">serializeStateData</a>(org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.193">serializeStateData</a>(org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer&nbsp;serializer)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -429,7 +429,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureTest
 <ul class="blockListLast">
 <li class="blockList">
 <h4>deserializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.196">deserializeStateData</a>(org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#line.203">deserializeStateData</a>(org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer&nbsp;serializer)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html
index 5a42bdf..8004a9a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html
@@ -232,7 +232,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i2" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html#testTimeoutEventProcedure--">testTimeoutEventProcedure</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html#testTimeoutEventProcedure--">testTimeoutEventProcedure</a></span>()</code>
+<div class="block">Tests being able to suspend a Procedure for N timeouts and then failing.s
+ Resets the timeout after each elapses.</div>
+</td>
 </tr>
 <tr id="i3" class="rowColor">
 <td class="colFirst"><code>void</code></td>
@@ -399,8 +402,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testTimeoutEventProcedure</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html#line.84">testTimeoutEventProcedure</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html#line.91">testTimeoutEventProcedure</a>()
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<div class="block">Tests being able to suspend a Procedure for N timeouts and then failing.s
+ Resets the timeout after each elapses. See <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html" title="class in org.apache.hadoop.hbase.procedure2"><code>TestProcedureEvents.TestTimeoutEventProcedure</code></a> for example
+ of how to do this sort of trickery with the ProcedureExecutor; i.e. suspend for a while,
+ check for a condition and if not set, suspend again, etc., ultimately failing or succeeding
+ eventually.</div>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
@@ -413,7 +421,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testTimeoutEventProcedureDoubleExecution</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html#line.96">testTimeoutEventProcedureDoubleExecution</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html#line.103">testTimeoutEventProcedureDoubleExecution</a>()
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -427,7 +435,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testTimeoutEventProcedureDoubleExecutionKillIfSuspended</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html#line.101">testTimeoutEventProcedureDoubleExecutionKillIfSuspended</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html#line.108">testTimeoutEventProcedureDoubleExecutionKillIfSuspended</a>()
                                                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -441,7 +449,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testTimeoutEventProcedureDoubleExecution</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html#line.105">testTimeoutEventProcedureDoubleExecution</a>(boolean&nbsp;killIfSuspended)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html#line.112">testTimeoutEventProcedureDoubleExecution</a>(boolean&nbsp;killIfSuspended)
                                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/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 d8de690..28ed7f0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -253,9 +253,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestLoadAndVerify.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/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/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>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/util/TestRegionSplitter.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/util/TestRegionSplitter.html b/testdevapidocs/org/apache/hadoop/hbase/util/TestRegionSplitter.html
index 3c4cd7c..b017a38 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/util/TestRegionSplitter.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/TestRegionSplitter.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitCalculator.SimpleRange.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/util/TestReusablePoolMap.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/TestRegionSplitter.html" target="_top">Frames</a></li>
@@ -648,7 +648,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitCalculator.SimpleRange.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/util/TestReusablePoolMap.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/TestRegionSplitter.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/util/TestRetryCounter.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/util/TestRetryCounter.html b/testdevapidocs/org/apache/hadoop/hbase/util/TestRetryCounter.html
new file mode 100644
index 0000000..779c702
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/TestRetryCounter.html
@@ -0,0 +1,327 @@
+<!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>TestRetryCounter (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TestRetryCounter (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestRetryCounter.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/util/TestRegionSplitter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/TestReusablePoolMap.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/TestRetryCounter.html" target="_top">Frames</a></li>
+<li><a href="TestRetryCounter.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.util</div>
+<h2 title="Class TestRetryCounter" class="title">Class TestRetryCounter</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.util.TestRetryCounter</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestRetryCounter.html#line.36">TestRetryCounter</a>
+extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
+<div class="block">Basic test for some old functionality we don't seem to have used but that looks nice.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRetryCounter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRetryCounter.html#LOG">LOG</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRetryCounter.html#TestRetryCounter--">TestRetryCounter</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRetryCounter.html#testBasics--">testBasics</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestRetryCounter.html#line.38">CLASS_RULE</a></pre>
+</li>
+</ul>
+<a name="LOG">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>LOG</h4>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestRetryCounter.html#line.40">LOG</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="TestRetryCounter--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestRetryCounter</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestRetryCounter.html#line.36">TestRetryCounter</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="testBasics--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testBasics</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestRetryCounter.html#line.43">testBasics</a>()
+                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestRetryCounter.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/util/TestRegionSplitter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/TestReusablePoolMap.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/TestRetryCounter.html" target="_top">Frames</a></li>
+<li><a href="TestRetryCounter.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <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/40477ee9/testdevapidocs/org/apache/hadoop/hbase/util/TestReusablePoolMap.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/util/TestReusablePoolMap.html b/testdevapidocs/org/apache/hadoop/hbase/util/TestReusablePoolMap.html
index d05d5fc..8175f70 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/util/TestReusablePoolMap.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/TestReusablePoolMap.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/util/TestRootPath.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -345,7 +345,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/PoolMapTestBase.htm
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/util/TestRootPath.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/util/class-use/TestRetryCounter.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/util/class-use/TestRetryCounter.html b/testdevapidocs/org/apache/hadoop/hbase/util/class-use/TestRetryCounter.html
new file mode 100644
index 0000000..7c79529
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/class-use/TestRetryCounter.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.util.TestRetryCounter (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.util.TestRetryCounter (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util">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/util/class-use/TestRetryCounter.html" target="_top">Frames</a></li>
+<li><a href="TestRetryCounter.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.util.TestRetryCounter" class="title">Uses of Class<br>org.apache.hadoop.hbase.util.TestRetryCounter</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.util.TestRetryCounter</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/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util">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/util/class-use/TestRetryCounter.html" target="_top">Frames</a></li>
+<li><a href="TestRetryCounter.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;2018 <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/40477ee9/testdevapidocs/org/apache/hadoop/hbase/util/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/util/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/util/package-frame.html
index 08e3fea..9d376c7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/util/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/package-frame.html
@@ -111,6 +111,7 @@
 <li><a href="TestRegionSplitCalculator.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestRegionSplitCalculator</a></li>
 <li><a href="TestRegionSplitCalculator.SimpleRange.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestRegionSplitCalculator.SimpleRange</a></li>
 <li><a href="TestRegionSplitter.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestRegionSplitter</a></li>
+<li><a href="TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestRetryCounter</a></li>
 <li><a href="TestReusablePoolMap.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestReusablePoolMap</a></li>
 <li><a href="TestRootPath.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestRootPath</a></li>
 <li><a href="TestRoundRobinPoolMap.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestRoundRobinPoolMap</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/util/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/util/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/util/package-summary.html
index b2501a6..32134c7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/util/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/package-summary.html
@@ -581,62 +581,68 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util">TestRetryCounter</a></td>
+<td class="colLast">
+<div class="block">Basic test for some old functionality we don't seem to have used but that looks nice.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestReusablePoolMap.html" title="class in org.apache.hadoop.hbase.util">TestReusablePoolMap</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestRootPath.html" title="class in org.apache.hadoop.hbase.util">TestRootPath</a></td>
 <td class="colLast">
 <div class="block">Test requirement that root directory must be a URI</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestRoundRobinPoolMap.html" title="class in org.apache.hadoop.hbase.util">TestRoundRobinPoolMap</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestShowProperties.html" title="class in org.apache.hadoop.hbase.util">TestShowProperties</a></td>
 <td class="colLast">
 <div class="block">This test is there to dump the properties.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestSimpleMutableByteRange.html" title="class in org.apache.hadoop.hbase.util">TestSimpleMutableByteRange</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestSimplePositionedMutableByteRange.html" title="class in org.apache.hadoop.hbase.util">TestSimplePositionedMutableByteRange</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestSortedList.html" title="class in org.apache.hadoop.hbase.util">TestSortedList</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestSortedList.StringComparator.html" title="class in org.apache.hadoop.hbase.util">TestSortedList.StringComparator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestStealJobQueue.html" title="class in org.apache.hadoop.hbase.util">TestStealJobQueue</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestThreadLocalPoolMap.html" title="class in org.apache.hadoop.hbase.util">TestThreadLocalPoolMap</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestThreads.html" title="class in org.apache.hadoop.hbase.util">TestThreads</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestVersionInfo.html" title="class in org.apache.hadoop.hbase.util">TestVersionInfo</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TestWeakObjectPool.html" title="class in org.apache.hadoop.hbase.util">TestWeakObjectPool</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/TimeOffsetEnvironmentEdge.html" title="class in org.apache.hadoop.hbase.util">TimeOffsetEnvironmentEdge</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/util/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/util/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/util/package-tree.html
index 7732621..2933588 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -276,6 +276,7 @@
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitCalculator.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestRegionSplitCalculator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitCalculator.SimpleRange.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestRegionSplitCalculator.SimpleRange</span></a> (implements org.apache.hadoop.hbase.util.KeyRange)</li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestRegionSplitter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestRetryCounter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/TestShowProperties.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestShowProperties</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/TestSimpleMutableByteRange.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestSimpleMutableByteRange</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/TestSimplePositionedMutableByteRange.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestSimplePositionedMutableByteRange</span></a></li>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index 9fd6227..b30a081 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -3323,6 +3323,7 @@
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestResultFromCoprocessor.MyObserver.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestResultFromCoprocessor.MyObserver</span></a> (implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver)</li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestResultSizeEstimation.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestResultSizeEstimation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestRetriesExhaustedWithDetailsException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestRetriesExhaustedWithDetailsException</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestRetryCounter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestReversedScannerCallable.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestReversedScannerCallable</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestReversibleScanners</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestRogueRSAssignment.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">TestRogueRSAssignment</span></a></li>
@@ -3596,6 +3597,7 @@
 <li type="circle">org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestTokenAuthentication</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.NonShadedBlockingRpcCallback.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestTokenAuthentication.NonShadedBlockingRpcCallback</span></a>&lt;R&gt; (implements com.google.protobuf.RpcCallback&lt;ParameterType&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><span class="typeNameLink">TestTokenUtil</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">TestUnexpectedStateException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.types.<a href="org/apache/hadoop/hbase/types/TestUnion2.html" title="class in org.apache.hadoop.hbase.types"><span class="typeNameLink">TestUnion2</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestUpdateConfiguration.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestUpdateConfiguration</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/TestUser.html" title="class in org.apache.hadoop.hbase.security"><span class="typeNameLink">TestUser</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html
new file mode 100644
index 0000000..1b2f3ba
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html
@@ -0,0 +1,239 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.master.assignment;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.junit.Assert.fail;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.Iterator;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.List;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.TableName;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.testclassification.MasterTests;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hbase.thirdparty.com.google.gson.JsonArray;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hbase.thirdparty.com.google.gson.JsonElement;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hbase.thirdparty.com.google.gson.JsonObject;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hbase.thirdparty.com.google.gson.JsonParser;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.junit.AfterClass;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.junit.Before;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.junit.BeforeClass;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.junit.ClassRule;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.junit.Rule;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.junit.Test;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.junit.experimental.categories.Category;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.junit.rules.TestName;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.slf4j.Logger;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.slf4j.LoggerFactory;<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>/**<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * Tests for HBASE-18408 "AM consumes CPU and fills up the logs really fast when there is no RS to<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * assign". If an {@link org.apache.hadoop.hbase.exceptions.UnexpectedStateException}, we'd spin on<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * the ProcedureExecutor consuming CPU and filling logs. Test new back-off facility.<a name="line.52"></a>
+<span class="sourceLineNo">053</span> */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>@Category({MasterTests.class, MediumTests.class})<a name="line.54"></a>
+<span class="sourceLineNo">055</span>public class TestUnexpectedStateException {<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  @ClassRule<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.57"></a>
+<span class="sourceLineNo">058</span>      HBaseClassTestRule.forClass(TestUnexpectedStateException.class);<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  @Rule public final TestName name = new TestName();<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static final Logger LOG = LoggerFactory.getLogger(TestUnexpectedStateException.class);<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static final byte [] FAMILY = Bytes.toBytes("family");<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private TableName tableName;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static final int REGIONS = 10;<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  @BeforeClass<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  public static void beforeClass() throws Exception {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    TEST_UTIL.startMiniCluster();<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>  @AfterClass<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  public static void afterClass() throws Exception {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    TEST_UTIL.shutdownMiniCluster();<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>  @Before<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  public void before() throws IOException {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    this.tableName = TableName.valueOf(this.name.getMethodName());<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    TEST_UTIL.createMultiRegionTable(this.tableName, FAMILY, REGIONS);<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>  private RegionInfo pickArbitraryRegion(Admin admin) throws IOException {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    List&lt;RegionInfo&gt; regions = admin.getRegions(this.tableName);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    return regions.get(3);<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>  /**<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   * Manufacture a state that will throw UnexpectedStateException.<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   * Change an assigned region's 'state' to be OPENING. That'll mess up a subsequent unassign<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   * causing it to throw UnexpectedStateException. We can easily manufacture this infinite retry<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   * state in UnassignProcedure because it has no startTransition. AssignProcedure does where it<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   * squashes whatever the current region state is making it OFFLINE. That makes it harder to mess<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   * it up. Make do with UnassignProcedure for now.<a name="line.94"></a>
+<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  @Test<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public void testUnableToAssign() throws Exception {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    try (Admin admin = TEST_UTIL.getAdmin()) {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      // Pick a random region from this tests' table to play with. Get its RegionStateNode.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      // Clone it because the original will be changed by the system. We need clone to fake out<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      // a state.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      final RegionInfo region = pickArbitraryRegion(admin);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      AssignmentManager am = TEST_UTIL.getHBaseCluster().getMaster().getAssignmentManager();<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      RegionStates.RegionStateNode rsn =  am.getRegionStates().getRegionStateNode(region);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      // Now force region to be in OPENING state.<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      am.markRegionAsOpening(rsn);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      // Now the 'region' is in an artificially bad state, try an unassign again.<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      // Run unassign in a thread because it is blocking.<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      Runnable unassign = () -&gt; {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        try {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>          admin.unassign(region.getRegionName(), true);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>        } catch (IOException ioe) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>          fail("Failed assign");<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        }<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      };<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      Thread t = new Thread(unassign, "unassign");<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      t.start();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      while(!t.isAlive()) {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>        Threads.sleep(100);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      }<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      Threads.sleep(1000);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      // Unassign should be running and failing. Look for incrementing timeout as evidence that<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      // Unassign is stuck and doing backoff.<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      // Now fix the condition we were waiting on so the unassign can complete.<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      JsonParser parser = new JsonParser();<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      long oldTimeout = 0;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      int timeoutIncrements = 0;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      while (true) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        long timeout = getUnassignTimeout(parser, admin.getProcedures());<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        if (timeout &gt; oldTimeout) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>          LOG.info("Timeout incremented, was {}, now is {}, increments={}",<a name="line.131"></a>
+<span class="sourceLineNo">132</span>              timeout, oldTimeout, timeoutIncrements);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>          oldTimeout = timeout;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          timeoutIncrements++;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>          if (timeoutIncrements &gt; 3) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>            // If we incremented at least twice, break; the backoff is working.<a name="line.136"></a>
+<span class="sourceLineNo">137</span>            break;<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>        Thread.sleep(1000);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      }<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      am.markRegionAsOpened(rsn);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      t.join();<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    }<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  /**<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * @param proceduresAsJSON This is String returned by admin.getProcedures call... an array of<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   *                         Procedures as JSON.<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   * @return The Procedure timeout value parsed from the Unassign Procedure.<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @Exception Thrown if we do not find UnassignProcedure or fail to parse timeout.<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private long getUnassignTimeout(JsonParser parser, String proceduresAsJSON) throws Exception {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    JsonArray array = parser.parse(proceduresAsJSON).getAsJsonArray();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    Iterator&lt;JsonElement&gt; iterator = array.iterator();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    while (iterator.hasNext()) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      JsonElement element = iterator.next();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      JsonObject obj = element.getAsJsonObject();<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      String className = obj.get("className").getAsString();<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      String actualClassName = UnassignProcedure.class.getName();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      if (className.equals(actualClassName)) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>        return obj.get("timeout").getAsLong();<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>    throw new Exception("Failed to find UnassignProcedure or timeout in " + proceduresAsJSON);<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[08/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html
index c8a3f1e..ed25b40 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html
@@ -83,854 +83,859 @@
 <span class="sourceLineNo">075</span> * during the execute() step. In case of failure and restart, rollback() may be<a name="line.75"></a>
 <span class="sourceLineNo">076</span> * called multiple times, so again the code must be idempotent.<a name="line.76"></a>
 <span class="sourceLineNo">077</span> *<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * &lt;p&gt;Procedure can be made respect a locking regime. It has acqure/release methods as<a name="line.78"></a>
+<span class="sourceLineNo">078</span> * &lt;p&gt;Procedure can be made respect a locking regime. It has acquire/release methods as<a name="line.78"></a>
 <span class="sourceLineNo">079</span> * well as an {@link #hasLock(Object)}. The lock implementation is up to the implementor.<a name="line.79"></a>
 <span class="sourceLineNo">080</span> * If an entity needs to be locked for the life of a procedure -- not just the calls to<a name="line.80"></a>
 <span class="sourceLineNo">081</span> * execute -- then implementations should say so with the {@link #holdLock(Object)}<a name="line.81"></a>
 <span class="sourceLineNo">082</span> * method.<a name="line.82"></a>
 <span class="sourceLineNo">083</span> *<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * &lt;p&gt;There are hooks for collecting metrics on submit of the procedure and on finish.<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * See {@link #updateMetricsOnSubmit(Object)} and<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * {@link #updateMetricsOnFinish(Object, long, boolean)}.<a name="line.86"></a>
-<span class="sourceLineNo">087</span> */<a name="line.87"></a>
-<span class="sourceLineNo">088</span>@InterfaceAudience.Private<a name="line.88"></a>
-<span class="sourceLineNo">089</span>@InterfaceStability.Evolving<a name="line.89"></a>
-<span class="sourceLineNo">090</span>public abstract class Procedure&lt;TEnvironment&gt; implements Comparable&lt;Procedure&lt;TEnvironment&gt;&gt; {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private static final Logger LOG = LoggerFactory.getLogger(Procedure.class);<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  public static final long NO_PROC_ID = -1;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  protected static final int NO_TIMEOUT = -1;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  public enum LockState {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    LOCK_ACQUIRED,       // Lock acquired and ready to execute<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    LOCK_YIELD_WAIT,     // Lock not acquired, framework needs to yield<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    LOCK_EVENT_WAIT,     // Lock not acquired, an event will yield the procedure<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>  // Unchanged after initialization<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  private NonceKey nonceKey = null;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  private String owner = null;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private long parentProcId = NO_PROC_ID;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private long rootProcId = NO_PROC_ID;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  private long procId = NO_PROC_ID;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  private long submittedTime;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  // Runtime state, updated every operation<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  private ProcedureState state = ProcedureState.INITIALIZING;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private RemoteProcedureException exception = null;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private int[] stackIndexes = null;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  private int childrenLatch = 0;<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>  private volatile int timeout = NO_TIMEOUT;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  private volatile long lastUpdate;<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private volatile byte[] result = null;<a name="line.118"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;Procedures can be suspended or put in wait state with a callback that gets executed on<a name="line.84"></a>
+<span class="sourceLineNo">085</span> * Procedure-specified timeout. See {@link #setTimeout(int)}}, and<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * {@link #setTimeoutFailure(Object)}. See TestProcedureEvents and the<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * TestTimeoutEventProcedure class for an example usage.&lt;/p&gt;<a name="line.87"></a>
+<span class="sourceLineNo">088</span> *<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * &lt;p&gt;There are hooks for collecting metrics on submit of the procedure and on finish.<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * See {@link #updateMetricsOnSubmit(Object)} and<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * {@link #updateMetricsOnFinish(Object, long, boolean)}.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> */<a name="line.92"></a>
+<span class="sourceLineNo">093</span>@InterfaceAudience.Private<a name="line.93"></a>
+<span class="sourceLineNo">094</span>@InterfaceStability.Evolving<a name="line.94"></a>
+<span class="sourceLineNo">095</span>public abstract class Procedure&lt;TEnvironment&gt; implements Comparable&lt;Procedure&lt;TEnvironment&gt;&gt; {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private static final Logger LOG = LoggerFactory.getLogger(Procedure.class);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public static final long NO_PROC_ID = -1;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  protected static final int NO_TIMEOUT = -1;<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public enum LockState {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    LOCK_ACQUIRED,       // Lock acquired and ready to execute<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    LOCK_YIELD_WAIT,     // Lock not acquired, framework needs to yield<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    LOCK_EVENT_WAIT,     // Lock not acquired, an event will yield the procedure<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>  // Unchanged after initialization<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  private NonceKey nonceKey = null;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private String owner = null;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  private long parentProcId = NO_PROC_ID;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private long rootProcId = NO_PROC_ID;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private long procId = NO_PROC_ID;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  private long submittedTime;<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>  // Runtime state, updated every operation<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private ProcedureState state = ProcedureState.INITIALIZING;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private RemoteProcedureException exception = null;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private int[] stackIndexes = null;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private int childrenLatch = 0;<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>   * The main code of the procedure. It must be idempotent since execute()<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   * may be called multiple times in case of machine failure in the middle<a name="line.122"></a>
-<span class="sourceLineNo">123</span>   * of the execution.<a name="line.123"></a>
-<span class="sourceLineNo">124</span>   * @param env the environment passed to the ProcedureExecutor<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   * @return a set of sub-procedures to run or ourselves if there is more work to do or null if the<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * procedure is done.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * @throws ProcedureYieldException the procedure will be added back to the queue and retried later.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   * @throws InterruptedException the procedure will be added back to the queue and retried later.<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * @throws ProcedureSuspendedException Signal to the executor that Procedure has suspended itself and<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * has set itself up waiting for an external event to wake it back up again.<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  protected abstract Procedure&lt;TEnvironment&gt;[] execute(TEnvironment env)<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    throws ProcedureYieldException, ProcedureSuspendedException, InterruptedException;<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>   * The code to undo what was done by the execute() code.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * It is called when the procedure or one of the sub-procedures failed or an<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * abort was requested. It should cleanup all the resources created by<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * the execute() call. The implementation must be idempotent since rollback()<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * may be called multiple time in case of machine failure in the middle<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * of the execution.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * @param env the environment passed to the ProcedureExecutor<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * @throws IOException temporary failure, the rollback will retry later<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @throws InterruptedException the procedure will be added back to the queue and retried later<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  protected abstract void rollback(TEnvironment env)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    throws IOException, InterruptedException;<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>   * The abort() call is asynchronous and each procedure must decide how to deal<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * with it, if they want to be abortable. The simplest implementation<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * is to have an AtomicBoolean set in the abort() method and then the execute()<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   * will check if the abort flag is set or not.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * abort() may be called multiple times from the client, so the implementation<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * must be idempotent.<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   *<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * &lt;p&gt;NOTE: abort() is not like Thread.interrupt(). It is just a notification<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   * that allows the procedure implementor abort.<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   */<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  protected abstract boolean abort(TEnvironment env);<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>   * The user-level code of the procedure may have some state to<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * persist (e.g. input arguments or current position in the processing state) to<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * be able to resume on failure.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param serializer stores the serializable state<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  protected abstract void serializeStateData(final ProcedureStateSerializer serializer)<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    throws IOException;<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  /**<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * Called on store load to allow the user to decode the previously serialized<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * state.<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param serializer contains the serialized state<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   */<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  protected abstract void deserializeStateData(final ProcedureStateSerializer serializer)<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    throws IOException;<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>   * The user should override this method if they need a lock on an Entity.<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * A lock can be anything, and it is up to the implementor. The Procedure<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   * Framework will call this method just before it invokes {@link #execute(Object)}.<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * It calls {@link #releaseLock(Object)} after the call to execute.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   *<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * &lt;p&gt;If you need to hold the lock for the life of the Procedure -- i.e. you do not<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * want any other Procedure interfering while this Procedure is running, see<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * {@link #holdLock(Object)}.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   *<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * &lt;p&gt;Example: in our Master we can execute request in parallel for different tables.<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * We can create t1 and create t2 and these creates can be executed at the same time.<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * Anything else on t1/t2 is queued waiting that specific table create to happen.<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   *<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * &lt;p&gt;There are 3 LockState:<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * &lt;ul&gt;&lt;li&gt;LOCK_ACQUIRED should be returned when the proc has the lock and the proc is<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * ready to execute.&lt;/li&gt;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * &lt;li&gt;LOCK_YIELD_WAIT should be returned when the proc has not the lock and the framework<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * should take care of readding the procedure back to the runnable set for retry&lt;/li&gt;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   * &lt;li&gt;LOCK_EVENT_WAIT should be returned when the proc has not the lock and someone will<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   * take care of readding the procedure back to the runnable set when the lock is available.<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * &lt;/li&gt;&lt;/ul&gt;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * @return the lock state as described above.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   */<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  protected LockState acquireLock(final TEnvironment env) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    return LockState.LOCK_ACQUIRED;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>  /**<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   * The user should override this method, and release lock if necessary.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  protected void releaseLock(final TEnvironment env) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    // no-op<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>   * Used to keep the procedure lock even when the procedure is yielding or suspended.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * Must implement {@link #hasLock(Object)} if you want to hold the lock for life<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * of the Procedure.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * @see #hasLock(Object)<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @return true if the procedure should hold on the lock until completionCleanup()<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  protected boolean holdLock(final TEnvironment env) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    return false;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * This is used in conjunction with {@link #holdLock(Object)}. If {@link #holdLock(Object)}<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * returns true, the procedure executor will call acquireLock() once and thereafter<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * not call {@link #releaseLock(Object)} until the Procedure is done (Normally, it calls<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * release/acquire around each invocation of {@link #execute(Object)}.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @see #holdLock(Object)<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * @return true if the procedure has the lock, false otherwise.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   */<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  protected boolean hasLock(final TEnvironment env) {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return false;<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>   * Called when the procedure is loaded for replay.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * The procedure implementor may use this method to perform some quick<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   * operation before replay.<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * e.g. failing the procedure if the state on replay may be unknown.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   */<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  protected void beforeReplay(final TEnvironment env) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    // no-op<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>  /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   * Called when the procedure is ready to be added to the queue after<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   * the loading/replay operation.<a name="line.249"></a>
-<span class="sourceLineNo">250</span>   */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  protected void afterReplay(final TEnvironment env) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    // no-op<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  }<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>  /**<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   * Called when the procedure is marked as completed (success or rollback).<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * The procedure implementor may use this method to cleanup in-memory states.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   * This operation will not be retried on failure. If a procedure took a lock,<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   * it will have been released when this method runs.<a name="line.259"></a>
-<span class="sourceLineNo">260</span>   */<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  protected void completionCleanup(final TEnvironment env) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    // no-op<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>   * By default, the procedure framework/executor will try to run procedures start to finish.<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * Return true to make the executor yield between each execution step to<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   * give other procedures a chance to run.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>   * @param env the environment passed to the ProcedureExecutor<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * @return Return true if the executor should yield on completion of an execution step.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   *         Defaults to return false.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   */<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  protected boolean isYieldAfterExecutionStep(final TEnvironment env) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    return false;<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>   * By default, the executor will keep the procedure result around util<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * the eviction TTL is expired. The client can cut down the waiting time<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * by requesting that the result is removed from the executor.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * In case of system started procedure, we can force the executor to auto-ack.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   * @param env the environment passed to the ProcedureExecutor<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * @return true if the executor should wait the client ack for the result.<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   *         Defaults to return true.<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   */<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  protected boolean shouldWaitClientAck(final TEnvironment env) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    return true;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>  /**<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * Override this method to provide procedure specific counters for submitted count, failed<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * count and time histogram.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   * @param env The environment passed to the procedure executor<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * @return Container object for procedure related metric<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  protected ProcedureMetrics getProcedureMetrics(final TEnvironment env) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    return null;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  }<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>  /**<a name="line.300"></a>
-<span class="sourceLineNo">301</span>   * This function will be called just when procedure is submitted for execution. Override this<a name="line.301"></a>
-<span class="sourceLineNo">302</span>   * method to update the metrics at the beginning of the procedure. The default implementation<a name="line.302"></a>
-<span class="sourceLineNo">303</span>   * updates submitted counter if {@link #getProcedureMetrics(Object)} returns non-null<a name="line.303"></a>
-<span class="sourceLineNo">304</span>   * {@link ProcedureMetrics}.<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   */<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  protected void updateMetricsOnSubmit(final TEnvironment env) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    ProcedureMetrics metrics = getProcedureMetrics(env);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    if (metrics == null) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      return;<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>    Counter submittedCounter = metrics.getSubmittedCounter();<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    if (submittedCounter != null) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      submittedCounter.increment();<a name="line.314"></a>
+<span class="sourceLineNo">120</span>  private volatile int timeout = NO_TIMEOUT;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  private volatile long lastUpdate;<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  private volatile byte[] result = null;<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>   * The main code of the procedure. It must be idempotent since execute()<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   * may be called multiple times in case of machine failure in the middle<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   * of the execution.<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * @param env the environment passed to the ProcedureExecutor<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @return a set of sub-procedures to run or ourselves if there is more work to do or null if the<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * procedure is done.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * @throws ProcedureYieldException the procedure will be added back to the queue and retried later.<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * @throws InterruptedException the procedure will be added back to the queue and retried later.<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   * @throws ProcedureSuspendedException Signal to the executor that Procedure has suspended itself and<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   * has set itself up waiting for an external event to wake it back up again.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   */<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  protected abstract Procedure&lt;TEnvironment&gt;[] execute(TEnvironment env)<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    throws ProcedureYieldException, ProcedureSuspendedException, InterruptedException;<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>   * The code to undo what was done by the execute() code.<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   * It is called when the procedure or one of the sub-procedures failed or an<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * abort was requested. It should cleanup all the resources created by<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * the execute() call. The implementation must be idempotent since rollback()<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * may be called multiple time in case of machine failure in the middle<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   * of the execution.<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * @param env the environment passed to the ProcedureExecutor<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * @throws IOException temporary failure, the rollback will retry later<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * @throws InterruptedException the procedure will be added back to the queue and retried later<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  protected abstract void rollback(TEnvironment env)<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    throws IOException, InterruptedException;<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>   * The abort() call is asynchronous and each procedure must decide how to deal<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * with it, if they want to be abortable. The simplest implementation<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   * is to have an AtomicBoolean set in the abort() method and then the execute()<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * will check if the abort flag is set or not.<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * abort() may be called multiple times from the client, so the implementation<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   * must be idempotent.<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   *<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   * &lt;p&gt;NOTE: abort() is not like Thread.interrupt(). It is just a notification<a name="line.162"></a>
+<span class="sourceLineNo">163</span>   * that allows the procedure implementor abort.<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   */<a name="line.164"></a>
+<span class="sourceLineNo">165</span>  protected abstract boolean abort(TEnvironment env);<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>   * The user-level code of the procedure may have some state to<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * persist (e.g. input arguments or current position in the processing state) to<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * be able to resume on failure.<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * @param serializer stores the serializable state<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  protected abstract void serializeStateData(final ProcedureStateSerializer serializer)<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    throws IOException;<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span>  /**<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   * Called on store load to allow the user to decode the previously serialized<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * state.<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   * @param serializer contains the serialized state<a name="line.179"></a>
+<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  protected abstract void deserializeStateData(final ProcedureStateSerializer serializer)<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    throws IOException;<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>   * The user should override this method if they need a lock on an Entity.<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * A lock can be anything, and it is up to the implementor. The Procedure<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * Framework will call this method just before it invokes {@link #execute(Object)}.<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * It calls {@link #releaseLock(Object)} after the call to execute.<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   *<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * &lt;p&gt;If you need to hold the lock for the life of the Procedure -- i.e. you do not<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * want any other Procedure interfering while this Procedure is running, see<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * {@link #holdLock(Object)}.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   *<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * &lt;p&gt;Example: in our Master we can execute request in parallel for different tables.<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * We can create t1 and create t2 and these creates can be executed at the same time.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * Anything else on t1/t2 is queued waiting that specific table create to happen.<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   *<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * &lt;p&gt;There are 3 LockState:<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * &lt;ul&gt;&lt;li&gt;LOCK_ACQUIRED should be returned when the proc has the lock and the proc is<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * ready to execute.&lt;/li&gt;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * &lt;li&gt;LOCK_YIELD_WAIT should be returned when the proc has not the lock and the framework<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   * should take care of readding the procedure back to the runnable set for retry&lt;/li&gt;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   * &lt;li&gt;LOCK_EVENT_WAIT should be returned when the proc has not the lock and someone will<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   * take care of readding the procedure back to the runnable set when the lock is available.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * &lt;/li&gt;&lt;/ul&gt;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   * @return the lock state as described above.<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   */<a name="line.207"></a>
+<span class="sourceLineNo">208</span>  protected LockState acquireLock(final TEnvironment env) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    return LockState.LOCK_ACQUIRED;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  }<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>  /**<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   * The user should override this method, and release lock if necessary.<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   */<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  protected void releaseLock(final TEnvironment env) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    // no-op<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  }<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>  /**<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   * Used to keep the procedure lock even when the procedure is yielding or suspended.<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   * Must implement {@link #hasLock(Object)} if you want to hold the lock for life<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   * of the Procedure.<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * @see #hasLock(Object)<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @return true if the procedure should hold on the lock until completionCleanup()<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   */<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  protected boolean holdLock(final TEnvironment env) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    return false;<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>   * This is used in conjunction with {@link #holdLock(Object)}. If {@link #holdLock(Object)}<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * returns true, the procedure executor will call acquireLock() once and thereafter<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * not call {@link #releaseLock(Object)} until the Procedure is done (Normally, it calls<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * release/acquire around each invocation of {@link #execute(Object)}.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @see #holdLock(Object)<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   * @return true if the procedure has the lock, false otherwise.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   */<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  protected boolean hasLock(final TEnvironment env) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return false;<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>   * Called when the procedure is loaded for replay.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * The procedure implementor may use this method to perform some quick<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * operation before replay.<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   * e.g. failing the procedure if the state on replay may be unknown.<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   */<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  protected void beforeReplay(final TEnvironment env) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    // no-op<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>  /**<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   * Called when the procedure is ready to be added to the queue after<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * the loading/replay operation.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   */<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  protected void afterReplay(final TEnvironment env) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    // no-op<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>   * Called when the procedure is marked as completed (success or rollback).<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * The procedure implementor may use this method to cleanup in-memory states.<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * This operation will not be retried on failure. If a procedure took a lock,<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   * it will have been released when this method runs.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>   */<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  protected void completionCleanup(final TEnvironment env) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    // no-op<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  }<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>  /**<a name="line.270"></a>
+<span class="sourceLineNo">271</span>   * By default, the procedure framework/executor will try to run procedures start to finish.<a name="line.271"></a>
+<span class="sourceLineNo">272</span>   * Return true to make the executor yield between each execution step to<a name="line.272"></a>
+<span class="sourceLineNo">273</span>   * give other procedures a chance to run.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>   * @param env the environment passed to the ProcedureExecutor<a name="line.274"></a>
+<span class="sourceLineNo">275</span>   * @return Return true if the executor should yield on completion of an execution step.<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   *         Defaults to return false.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>   */<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  protected boolean isYieldAfterExecutionStep(final TEnvironment env) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    return false;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  /**<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * By default, the executor will keep the procedure result around util<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * the eviction TTL is expired. The client can cut down the waiting time<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   * by requesting that the result is removed from the executor.<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * In case of system started procedure, we can force the executor to auto-ack.<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * @param env the environment passed to the ProcedureExecutor<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * @return true if the executor should wait the client ack for the result.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   *         Defaults to return true.<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   */<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  protected boolean shouldWaitClientAck(final TEnvironment env) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    return true;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  /**<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * Override this method to provide procedure specific counters for submitted count, failed<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * count and time histogram.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * @param env The environment passed to the procedure executor<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * @return Container object for procedure related metric<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   */<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  protected ProcedureMetrics getProcedureMetrics(final TEnvironment env) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    return null;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>  /**<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   * This function will be called just when procedure is submitted for execution. Override this<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   * method to update the metrics at the beginning of the procedure. The default implementation<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   * updates submitted counter if {@link #getProcedureMetrics(Object)} returns non-null<a name="line.308"></a>
+<span class="sourceLineNo">309</span>   * {@link ProcedureMetrics}.<a name="line.309"></a>
+<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  protected void updateMetricsOnSubmit(final TEnvironment env) {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    ProcedureMetrics metrics = getProcedureMetrics(env);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    if (metrics == null) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      return;<a name="line.314"></a>
 <span class="sourceLineNo">315</span>    }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  }<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  /**<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * This function will be called just after procedure execution is finished. Override this method<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * to update metrics at the end of the procedure. If {@link #getProcedureMetrics(Object)}<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * returns non-null {@link ProcedureMetrics}, the default implementation adds runtime of a<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   * procedure to a time histogram for successfully completed procedures. Increments failed<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   * counter for failed procedures.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>   *<a name="line.324"></a>
-<span class="sourceLineNo">325</span>   * TODO: As any of the sub-procedures on failure rolls back all procedures in the stack,<a name="line.325"></a>
-<span class="sourceLineNo">326</span>   * including successfully finished siblings, this function may get called twice in certain<a name="line.326"></a>
-<span class="sourceLineNo">327</span>   * cases for certain procedures. Explore further if this can be called once.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   *<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   * @param env The environment passed to the procedure executor<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * @param runtime Runtime of the procedure in milliseconds<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @param success true if procedure is completed successfully<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   */<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  protected void updateMetricsOnFinish(final TEnvironment env, final long runtime,<a name="line.333"></a>
-<span class="sourceLineNo">334</span>                                       boolean success) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    ProcedureMetrics metrics = getProcedureMetrics(env);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    if (metrics == null) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      return;<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>    if (success) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      Histogram timeHisto = metrics.getTimeHisto();<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      if (timeHisto != null) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        timeHisto.update(runtime);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    } else {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      Counter failedCounter = metrics.getFailedCounter();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      if (failedCounter != null) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        failedCounter.increment();<a name="line.348"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>    Counter submittedCounter = metrics.getSubmittedCounter();<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    if (submittedCounter != null) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      submittedCounter.increment();<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    }<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  /**<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   * This function will be called just after procedure execution is finished. Override this method<a name="line.324"></a>
+<span class="sourceLineNo">325</span>   * to update metrics at the end of the procedure. If {@link #getProcedureMetrics(Object)}<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   * returns non-null {@link ProcedureMetrics}, the default implementation adds runtime of a<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * procedure to a time histogram for successfully completed procedures. Increments failed<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * counter for failed procedures.<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   *<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * TODO: As any of the sub-procedures on failure rolls back all procedures in the stack,<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   * including successfully finished siblings, this function may get called twice in certain<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   * cases for certain procedures. Explore further if this can be called once.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   *<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   * @param env The environment passed to the procedure executor<a name="line.334"></a>
+<span class="sourceLineNo">335</span>   * @param runtime Runtime of the procedure in milliseconds<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * @param success true if procedure is completed successfully<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  protected void updateMetricsOnFinish(final TEnvironment env, final long runtime,<a name="line.338"></a>
+<span class="sourceLineNo">339</span>                                       boolean success) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    ProcedureMetrics metrics = getProcedureMetrics(env);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    if (metrics == null) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      return;<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>    if (success) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      Histogram timeHisto = metrics.getTimeHisto();<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      if (timeHisto != null) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        timeHisto.update(runtime);<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>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  @Override<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  public String toString() {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    // Return the simple String presentation of the procedure.<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    return toStringSimpleSB().toString();<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>  /**<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   * Build the StringBuilder for the simple form of<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   * procedure string.<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * @return the StringBuilder<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   */<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  protected StringBuilder toStringSimpleSB() {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    final StringBuilder sb = new StringBuilder();<a name="line.365"></a>
-<span class="sourceLineNo">366</span><a name="line.366"></a>
-<span class="sourceLineNo">367</span>    sb.append("pid=");<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    sb.append(getProcId());<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>    if (hasParent()) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      sb.append(", ppid=");<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      sb.append(getParentProcId());<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
+<span class="sourceLineNo">350</span>    } else {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      Counter failedCounter = metrics.getFailedCounter();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      if (failedCounter != null) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        failedCounter.increment();<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 String toString() {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    // Return the simple String presentation of the procedure.<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    return toStringSimpleSB().toString();<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  /**<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * Build the StringBuilder for the simple form of<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * procedure string.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   * @return the StringBuilder<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   */<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  protected StringBuilder toStringSimpleSB() {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    final StringBuilder sb = new StringBuilder();<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    sb.append("pid=");<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    sb.append(getProcId());<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>     * TODO<a name="line.376"></a>
-<span class="sourceLineNo">377</span>     * Enable later when this is being used.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>     * Currently owner not used.<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    if (hasOwner()) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      sb.append(", owner=");<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      sb.append(getOwner());<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    }*/<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    sb.append(", state="); // pState for Procedure State as opposed to any other kind.<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    toStringState(sb);<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>    if (hasException()) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      sb.append(", exception=" + getException());<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>    sb.append("; ");<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    toStringClassDetails(sb);<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    return sb;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  /**<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * Extend the toString() information with more procedure<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * details<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   */<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  public String toStringDetails() {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    final StringBuilder sb = toStringSimpleSB();<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>    sb.append(" submittedTime=");<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    sb.append(getSubmittedTime());<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    sb.append(", lastUpdate=");<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    sb.append(getLastUpdate());<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>    final int[] stackIndices = getStackIndexes();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    if (stackIndices != null) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      sb.append("\n");<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      sb.append("stackIndexes=");<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      sb.append(Arrays.toString(stackIndices));<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>    return sb.toString();<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>  protected String toStringClass() {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    StringBuilder sb = new StringBuilder();<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    toStringClassDetails(sb);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    return sb.toString();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  /**<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * Called from {@link #toString()} when interpolating {@link Procedure} State.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * Allows decorating generic Procedure State with Procedure particulars.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param builder Append current {@link ProcedureState}<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  protected void toStringState(StringBuilder builder) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    builder.append(getState());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  }<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /**<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * Extend the toString() information with the procedure details<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * e.g. className and parameters<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param builder the string builder to use to append the proc specific information<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   */<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  protected void toStringClassDetails(StringBuilder builder) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    builder.append(getClass().getName());<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  }<a name="line.442"></a>
-<span class="sourceLineNo">443</span><a name="line.443"></a>
-<span class="sourceLineNo">444</span>  // ==========================================================================<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  //  Those fields are unchanged after initialization.<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  //<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  //  Each procedure will get created from the user or during<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  //  ProcedureExecutor.start() during the load() phase and then submitted<a name="line.448"></a>
-<span class="sourceLineNo">449</span>  //  to the executor. these fields will never be changed after initialization<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  // ==========================================================================<a name="line.450"></a>
-<span class="sourceLineNo">451</span>  public long getProcId() {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    return procId;<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>  public boolean hasParent() {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    return parentProcId != NO_PROC_ID;<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public long getParentProcId() {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    return parentProcId;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  public long getRootProcId() {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    return rootProcId;<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>  public String getProcName() {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    return toStringClass();<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>  public NonceKey getNonceKey() {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return nonceKey;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  public long getSubmittedTime() {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    return submittedTime;<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public String getOwner() {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    return owner;<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>  public boolean hasOwner() {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    return owner != null;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  }<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>  /**<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * Called by the ProcedureExecutor to assign the ID to the newly created procedure.<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  @VisibleForTesting<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  @InterfaceAudience.Private<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  protected void setProcId(final long procId) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.procId = procId;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    this.submittedTime = EnvironmentEdgeManager.currentTime();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    setState(ProcedureState.RUNNABLE);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>  /**<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * Called by the ProcedureExecutor to assign the parent to the newly created procedure.<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  @InterfaceAudience.Private<a name="line.501"></a>
-<span class="sourceLineNo">502</span>  protected void setParentProcId(final long parentProcId) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    this.parentProcId = parentProcId;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  }<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
+<span class="sourceLineNo">375</span>    if (hasParent()) {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      sb.append(", ppid=");<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      sb.append(getParentProcId());<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    }<a name="line.378"></a>
+<span class="sourceLineNo">379</span><a name="line.379"></a>
+<span class="sourceLineNo">380</span>    /**<a name="line.380"></a>
+<span class="sourceLineNo">381</span>     * TODO<a name="line.381"></a>
+<span class="sourceLineNo">382</span>     * Enable later when this is being used.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>     * Currently owner not used.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    if (hasOwner()) {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      sb.append(", owner=");<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      sb.append(getOwner());<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>    sb.append(", state="); // pState for Procedure State as opposed to any other kind.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    toStringState(sb);<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>    if (hasException()) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      sb.append(", exception=" + getException());<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>    sb.append("; ");<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    toStringClassDetails(sb);<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>    return sb;<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>   * Extend the toString() information with more procedure<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * details<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  public String toStringDetails() {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    final StringBuilder sb = toStringSimpleSB();<a name="line.407"></a>
+<span class="sourceLineNo">408</span><a name="line.408"></a>
+<span class="sourceLineNo">409</span>    sb.append(" submittedTime=");<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    sb.append(getSubmittedTime());<a name="line.410"></a>
+<span class="sourceLineNo">411</span><a name="line.411"></a>
+<span class="sourceLineNo">412</span>    sb.append(", lastUpdate=");<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    sb.append(getLastUpdate());<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>    final int[] stackIndices = getStackIndexes();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    if (stackIndices != null) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      sb.append("\n");<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      sb.append("stackIndexes=");<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      sb.append(Arrays.toString(stackIndices));<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>    return sb.toString();<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>  protected String toStringClass() {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    StringBuilder sb = new StringBuilder();<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    toStringClassDetails(sb);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    return sb.toString();<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>  /**<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * Called from {@link #toString()} when interpolating {@link Procedure} State.<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * Allows decorating generic Procedure State with Procedure particulars.<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * @param builder Append current {@link ProcedureState}<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   */<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  protected void toStringState(StringBuilder builder) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    builder.append(getState());<a name="line.437"></a>
+<span class="sourceLineNo">438</span>  }<a name="line.438"></a>
+<span class="sourceLineNo">439</span><a name="line.439"></a>
+<span class="sourceLineNo">440</span>  /**<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   * Extend the toString() information with the procedure details<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   * e.g. className and parameters<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   * @param builder the string builder to use to append the proc specific information<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   */<a name="line.444"></a>
+<span class="sourceLineNo">445</span>  protected void toStringClassDetails(StringBuilder builder) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    builder.append(getClass().getName());<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>  //  Those fields are unchanged after initialization.<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  //<a name="line.451"></a>
+<span class="sourceLineNo">452</span>  //  Each procedure will get created from the user or during<a name="line.452"></a>
+<span class="sourceLineNo">453</span>  //  ProcedureExecutor.start() during the load() phase and then submitted<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  //  to the executor. these fields will never be changed after initialization<a name="line.454"></a>
+<span class="sourceLineNo">455</span>  // ==========================================================================<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  public long getProcId() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    return procId;<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>  public boolean hasParent() {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    return parentProcId != NO_PROC_ID;<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>  public long getParentProcId() {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    return parentProcId;<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>  public long getRootProcId() {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    return rootProcId;<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  public String getProcName() {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    return toStringClass();<a name="line.473"></a>
+<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>  public NonceKey getNonceKey() {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    return nonceKey;<a name="line.477"></a>
+<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
+<span class="sourceLineNo">479</span><a name="line.479"></a>
+<span class="sourceLineNo">480</span>  public long getSubmittedTime() {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    return submittedTime;<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>  public String getOwner() {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    return owner;<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>  public boolean hasOwner() {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    return owner != null;<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>   * Called by the ProcedureExecutor to assign the ID to the newly created procedure.<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   */<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  @VisibleForTesting<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  @InterfaceAudience.Private<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  protected void setProcId(final long procId) {<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    this.procId = procId;<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    this.submittedTime = EnvironmentEdgeManager.currentTime();<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    setState(ProcedureState.RUNNABLE);<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>  /**<a name="line.503"></a>
+<span class="sourceLineNo">504</span>   * Called by the ProcedureExecutor to assign the parent to the newly created procedure.<a name="line.504"></a>
+<span class="sourceLineNo">505</span>   */<a name="line.505"></a>
 <span class="sourceLineNo">506</span>  @InterfaceAudience.Private<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  protected void setRootProcId(final long rootProcId) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    this.rootProcId = rootProcId;<a name="line.508"></a>
+<span class="sourceLineNo">507</span>  protected void setParentProcId(final long parentProcId) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    this.parentProcId = parentProcId;<a name="line.508"></a>
 <span class="sourceLineNo">509</span>  }<a name="line.509"></a>
 <span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  /**<a name="line.511"></a>
-<span class="sourceLineNo">512</span>   * Called by the ProcedureExecutor to set the value to the newly created procedure.<a name="line.512"></a>
-<span class="sourceLineNo">513</span>   */<a name="line.513"></a>
-<span class="sourceLineNo">514</span>  @VisibleForTesting<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  @InterfaceAudience.Private<a name="line.515"></a>
-<span class="sourceLineNo">516</span>  protected void setNonceKey(final NonceKey nonceKey) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    this.nonceKey = nonceKey;<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>  @VisibleForTesting<a name="line.520"></a>
-<span class="sourceLineNo">521</span>  @InterfaceAudience.Private<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  public void setOwner(final String owner) {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    this.owner = StringUtils.isEmpty(owner) ? null : owner;<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>  public void setOwner(final User owner) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    assert owner != null : "expected owner to be not null";<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    setOwner(owner.getShortName());<a name="line.528"></a>
+<span class="sourceLineNo">511</span>  @InterfaceAudience.Private<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  protected void setRootProcId(final long rootProcId) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    this.rootProcId = rootProcId;<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 name="line.516"></a>
+<span class="sourceLineNo">517</span>   * Called by the ProcedureExecutor to set the value to the newly created procedure.<a name="line.517"></a>
+<span class="sourceLineNo">518</span>   */<a name="line.518"></a>
+<span class="sourceLineNo">519</span>  @VisibleForTesting<a name="line.519"></a>
+<span class="sourceLineNo">520</span>  @InterfaceAudience.Private<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  protected void setNonceKey(final NonceKey nonceKey) {<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    this.nonceKey = nonceKey;<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
+<span class="sourceLineNo">524</span><a name="line.524"></a>
+<span class="sourceLineNo">525</span>  @VisibleForTesting<a name="line.525"></a>
+<span class="sourceLineNo">526</span>  @InterfaceAudience.Private<a name="line.526"></a>
+<span class="sourceLineNo">527</span>  public void setOwner(final String owner) {<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    this.owner = StringUtils.isEmpty(owner) ? null : owner;<a name="line.528"></a>
 <span class="sourceLineNo">529</span>  }<a name="line.529"></a>
 <span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>  /**<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * Called on store load to initialize the Procedure internals after<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * the creation/deserialization.<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   */<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  @InterfaceAudience.Private<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  protected void setSubmittedTime(final long submittedTime) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    this.submittedTime = submittedTime;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>  }<a name="line.538"></a>
-<span class="sourceLineNo">539</span><a name="line.539"></a>
-<span class="sourceLineNo">540</span>  // ==========================================================================<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  //  runtime state - timeout related<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>   * @param timeout timeout interval in msec<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   */<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  protected void setTimeout(final int timeout) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    this.timeout = timeout;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>  }<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>  public boolean hasTimeout() {<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    return timeout != NO_TIMEOUT;<a name="line.551"></a>
-<span class="sourceLineNo">552</span>  }<a name="line.552"></a>
-<s

<TRUNCATED>

[06/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html
index dcc1cc1..6be6b66 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html
@@ -32,157 +32,173 @@
 <span class="sourceLineNo">024</span>import org.slf4j.Logger;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.slf4j.LoggerFactory;<a name="line.25"></a>
 <span class="sourceLineNo">026</span><a name="line.26"></a>
-<span class="sourceLineNo">027</span>@InterfaceAudience.Private<a name="line.27"></a>
-<span class="sourceLineNo">028</span>public class RetryCounter {<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>  /**<a name="line.30"></a>
-<span class="sourceLineNo">031</span>   *  Configuration for a retry counter<a name="line.31"></a>
-<span class="sourceLineNo">032</span>   */<a name="line.32"></a>
-<span class="sourceLineNo">033</span>  public static class RetryConfig {<a name="line.33"></a>
-<span class="sourceLineNo">034</span>    private int maxAttempts;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>    private long sleepInterval;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>    private long maxSleepTime;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>    private TimeUnit timeUnit;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>    private BackoffPolicy backoffPolicy;<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>    private static final BackoffPolicy DEFAULT_BACKOFF_POLICY = new ExponentialBackoffPolicy();<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>    public RetryConfig() {<a name="line.42"></a>
-<span class="sourceLineNo">043</span>      maxAttempts    = 1;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>      sleepInterval = 1000;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>      maxSleepTime  = -1;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>      timeUnit = TimeUnit.MILLISECONDS;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>      backoffPolicy = DEFAULT_BACKOFF_POLICY;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    }<a name="line.48"></a>
+<span class="sourceLineNo">027</span>/**<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * Operation retry accounting.<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * Use to calculate wait period, {@link #getBackoffTimeAndIncrementAttempts()}}, or for performing<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * wait, {@link #sleepUntilNextRetry()}, in accordance with a {@link RetryConfig}, initial<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * settings, and a Retry Policy, (See org.apache.hadoop.io.retry.RetryPolicy).<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * Like &lt;a href=https://github.com/rholder/guava-retrying&gt;guava-retrying&lt;/a&gt;.<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @since 0.92.0<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see RetryCounterFactory<a name="line.34"></a>
+<span class="sourceLineNo">035</span> */<a name="line.35"></a>
+<span class="sourceLineNo">036</span>@InterfaceAudience.Private<a name="line.36"></a>
+<span class="sourceLineNo">037</span>public class RetryCounter {<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  /**<a name="line.38"></a>
+<span class="sourceLineNo">039</span>   *  Configuration for a retry counter<a name="line.39"></a>
+<span class="sourceLineNo">040</span>   */<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  public static class RetryConfig {<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    private int maxAttempts;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    private long sleepInterval;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>    private long maxSleepTime;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>    private TimeUnit timeUnit;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>    private BackoffPolicy backoffPolicy;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>    private static final BackoffPolicy DEFAULT_BACKOFF_POLICY = new ExponentialBackoffPolicy();<a name="line.48"></a>
 <span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>    public RetryConfig(int maxAttempts, long sleepInterval, long maxSleepTime,<a name="line.50"></a>
-<span class="sourceLineNo">051</span>        TimeUnit timeUnit, BackoffPolicy backoffPolicy) {<a name="line.51"></a>
-<span class="sourceLineNo">052</span>      this.maxAttempts = maxAttempts;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>      this.sleepInterval = sleepInterval;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>      this.maxSleepTime = maxSleepTime;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>      this.timeUnit = timeUnit;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>      this.backoffPolicy = backoffPolicy;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    }<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>    public RetryConfig setBackoffPolicy(BackoffPolicy backoffPolicy) {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>      this.backoffPolicy = backoffPolicy;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      return this;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    }<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>    public RetryConfig setMaxAttempts(int maxAttempts) {<a name="line.64"></a>
-<span class="sourceLineNo">065</span>      this.maxAttempts = maxAttempts;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      return this;<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>    public RetryConfig setMaxSleepTime(long maxSleepTime) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      this.maxSleepTime = maxSleepTime;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      return this;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    }<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>    public RetryConfig setSleepInterval(long sleepInterval) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      this.sleepInterval = sleepInterval;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      return this;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    }<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public RetryConfig setTimeUnit(TimeUnit timeUnit) {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      this.timeUnit = timeUnit;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return this;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public int getMaxAttempts() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      return maxAttempts;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    public long getMaxSleepTime() {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      return maxSleepTime;<a name="line.89"></a>
+<span class="sourceLineNo">050</span>    public RetryConfig() {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>      maxAttempts    = 1;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>      sleepInterval = 1000;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>      maxSleepTime  = -1;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>      timeUnit = TimeUnit.MILLISECONDS;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>      backoffPolicy = DEFAULT_BACKOFF_POLICY;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    }<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>    public RetryConfig(int maxAttempts, long sleepInterval, long maxSleepTime,<a name="line.58"></a>
+<span class="sourceLineNo">059</span>        TimeUnit timeUnit, BackoffPolicy backoffPolicy) {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      this.maxAttempts = maxAttempts;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      this.sleepInterval = sleepInterval;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>      this.maxSleepTime = maxSleepTime;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>      this.timeUnit = timeUnit;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>      this.backoffPolicy = backoffPolicy;<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>    public RetryConfig setBackoffPolicy(BackoffPolicy backoffPolicy) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      this.backoffPolicy = backoffPolicy;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      return this;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    }<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>    public RetryConfig setMaxAttempts(int maxAttempts) {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      this.maxAttempts = maxAttempts;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      return this;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    }<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>    public RetryConfig setMaxSleepTime(long maxSleepTime) {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      this.maxSleepTime = maxSleepTime;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      return this;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>    public RetryConfig setSleepInterval(long sleepInterval) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      this.sleepInterval = sleepInterval;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      return this;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    }<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>    public RetryConfig setTimeUnit(TimeUnit timeUnit) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      this.timeUnit = timeUnit;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      return this;<a name="line.89"></a>
 <span class="sourceLineNo">090</span>    }<a name="line.90"></a>
 <span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    public long getSleepInterval() {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      return sleepInterval;<a name="line.93"></a>
+<span class="sourceLineNo">092</span>    public int getMaxAttempts() {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      return maxAttempts;<a name="line.93"></a>
 <span class="sourceLineNo">094</span>    }<a name="line.94"></a>
 <span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public TimeUnit getTimeUnit() {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      return timeUnit;<a name="line.97"></a>
+<span class="sourceLineNo">096</span>    public long getMaxSleepTime() {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      return maxSleepTime;<a name="line.97"></a>
 <span class="sourceLineNo">098</span>    }<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>    public BackoffPolicy getBackoffPolicy() {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      return backoffPolicy;<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    public long getSleepInterval() {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      return sleepInterval;<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>   * Policy for calculating sleeping intervals between retry attempts<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  public static class BackoffPolicy {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      return config.getSleepInterval();<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>  public static class ExponentialBackoffPolicy extends BackoffPolicy {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    @Override<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      long backoffTime = (long) (config.getSleepInterval() * Math.pow(2, attempts));<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      return backoffTime;<a name="line.118"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>    public TimeUnit getTimeUnit() {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      return timeUnit;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>    public BackoffPolicy getBackoffPolicy() {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      return backoffPolicy;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    }<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * Policy for calculating sleeping intervals between retry attempts<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public static class BackoffPolicy {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      return config.getSleepInterval();<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    }<a name="line.119"></a>
 <span class="sourceLineNo">120</span>  }<a name="line.120"></a>
 <span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static class ExponentialBackoffPolicyWithLimit extends ExponentialBackoffPolicy {<a name="line.122"></a>
+<span class="sourceLineNo">122</span>  public static class ExponentialBackoffPolicy extends BackoffPolicy {<a name="line.122"></a>
 <span class="sourceLineNo">123</span>    @Override<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      long backoffTime = super.getBackoffTime(config, attempts);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      return config.getMaxSleepTime() &gt; 0 ? Math.min(backoffTime, config.getMaxSleepTime()) : backoffTime;<a name="line.126"></a>
+<span class="sourceLineNo">125</span>      long backoffTime = (long) (config.getSleepInterval() * Math.pow(2, attempts));<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      return backoffTime;<a name="line.126"></a>
 <span class="sourceLineNo">127</span>    }<a name="line.127"></a>
 <span class="sourceLineNo">128</span>  }<a name="line.128"></a>
 <span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static final Logger LOG = LoggerFactory.getLogger(RetryCounter.class);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private RetryConfig retryConfig;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private int attempts;<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  public RetryCounter(int maxAttempts, long sleepInterval, TimeUnit timeUnit) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    this(new RetryConfig(maxAttempts, sleepInterval, -1, timeUnit, new ExponentialBackoffPolicy()));<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>  public RetryCounter(RetryConfig retryConfig) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    this.attempts = 0;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    this.retryConfig = retryConfig;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  public int getMaxAttempts() {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    return retryConfig.getMaxAttempts();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  }<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>  /**<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * Sleep for a back off time as supplied by the backoff policy, and increases the attempts<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @throws InterruptedException<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   */<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public void sleepUntilNextRetry() throws InterruptedException {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    int attempts = getAttemptTimes();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    long sleepTime = retryConfig.backoffPolicy.getBackoffTime(retryConfig, attempts);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    if (LOG.isTraceEnabled()) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      LOG.trace("Sleeping " + sleepTime + "ms before retry #" + attempts + "...");<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    retryConfig.getTimeUnit().sleep(sleepTime);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    useRetry();<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 boolean shouldRetry() {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return attempts &lt; retryConfig.getMaxAttempts();<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public void useRetry() {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    attempts++;<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>  public boolean isRetry() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    return attempts &gt; 0;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public int getAttemptTimes() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    return attempts;<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">130</span>  public static class ExponentialBackoffPolicyWithLimit extends ExponentialBackoffPolicy {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    @Override<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      long backoffTime = super.getBackoffTime(config, attempts);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      return config.getMaxSleepTime() &gt; 0 ? Math.min(backoffTime, config.getMaxSleepTime()) : backoffTime;<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>  private static final Logger LOG = LoggerFactory.getLogger(RetryCounter.class);<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private RetryConfig retryConfig;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private int attempts;<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  public RetryCounter(int maxAttempts, long sleepInterval, TimeUnit timeUnit) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    this(new RetryConfig(maxAttempts, sleepInterval, -1, timeUnit, new ExponentialBackoffPolicy()));<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 RetryCounter(RetryConfig retryConfig) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    this.attempts = 0;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    this.retryConfig = retryConfig;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public int getMaxAttempts() {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    return retryConfig.getMaxAttempts();<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>   * Sleep for a back off time as supplied by the backoff policy, and increases the attempts<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * @throws InterruptedException<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   */<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  public void sleepUntilNextRetry() throws InterruptedException {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    int attempts = getAttemptTimes();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    long sleepTime = getBackoffTime();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    LOG.trace("Sleeping {} ms before retry #{}...", sleepTime, attempts);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    retryConfig.getTimeUnit().sleep(sleepTime);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    useRetry();<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>  public boolean shouldRetry() {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    return attempts &lt; retryConfig.getMaxAttempts();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public void useRetry() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    attempts++;<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>  public boolean isRetry() {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return attempts &gt; 0;<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>  public int getAttemptTimes() {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    return attempts;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  public long getBackoffTime() {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    return this.retryConfig.backoffPolicy.getBackoffTime(this.retryConfig, getAttemptTimes());<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>  public long getBackoffTimeAndIncrementAttempts() {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    long backoffTime = getBackoffTime();<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    useRetry();<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    return backoffTime;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>}<a name="line.193"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html
index dcc1cc1..6be6b66 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html
@@ -32,157 +32,173 @@
 <span class="sourceLineNo">024</span>import org.slf4j.Logger;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.slf4j.LoggerFactory;<a name="line.25"></a>
 <span class="sourceLineNo">026</span><a name="line.26"></a>
-<span class="sourceLineNo">027</span>@InterfaceAudience.Private<a name="line.27"></a>
-<span class="sourceLineNo">028</span>public class RetryCounter {<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>  /**<a name="line.30"></a>
-<span class="sourceLineNo">031</span>   *  Configuration for a retry counter<a name="line.31"></a>
-<span class="sourceLineNo">032</span>   */<a name="line.32"></a>
-<span class="sourceLineNo">033</span>  public static class RetryConfig {<a name="line.33"></a>
-<span class="sourceLineNo">034</span>    private int maxAttempts;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>    private long sleepInterval;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>    private long maxSleepTime;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>    private TimeUnit timeUnit;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>    private BackoffPolicy backoffPolicy;<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>    private static final BackoffPolicy DEFAULT_BACKOFF_POLICY = new ExponentialBackoffPolicy();<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>    public RetryConfig() {<a name="line.42"></a>
-<span class="sourceLineNo">043</span>      maxAttempts    = 1;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>      sleepInterval = 1000;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>      maxSleepTime  = -1;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>      timeUnit = TimeUnit.MILLISECONDS;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>      backoffPolicy = DEFAULT_BACKOFF_POLICY;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    }<a name="line.48"></a>
+<span class="sourceLineNo">027</span>/**<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * Operation retry accounting.<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * Use to calculate wait period, {@link #getBackoffTimeAndIncrementAttempts()}}, or for performing<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * wait, {@link #sleepUntilNextRetry()}, in accordance with a {@link RetryConfig}, initial<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * settings, and a Retry Policy, (See org.apache.hadoop.io.retry.RetryPolicy).<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * Like &lt;a href=https://github.com/rholder/guava-retrying&gt;guava-retrying&lt;/a&gt;.<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @since 0.92.0<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see RetryCounterFactory<a name="line.34"></a>
+<span class="sourceLineNo">035</span> */<a name="line.35"></a>
+<span class="sourceLineNo">036</span>@InterfaceAudience.Private<a name="line.36"></a>
+<span class="sourceLineNo">037</span>public class RetryCounter {<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  /**<a name="line.38"></a>
+<span class="sourceLineNo">039</span>   *  Configuration for a retry counter<a name="line.39"></a>
+<span class="sourceLineNo">040</span>   */<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  public static class RetryConfig {<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    private int maxAttempts;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    private long sleepInterval;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>    private long maxSleepTime;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>    private TimeUnit timeUnit;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>    private BackoffPolicy backoffPolicy;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>    private static final BackoffPolicy DEFAULT_BACKOFF_POLICY = new ExponentialBackoffPolicy();<a name="line.48"></a>
 <span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>    public RetryConfig(int maxAttempts, long sleepInterval, long maxSleepTime,<a name="line.50"></a>
-<span class="sourceLineNo">051</span>        TimeUnit timeUnit, BackoffPolicy backoffPolicy) {<a name="line.51"></a>
-<span class="sourceLineNo">052</span>      this.maxAttempts = maxAttempts;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>      this.sleepInterval = sleepInterval;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>      this.maxSleepTime = maxSleepTime;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>      this.timeUnit = timeUnit;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>      this.backoffPolicy = backoffPolicy;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    }<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>    public RetryConfig setBackoffPolicy(BackoffPolicy backoffPolicy) {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>      this.backoffPolicy = backoffPolicy;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      return this;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    }<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>    public RetryConfig setMaxAttempts(int maxAttempts) {<a name="line.64"></a>
-<span class="sourceLineNo">065</span>      this.maxAttempts = maxAttempts;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      return this;<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>    public RetryConfig setMaxSleepTime(long maxSleepTime) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      this.maxSleepTime = maxSleepTime;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      return this;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    }<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>    public RetryConfig setSleepInterval(long sleepInterval) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      this.sleepInterval = sleepInterval;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      return this;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    }<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public RetryConfig setTimeUnit(TimeUnit timeUnit) {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      this.timeUnit = timeUnit;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return this;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public int getMaxAttempts() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      return maxAttempts;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    public long getMaxSleepTime() {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      return maxSleepTime;<a name="line.89"></a>
+<span class="sourceLineNo">050</span>    public RetryConfig() {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>      maxAttempts    = 1;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>      sleepInterval = 1000;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>      maxSleepTime  = -1;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>      timeUnit = TimeUnit.MILLISECONDS;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>      backoffPolicy = DEFAULT_BACKOFF_POLICY;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    }<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>    public RetryConfig(int maxAttempts, long sleepInterval, long maxSleepTime,<a name="line.58"></a>
+<span class="sourceLineNo">059</span>        TimeUnit timeUnit, BackoffPolicy backoffPolicy) {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      this.maxAttempts = maxAttempts;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      this.sleepInterval = sleepInterval;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>      this.maxSleepTime = maxSleepTime;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>      this.timeUnit = timeUnit;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>      this.backoffPolicy = backoffPolicy;<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>    public RetryConfig setBackoffPolicy(BackoffPolicy backoffPolicy) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      this.backoffPolicy = backoffPolicy;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      return this;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    }<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>    public RetryConfig setMaxAttempts(int maxAttempts) {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      this.maxAttempts = maxAttempts;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      return this;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    }<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>    public RetryConfig setMaxSleepTime(long maxSleepTime) {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      this.maxSleepTime = maxSleepTime;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      return this;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>    public RetryConfig setSleepInterval(long sleepInterval) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      this.sleepInterval = sleepInterval;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      return this;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    }<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>    public RetryConfig setTimeUnit(TimeUnit timeUnit) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      this.timeUnit = timeUnit;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      return this;<a name="line.89"></a>
 <span class="sourceLineNo">090</span>    }<a name="line.90"></a>
 <span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    public long getSleepInterval() {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      return sleepInterval;<a name="line.93"></a>
+<span class="sourceLineNo">092</span>    public int getMaxAttempts() {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      return maxAttempts;<a name="line.93"></a>
 <span class="sourceLineNo">094</span>    }<a name="line.94"></a>
 <span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public TimeUnit getTimeUnit() {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      return timeUnit;<a name="line.97"></a>
+<span class="sourceLineNo">096</span>    public long getMaxSleepTime() {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      return maxSleepTime;<a name="line.97"></a>
 <span class="sourceLineNo">098</span>    }<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>    public BackoffPolicy getBackoffPolicy() {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      return backoffPolicy;<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    public long getSleepInterval() {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      return sleepInterval;<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>   * Policy for calculating sleeping intervals between retry attempts<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  public static class BackoffPolicy {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      return config.getSleepInterval();<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>  public static class ExponentialBackoffPolicy extends BackoffPolicy {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    @Override<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      long backoffTime = (long) (config.getSleepInterval() * Math.pow(2, attempts));<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      return backoffTime;<a name="line.118"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>    public TimeUnit getTimeUnit() {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      return timeUnit;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>    public BackoffPolicy getBackoffPolicy() {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      return backoffPolicy;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    }<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * Policy for calculating sleeping intervals between retry attempts<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public static class BackoffPolicy {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      return config.getSleepInterval();<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    }<a name="line.119"></a>
 <span class="sourceLineNo">120</span>  }<a name="line.120"></a>
 <span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static class ExponentialBackoffPolicyWithLimit extends ExponentialBackoffPolicy {<a name="line.122"></a>
+<span class="sourceLineNo">122</span>  public static class ExponentialBackoffPolicy extends BackoffPolicy {<a name="line.122"></a>
 <span class="sourceLineNo">123</span>    @Override<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      long backoffTime = super.getBackoffTime(config, attempts);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      return config.getMaxSleepTime() &gt; 0 ? Math.min(backoffTime, config.getMaxSleepTime()) : backoffTime;<a name="line.126"></a>
+<span class="sourceLineNo">125</span>      long backoffTime = (long) (config.getSleepInterval() * Math.pow(2, attempts));<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      return backoffTime;<a name="line.126"></a>
 <span class="sourceLineNo">127</span>    }<a name="line.127"></a>
 <span class="sourceLineNo">128</span>  }<a name="line.128"></a>
 <span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static final Logger LOG = LoggerFactory.getLogger(RetryCounter.class);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private RetryConfig retryConfig;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private int attempts;<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  public RetryCounter(int maxAttempts, long sleepInterval, TimeUnit timeUnit) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    this(new RetryConfig(maxAttempts, sleepInterval, -1, timeUnit, new ExponentialBackoffPolicy()));<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>  public RetryCounter(RetryConfig retryConfig) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    this.attempts = 0;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    this.retryConfig = retryConfig;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  public int getMaxAttempts() {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    return retryConfig.getMaxAttempts();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  }<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>  /**<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * Sleep for a back off time as supplied by the backoff policy, and increases the attempts<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @throws InterruptedException<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   */<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public void sleepUntilNextRetry() throws InterruptedException {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    int attempts = getAttemptTimes();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    long sleepTime = retryConfig.backoffPolicy.getBackoffTime(retryConfig, attempts);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    if (LOG.isTraceEnabled()) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      LOG.trace("Sleeping " + sleepTime + "ms before retry #" + attempts + "...");<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    retryConfig.getTimeUnit().sleep(sleepTime);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    useRetry();<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 boolean shouldRetry() {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return attempts &lt; retryConfig.getMaxAttempts();<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public void useRetry() {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    attempts++;<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>  public boolean isRetry() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    return attempts &gt; 0;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public int getAttemptTimes() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    return attempts;<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">130</span>  public static class ExponentialBackoffPolicyWithLimit extends ExponentialBackoffPolicy {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    @Override<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      long backoffTime = super.getBackoffTime(config, attempts);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      return config.getMaxSleepTime() &gt; 0 ? Math.min(backoffTime, config.getMaxSleepTime()) : backoffTime;<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>  private static final Logger LOG = LoggerFactory.getLogger(RetryCounter.class);<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private RetryConfig retryConfig;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private int attempts;<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  public RetryCounter(int maxAttempts, long sleepInterval, TimeUnit timeUnit) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    this(new RetryConfig(maxAttempts, sleepInterval, -1, timeUnit, new ExponentialBackoffPolicy()));<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 RetryCounter(RetryConfig retryConfig) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    this.attempts = 0;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    this.retryConfig = retryConfig;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public int getMaxAttempts() {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    return retryConfig.getMaxAttempts();<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>   * Sleep for a back off time as supplied by the backoff policy, and increases the attempts<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * @throws InterruptedException<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   */<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  public void sleepUntilNextRetry() throws InterruptedException {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    int attempts = getAttemptTimes();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    long sleepTime = getBackoffTime();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    LOG.trace("Sleeping {} ms before retry #{}...", sleepTime, attempts);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    retryConfig.getTimeUnit().sleep(sleepTime);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    useRetry();<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>  public boolean shouldRetry() {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    return attempts &lt; retryConfig.getMaxAttempts();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public void useRetry() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    attempts++;<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>  public boolean isRetry() {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return attempts &gt; 0;<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>  public int getAttemptTimes() {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    return attempts;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  public long getBackoffTime() {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    return this.retryConfig.backoffPolicy.getBackoffTime(this.retryConfig, getAttemptTimes());<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>  public long getBackoffTimeAndIncrementAttempts() {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    long backoffTime = getBackoffTime();<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    useRetry();<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    return backoffTime;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>}<a name="line.193"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html
index dcc1cc1..6be6b66 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html
@@ -32,157 +32,173 @@
 <span class="sourceLineNo">024</span>import org.slf4j.Logger;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.slf4j.LoggerFactory;<a name="line.25"></a>
 <span class="sourceLineNo">026</span><a name="line.26"></a>
-<span class="sourceLineNo">027</span>@InterfaceAudience.Private<a name="line.27"></a>
-<span class="sourceLineNo">028</span>public class RetryCounter {<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>  /**<a name="line.30"></a>
-<span class="sourceLineNo">031</span>   *  Configuration for a retry counter<a name="line.31"></a>
-<span class="sourceLineNo">032</span>   */<a name="line.32"></a>
-<span class="sourceLineNo">033</span>  public static class RetryConfig {<a name="line.33"></a>
-<span class="sourceLineNo">034</span>    private int maxAttempts;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>    private long sleepInterval;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>    private long maxSleepTime;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>    private TimeUnit timeUnit;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>    private BackoffPolicy backoffPolicy;<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>    private static final BackoffPolicy DEFAULT_BACKOFF_POLICY = new ExponentialBackoffPolicy();<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>    public RetryConfig() {<a name="line.42"></a>
-<span class="sourceLineNo">043</span>      maxAttempts    = 1;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>      sleepInterval = 1000;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>      maxSleepTime  = -1;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>      timeUnit = TimeUnit.MILLISECONDS;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>      backoffPolicy = DEFAULT_BACKOFF_POLICY;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    }<a name="line.48"></a>
+<span class="sourceLineNo">027</span>/**<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * Operation retry accounting.<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * Use to calculate wait period, {@link #getBackoffTimeAndIncrementAttempts()}}, or for performing<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * wait, {@link #sleepUntilNextRetry()}, in accordance with a {@link RetryConfig}, initial<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * settings, and a Retry Policy, (See org.apache.hadoop.io.retry.RetryPolicy).<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * Like &lt;a href=https://github.com/rholder/guava-retrying&gt;guava-retrying&lt;/a&gt;.<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @since 0.92.0<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see RetryCounterFactory<a name="line.34"></a>
+<span class="sourceLineNo">035</span> */<a name="line.35"></a>
+<span class="sourceLineNo">036</span>@InterfaceAudience.Private<a name="line.36"></a>
+<span class="sourceLineNo">037</span>public class RetryCounter {<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  /**<a name="line.38"></a>
+<span class="sourceLineNo">039</span>   *  Configuration for a retry counter<a name="line.39"></a>
+<span class="sourceLineNo">040</span>   */<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  public static class RetryConfig {<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    private int maxAttempts;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    private long sleepInterval;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>    private long maxSleepTime;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>    private TimeUnit timeUnit;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>    private BackoffPolicy backoffPolicy;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>    private static final BackoffPolicy DEFAULT_BACKOFF_POLICY = new ExponentialBackoffPolicy();<a name="line.48"></a>
 <span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>    public RetryConfig(int maxAttempts, long sleepInterval, long maxSleepTime,<a name="line.50"></a>
-<span class="sourceLineNo">051</span>        TimeUnit timeUnit, BackoffPolicy backoffPolicy) {<a name="line.51"></a>
-<span class="sourceLineNo">052</span>      this.maxAttempts = maxAttempts;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>      this.sleepInterval = sleepInterval;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>      this.maxSleepTime = maxSleepTime;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>      this.timeUnit = timeUnit;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>      this.backoffPolicy = backoffPolicy;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    }<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>    public RetryConfig setBackoffPolicy(BackoffPolicy backoffPolicy) {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>      this.backoffPolicy = backoffPolicy;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      return this;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    }<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>    public RetryConfig setMaxAttempts(int maxAttempts) {<a name="line.64"></a>
-<span class="sourceLineNo">065</span>      this.maxAttempts = maxAttempts;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      return this;<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>    public RetryConfig setMaxSleepTime(long maxSleepTime) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      this.maxSleepTime = maxSleepTime;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      return this;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    }<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>    public RetryConfig setSleepInterval(long sleepInterval) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      this.sleepInterval = sleepInterval;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      return this;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    }<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public RetryConfig setTimeUnit(TimeUnit timeUnit) {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      this.timeUnit = timeUnit;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return this;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public int getMaxAttempts() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      return maxAttempts;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    public long getMaxSleepTime() {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      return maxSleepTime;<a name="line.89"></a>
+<span class="sourceLineNo">050</span>    public RetryConfig() {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>      maxAttempts    = 1;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>      sleepInterval = 1000;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>      maxSleepTime  = -1;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>      timeUnit = TimeUnit.MILLISECONDS;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>      backoffPolicy = DEFAULT_BACKOFF_POLICY;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    }<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>    public RetryConfig(int maxAttempts, long sleepInterval, long maxSleepTime,<a name="line.58"></a>
+<span class="sourceLineNo">059</span>        TimeUnit timeUnit, BackoffPolicy backoffPolicy) {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      this.maxAttempts = maxAttempts;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      this.sleepInterval = sleepInterval;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>      this.maxSleepTime = maxSleepTime;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>      this.timeUnit = timeUnit;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>      this.backoffPolicy = backoffPolicy;<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>    public RetryConfig setBackoffPolicy(BackoffPolicy backoffPolicy) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      this.backoffPolicy = backoffPolicy;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      return this;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    }<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>    public RetryConfig setMaxAttempts(int maxAttempts) {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      this.maxAttempts = maxAttempts;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      return this;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    }<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>    public RetryConfig setMaxSleepTime(long maxSleepTime) {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      this.maxSleepTime = maxSleepTime;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      return this;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>    public RetryConfig setSleepInterval(long sleepInterval) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      this.sleepInterval = sleepInterval;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      return this;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    }<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>    public RetryConfig setTimeUnit(TimeUnit timeUnit) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      this.timeUnit = timeUnit;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      return this;<a name="line.89"></a>
 <span class="sourceLineNo">090</span>    }<a name="line.90"></a>
 <span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    public long getSleepInterval() {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      return sleepInterval;<a name="line.93"></a>
+<span class="sourceLineNo">092</span>    public int getMaxAttempts() {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      return maxAttempts;<a name="line.93"></a>
 <span class="sourceLineNo">094</span>    }<a name="line.94"></a>
 <span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public TimeUnit getTimeUnit() {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      return timeUnit;<a name="line.97"></a>
+<span class="sourceLineNo">096</span>    public long getMaxSleepTime() {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      return maxSleepTime;<a name="line.97"></a>
 <span class="sourceLineNo">098</span>    }<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>    public BackoffPolicy getBackoffPolicy() {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      return backoffPolicy;<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    public long getSleepInterval() {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      return sleepInterval;<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>   * Policy for calculating sleeping intervals between retry attempts<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  public static class BackoffPolicy {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      return config.getSleepInterval();<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>  public static class ExponentialBackoffPolicy extends BackoffPolicy {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    @Override<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      long backoffTime = (long) (config.getSleepInterval() * Math.pow(2, attempts));<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      return backoffTime;<a name="line.118"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>    public TimeUnit getTimeUnit() {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      return timeUnit;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>    public BackoffPolicy getBackoffPolicy() {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      return backoffPolicy;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    }<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * Policy for calculating sleeping intervals between retry attempts<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public static class BackoffPolicy {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      return config.getSleepInterval();<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    }<a name="line.119"></a>
 <span class="sourceLineNo">120</span>  }<a name="line.120"></a>
 <span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static class ExponentialBackoffPolicyWithLimit extends ExponentialBackoffPolicy {<a name="line.122"></a>
+<span class="sourceLineNo">122</span>  public static class ExponentialBackoffPolicy extends BackoffPolicy {<a name="line.122"></a>
 <span class="sourceLineNo">123</span>    @Override<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      long backoffTime = super.getBackoffTime(config, attempts);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      return config.getMaxSleepTime() &gt; 0 ? Math.min(backoffTime, config.getMaxSleepTime()) : backoffTime;<a name="line.126"></a>
+<span class="sourceLineNo">125</span>      long backoffTime = (long) (config.getSleepInterval() * Math.pow(2, attempts));<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      return backoffTime;<a name="line.126"></a>
 <span class="sourceLineNo">127</span>    }<a name="line.127"></a>
 <span class="sourceLineNo">128</span>  }<a name="line.128"></a>
 <span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static final Logger LOG = LoggerFactory.getLogger(RetryCounter.class);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private RetryConfig retryConfig;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private int attempts;<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  public RetryCounter(int maxAttempts, long sleepInterval, TimeUnit timeUnit) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    this(new RetryConfig(maxAttempts, sleepInterval, -1, timeUnit, new ExponentialBackoffPolicy()));<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>  public RetryCounter(RetryConfig retryConfig) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    this.attempts = 0;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    this.retryConfig = retryConfig;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  public int getMaxAttempts() {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    return retryConfig.getMaxAttempts();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  }<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>  /**<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * Sleep for a back off time as supplied by the backoff policy, and increases the attempts<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @throws InterruptedException<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   */<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public void sleepUntilNextRetry() throws InterruptedException {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    int attempts = getAttemptTimes();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    long sleepTime = retryConfig.backoffPolicy.getBackoffTime(retryConfig, attempts);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    if (LOG.isTraceEnabled()) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      LOG.trace("Sleeping " + sleepTime + "ms before retry #" + attempts + "...");<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    retryConfig.getTimeUnit().sleep(sleepTime);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    useRetry();<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 boolean shouldRetry() {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return attempts &lt; retryConfig.getMaxAttempts();<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public void useRetry() {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    attempts++;<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>  public boolean isRetry() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    return attempts &gt; 0;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public int getAttemptTimes() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    return attempts;<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">130</span>  public static class ExponentialBackoffPolicyWithLimit extends ExponentialBackoffPolicy {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    @Override<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      long backoffTime = super.getBackoffTime(config, attempts);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      return config.getMaxSleepTime() &gt; 0 ? Math.min(backoffTime, config.getMaxSleepTime()) : backoffTime;<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>  private static final Logger LOG = LoggerFactory.getLogger(RetryCounter.class);<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private RetryConfig retryConfig;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private int attempts;<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  public RetryCounter(int maxAttempts, long sleepInterval, TimeUnit timeUnit) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    this(new RetryConfig(maxAttempts, sleepInterval, -1, timeUnit, new ExponentialBackoffPolicy()));<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 RetryCounter(RetryConfig retryConfig) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    this.attempts = 0;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    this.retryConfig = retryConfig;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public int getMaxAttempts() {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    return retryConfig.getMaxAttempts();<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>   * Sleep for a back off time as supplied by the backoff policy, and increases the attempts<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * @throws InterruptedException<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   */<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  public void sleepUntilNextRetry() throws InterruptedException {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    int attempts = getAttemptTimes();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    long sleepTime = getBackoffTime();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    LOG.trace("Sleeping {} ms before retry #{}...", sleepTime, attempts);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    retryConfig.getTimeUnit().sleep(sleepTime);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    useRetry();<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>  public boolean shouldRetry() {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    return attempts &lt; retryConfig.getMaxAttempts();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public void useRetry() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    attempts++;<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>  public boolean isRetry() {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return attempts &gt; 0;<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>  public int getAttemptTimes() {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    return attempts;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  public long getBackoffTime() {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    return this.retryConfig.backoffPolicy.getBackoffTime(this.retryConfig, getAttemptTimes());<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>  public long getBackoffTimeAndIncrementAttempts() {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    long backoffTime = getBackoffTime();<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    useRetry();<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    return backoffTime;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>}<a name="line.193"></a>
 
 
 


[16/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedContainerWithTimestamp.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedContainerWithTimestamp.html b/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedContainerWithTimestamp.html
index f8f3a16..9257e19 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedContainerWithTimestamp.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedContainerWithTimestamp.html
@@ -104,7 +104,9 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>(package private) class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/DelayedProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">DelayedProcedure</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/DelayedProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">DelayedProcedure</a></span></code>
+<div class="block">Vessel that carries a Procedure and a timeout.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected class&nbsp;</code></td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedObject.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedObject.html b/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedObject.html
index 3ff25c1..506989f 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedObject.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedObject.html
@@ -108,7 +108,9 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>(package private) class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/DelayedProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">DelayedProcedure</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/DelayedProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">DelayedProcedure</a></span></code>
+<div class="block">Vessel that carries a Procedure and a timeout.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>(package private) class&nbsp;</code></td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedWithTimeout.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedWithTimeout.html b/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedWithTimeout.html
index 64dd951..4040b91 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedWithTimeout.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedWithTimeout.html
@@ -108,7 +108,9 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>(package private) class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/DelayedProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">DelayedProcedure</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/DelayedProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">DelayedProcedure</a></span></code>
+<div class="block">Vessel that carries a Procedure and a timeout.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>(package private) class&nbsp;</code></td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html b/devapidocs/org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html
index 16ad614..0cb807a 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html
@@ -248,7 +248,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/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas">OperationQuota.OperationType</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html#line.43">values</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas">OperationQuota.OperationType</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html#line.44">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:
@@ -268,7 +268,7 @@ for (OperationQuota.OperationType c : OperationQuota.OperationType.values())
 <ul class="blockListLast">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas">OperationQuota.OperationType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html#line.43">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas">OperationQuota.OperationType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html#line.44">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">Returns the enum constant of this type with the specified name.
 The string must match <i>exactly</i> an identifier used to declare an
 enum constant in this type.  (Extraneous whitespace characters are 

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/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 fbbb0b6..1892d12 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -704,20 +704,20 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.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/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
index 858ccf6..b377318 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -130,9 +130,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteResult</span></a></li>
 </ul>
 </li>
 </ul>

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html b/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html
index 9a851d5..2b5c37d 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.108">RetryCounter.BackoffPolicy</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.116">RetryCounter.BackoffPolicy</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Policy for calculating sleeping intervals between retry attempts</div>
 </li>
@@ -188,7 +188,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BackoffPolicy</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html#line.108">BackoffPolicy</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html#line.116">BackoffPolicy</a>()</pre>
 </li>
 </ul>
 </li>
@@ -205,7 +205,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getBackoffTime</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html#line.109">getBackoffTime</a>(<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;config,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html#line.117">getBackoffTime</a>(<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;config,
                            int&nbsp;attempts)</pre>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html b/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html
index 4957b15..8f37ef2 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.114">RetryCounter.ExponentialBackoffPolicy</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.122">RetryCounter.ExponentialBackoffPolicy</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.BackoffPolicy</a></pre>
 </li>
 </ul>
@@ -192,7 +192,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.Backof
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ExponentialBackoffPolicy</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html#line.114">ExponentialBackoffPolicy</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html#line.122">ExponentialBackoffPolicy</a>()</pre>
 </li>
 </ul>
 </li>
@@ -209,7 +209,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.Backof
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getBackoffTime</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html#line.116">getBackoffTime</a>(<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;config,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html#line.124">getBackoffTime</a>(<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;config,
                            int&nbsp;attempts)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html b/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html
index 75d50a1..64ea929 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.122">RetryCounter.ExponentialBackoffPolicyWithLimit</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.130">RetryCounter.ExponentialBackoffPolicyWithLimit</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.ExponentialBackoffPolicy</a></pre>
 </li>
 </ul>
@@ -193,7 +193,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.Expone
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ExponentialBackoffPolicyWithLimit</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html#line.122">ExponentialBackoffPolicyWithLimit</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html#line.130">ExponentialBackoffPolicyWithLimit</a>()</pre>
 </li>
 </ul>
 </li>
@@ -210,7 +210,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.Expone
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getBackoffTime</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html#line.124">getBackoffTime</a>(<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;config,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html#line.132">getBackoffTime</a>(<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;config,
                            int&nbsp;attempts)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html b/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html
index bf163c2..7922e03 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.33">RetryCounter.RetryConfig</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.41">RetryCounter.RetryConfig</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Configuration for a retry counter</div>
 </li>
@@ -265,7 +265,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>maxAttempts</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.34">maxAttempts</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.42">maxAttempts</a></pre>
 </li>
 </ul>
 <a name="sleepInterval">
@@ -274,7 +274,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>sleepInterval</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.35">sleepInterval</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.43">sleepInterval</a></pre>
 </li>
 </ul>
 <a name="maxSleepTime">
@@ -283,7 +283,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>maxSleepTime</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.36">maxSleepTime</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.44">maxSleepTime</a></pre>
 </li>
 </ul>
 <a name="timeUnit">
@@ -292,7 +292,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>timeUnit</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.37">timeUnit</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.45">timeUnit</a></pre>
 </li>
 </ul>
 <a name="backoffPolicy">
@@ -301,7 +301,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>backoffPolicy</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.BackoffPolicy</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.38">backoffPolicy</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.BackoffPolicy</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.46">backoffPolicy</a></pre>
 </li>
 </ul>
 <a name="DEFAULT_BACKOFF_POLICY">
@@ -310,7 +310,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DEFAULT_BACKOFF_POLICY</h4>
-<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.BackoffPolicy</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.40">DEFAULT_BACKOFF_POLICY</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.BackoffPolicy</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.48">DEFAULT_BACKOFF_POLICY</a></pre>
 </li>
 </ul>
 </li>
@@ -327,7 +327,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>RetryConfig</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.42">RetryConfig</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.50">RetryConfig</a>()</pre>
 </li>
 </ul>
 <a name="RetryConfig-int-long-long-java.util.concurrent.TimeUnit-org.apache.hadoop.hbase.util.RetryCounter.BackoffPolicy-">
@@ -336,7 +336,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RetryConfig</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.50">RetryConfig</a>(int&nbsp;maxAttempts,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.58">RetryConfig</a>(int&nbsp;maxAttempts,
                    long&nbsp;sleepInterval,
                    long&nbsp;maxSleepTime,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;timeUnit,
@@ -357,7 +357,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setBackoffPolicy</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.59">setBackoffPolicy</a>(<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.BackoffPolicy</a>&nbsp;backoffPolicy)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.67">setBackoffPolicy</a>(<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.BackoffPolicy</a>&nbsp;backoffPolicy)</pre>
 </li>
 </ul>
 <a name="setMaxAttempts-int-">
@@ -366,7 +366,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaxAttempts</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.64">setMaxAttempts</a>(int&nbsp;maxAttempts)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.72">setMaxAttempts</a>(int&nbsp;maxAttempts)</pre>
 </li>
 </ul>
 <a name="setMaxSleepTime-long-">
@@ -375,7 +375,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaxSleepTime</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.69">setMaxSleepTime</a>(long&nbsp;maxSleepTime)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.77">setMaxSleepTime</a>(long&nbsp;maxSleepTime)</pre>
 </li>
 </ul>
 <a name="setSleepInterval-long-">
@@ -384,7 +384,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setSleepInterval</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.74">setSleepInterval</a>(long&nbsp;sleepInterval)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.82">setSleepInterval</a>(long&nbsp;sleepInterval)</pre>
 </li>
 </ul>
 <a name="setTimeUnit-java.util.concurrent.TimeUnit-">
@@ -393,7 +393,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setTimeUnit</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.79">setTimeUnit</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;timeUnit)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.87">setTimeUnit</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;timeUnit)</pre>
 </li>
 </ul>
 <a name="getMaxAttempts--">
@@ -402,7 +402,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxAttempts</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.84">getMaxAttempts</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.92">getMaxAttempts</a>()</pre>
 </li>
 </ul>
 <a name="getMaxSleepTime--">
@@ -411,7 +411,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxSleepTime</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.88">getMaxSleepTime</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.96">getMaxSleepTime</a>()</pre>
 </li>
 </ul>
 <a name="getSleepInterval--">
@@ -420,7 +420,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSleepInterval</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.92">getSleepInterval</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.100">getSleepInterval</a>()</pre>
 </li>
 </ul>
 <a name="getTimeUnit--">
@@ -429,7 +429,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTimeUnit</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.96">getTimeUnit</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.104">getTimeUnit</a>()</pre>
 </li>
 </ul>
 <a name="getBackoffPolicy--">
@@ -438,7 +438,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getBackoffPolicy</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.BackoffPolicy</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.100">getBackoffPolicy</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.BackoffPolicy</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#line.108">getBackoffPolicy</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.html b/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.html
index 1dd9dd6..e6c2b1e 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/RetryCounter.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -110,8 +110,19 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.28">RetryCounter</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.37">RetryCounter</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
+<div class="block">Operation retry accounting.
+ Use to calculate wait period, <a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.html#getBackoffTimeAndIncrementAttempts--"><code>getBackoffTimeAndIncrementAttempts()</code></a>}, or for performing
+ wait, <a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.html#sleepUntilNextRetry--"><code>sleepUntilNextRetry()</code></a>, in accordance with a <a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util"><code>RetryCounter.RetryConfig</code></a>, initial
+ settings, and a Retry Policy, (See org.apache.hadoop.io.retry.RetryPolicy).
+ Like <a href=https://github.com/rholder/guava-retrying>guava-retrying</a>.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>0.92.0</dd>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounterFactory.html" title="class in org.apache.hadoop.hbase.util"><code>RetryCounterFactory</code></a></dd>
+</dl>
 </li>
 </ul>
 </div>
@@ -219,24 +230,32 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.html#getAttemptTimes--">getAttemptTimes</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i1" class="rowColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.html#getBackoffTime--">getBackoffTime</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.html#getBackoffTimeAndIncrementAttempts--">getBackoffTimeAndIncrementAttempts</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.html#getMaxAttempts--">getMaxAttempts</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.html#isRetry--">isRetry</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.html#shouldRetry--">shouldRetry</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.html#sleepUntilNextRetry--">sleepUntilNextRetry</a></span>()</code>
 <div class="block">Sleep for a back off time as supplied by the backoff policy, and increases the attempts</div>
 </td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.html#useRetry--">useRetry</a></span>()</code>&nbsp;</td>
 </tr>
@@ -268,7 +287,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.130">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.138">LOG</a></pre>
 </li>
 </ul>
 <a name="retryConfig">
@@ -277,7 +296,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>retryConfig</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.132">retryConfig</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.140">retryConfig</a></pre>
 </li>
 </ul>
 <a name="attempts">
@@ -286,7 +305,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>attempts</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.133">attempts</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.141">attempts</a></pre>
 </li>
 </ul>
 </li>
@@ -303,7 +322,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>RetryCounter</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.135">RetryCounter</a>(int&nbsp;maxAttempts,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.143">RetryCounter</a>(int&nbsp;maxAttempts,
                     long&nbsp;sleepInterval,
                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;timeUnit)</pre>
 </li>
@@ -314,7 +333,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RetryCounter</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.139">RetryCounter</a>(<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;retryConfig)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.147">RetryCounter</a>(<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;retryConfig)</pre>
 </li>
 </ul>
 </li>
@@ -331,7 +350,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxAttempts</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.144">getMaxAttempts</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.152">getMaxAttempts</a>()</pre>
 </li>
 </ul>
 <a name="sleepUntilNextRetry--">
@@ -340,7 +359,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>sleepUntilNextRetry</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.152">sleepUntilNextRetry</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.160">sleepUntilNextRetry</a>()
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Sleep for a back off time as supplied by the backoff policy, and increases the attempts</div>
 <dl>
@@ -355,7 +374,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldRetry</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.162">shouldRetry</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.168">shouldRetry</a>()</pre>
 </li>
 </ul>
 <a name="useRetry--">
@@ -364,7 +383,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>useRetry</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.166">useRetry</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.172">useRetry</a>()</pre>
 </li>
 </ul>
 <a name="isRetry--">
@@ -373,16 +392,34 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isRetry</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.170">isRetry</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.176">isRetry</a>()</pre>
 </li>
 </ul>
 <a name="getAttemptTimes--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>getAttemptTimes</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.174">getAttemptTimes</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.180">getAttemptTimes</a>()</pre>
+</li>
+</ul>
+<a name="getBackoffTime--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getBackoffTime</h4>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.184">getBackoffTime</a>()</pre>
+</li>
+</ul>
+<a name="getBackoffTimeAndIncrementAttempts--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getBackoffTimeAndIncrementAttempts</h4>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounter.html#line.188">getBackoffTimeAndIncrementAttempts</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/util/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-summary.html b/devapidocs/org/apache/hadoop/hbase/util/package-summary.html
index 5572907..b393140 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-summary.html
@@ -1108,7 +1108,9 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util">RetryCounter</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Operation retry accounting.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.BackoffPolicy</a></td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/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 beb7208..59c95fc 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -532,14 +532,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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/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/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/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/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/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/util/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-use.html b/devapidocs/org/apache/hadoop/hbase/util/package-use.html
index 3e9ef7d..0ea489a 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-use.html
@@ -1975,7 +1975,9 @@ service.</div>
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/RetryCounter.html#org.apache.hadoop.hbase.util">RetryCounter</a>&nbsp;</td>
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/RetryCounter.html#org.apache.hadoop.hbase.util">RetryCounter</a>
+<div class="block">Operation retry accounting.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/RetryCounter.BackoffPolicy.html#org.apache.hadoop.hbase.util">RetryCounter.BackoffPolicy</a>
@@ -2089,7 +2091,9 @@ service.</div>
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/RetryCounter.html#org.apache.hadoop.hbase.zookeeper">RetryCounter</a>&nbsp;</td>
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/RetryCounter.html#org.apache.hadoop.hbase.zookeeper">RetryCounter</a>
+<div class="block">Operation retry accounting.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/RetryCounterFactory.html#org.apache.hadoop.hbase.zookeeper">RetryCounterFactory</a>&nbsp;</td>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/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 7bef82c..b949222 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 = "a13630383335371dee338f4e2b42ac0f5de57667";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "7790ab156eabbea4527ec8e5a1c39430398bed0c";<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String user = "jenkins";<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String date = "Sat Apr 28 14:42:29 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Tue May  1 14:39:02 UTC 2018";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://jenkins-websites1.apache.org/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "05d5a910bd9a34952978ab46e80e224e";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "fdb39258407f4e8b010b6f19204e4d5c";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.CallPriorityComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.CallPriorityComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.CallPriorityComparator.html
index e19370a..0efd22e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.CallPriorityComparator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.CallPriorityComparator.html
@@ -494,28 +494,32 @@
 <span class="sourceLineNo">486</span>   */<a name="line.486"></a>
 <span class="sourceLineNo">487</span>  public void resizeQueues(Configuration conf) {<a name="line.487"></a>
 <span class="sourceLineNo">488</span>    String configKey = RpcScheduler.IPC_SERVER_MAX_CALLQUEUE_LENGTH;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    if (name != null &amp;&amp; name.toLowerCase(Locale.ROOT).contains("priority")) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      configKey = RpcScheduler.IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH;<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    currentQueueLimit = conf.getInt(configKey, currentQueueLimit);<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>  public void onConfigurationChange(Configuration conf) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    // update CoDel Scheduler tunables<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    int codelTargetDelay = conf.getInt(CALL_QUEUE_CODEL_TARGET_DELAY,<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      CALL_QUEUE_CODEL_DEFAULT_TARGET_DELAY);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    int codelInterval = conf.getInt(CALL_QUEUE_CODEL_INTERVAL, CALL_QUEUE_CODEL_DEFAULT_INTERVAL);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    double codelLifoThreshold = conf.getDouble(CALL_QUEUE_CODEL_LIFO_THRESHOLD,<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      CALL_QUEUE_CODEL_DEFAULT_LIFO_THRESHOLD);<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    for (BlockingQueue&lt;CallRunner&gt; queue : queues) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      if (queue instanceof AdaptiveLifoCoDelCallQueue) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        ((AdaptiveLifoCoDelCallQueue) queue).updateTunables(codelTargetDelay, codelInterval,<a name="line.505"></a>
-<span class="sourceLineNo">506</span>          codelLifoThreshold);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      }<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span>}<a name="line.510"></a>
+<span class="sourceLineNo">489</span>    if (name != null) {<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      if (name.toLowerCase(Locale.ROOT).contains("priority")) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>        configKey = RpcScheduler.IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      } else if (name.toLowerCase(Locale.ROOT).contains("replication")) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        configKey = RpcScheduler.IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH;<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>    currentQueueLimit = conf.getInt(configKey, currentQueueLimit);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span>  public void onConfigurationChange(Configuration conf) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    // update CoDel Scheduler tunables<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    int codelTargetDelay = conf.getInt(CALL_QUEUE_CODEL_TARGET_DELAY,<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      CALL_QUEUE_CODEL_DEFAULT_TARGET_DELAY);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    int codelInterval = conf.getInt(CALL_QUEUE_CODEL_INTERVAL, CALL_QUEUE_CODEL_DEFAULT_INTERVAL);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    double codelLifoThreshold = conf.getDouble(CALL_QUEUE_CODEL_LIFO_THRESHOLD,<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      CALL_QUEUE_CODEL_DEFAULT_LIFO_THRESHOLD);<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>    for (BlockingQueue&lt;CallRunner&gt; queue : queues) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      if (queue instanceof AdaptiveLifoCoDelCallQueue) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>        ((AdaptiveLifoCoDelCallQueue) queue).updateTunables(codelTargetDelay, codelInterval,<a name="line.509"></a>
+<span class="sourceLineNo">510</span>          codelLifoThreshold);<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>  }<a name="line.513"></a>
+<span class="sourceLineNo">514</span>}<a name="line.514"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.Handler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.Handler.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.Handler.html
index e19370a..0efd22e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.Handler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.Handler.html
@@ -494,28 +494,32 @@
 <span class="sourceLineNo">486</span>   */<a name="line.486"></a>
 <span class="sourceLineNo">487</span>  public void resizeQueues(Configuration conf) {<a name="line.487"></a>
 <span class="sourceLineNo">488</span>    String configKey = RpcScheduler.IPC_SERVER_MAX_CALLQUEUE_LENGTH;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    if (name != null &amp;&amp; name.toLowerCase(Locale.ROOT).contains("priority")) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      configKey = RpcScheduler.IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH;<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    currentQueueLimit = conf.getInt(configKey, currentQueueLimit);<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>  public void onConfigurationChange(Configuration conf) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    // update CoDel Scheduler tunables<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    int codelTargetDelay = conf.getInt(CALL_QUEUE_CODEL_TARGET_DELAY,<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      CALL_QUEUE_CODEL_DEFAULT_TARGET_DELAY);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    int codelInterval = conf.getInt(CALL_QUEUE_CODEL_INTERVAL, CALL_QUEUE_CODEL_DEFAULT_INTERVAL);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    double codelLifoThreshold = conf.getDouble(CALL_QUEUE_CODEL_LIFO_THRESHOLD,<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      CALL_QUEUE_CODEL_DEFAULT_LIFO_THRESHOLD);<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    for (BlockingQueue&lt;CallRunner&gt; queue : queues) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      if (queue instanceof AdaptiveLifoCoDelCallQueue) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        ((AdaptiveLifoCoDelCallQueue) queue).updateTunables(codelTargetDelay, codelInterval,<a name="line.505"></a>
-<span class="sourceLineNo">506</span>          codelLifoThreshold);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      }<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span>}<a name="line.510"></a>
+<span class="sourceLineNo">489</span>    if (name != null) {<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      if (name.toLowerCase(Locale.ROOT).contains("priority")) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>        configKey = RpcScheduler.IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      } else if (name.toLowerCase(Locale.ROOT).contains("replication")) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        configKey = RpcScheduler.IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH;<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>    currentQueueLimit = conf.getInt(configKey, currentQueueLimit);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span>  public void onConfigurationChange(Configuration conf) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    // update CoDel Scheduler tunables<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    int codelTargetDelay = conf.getInt(CALL_QUEUE_CODEL_TARGET_DELAY,<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      CALL_QUEUE_CODEL_DEFAULT_TARGET_DELAY);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    int codelInterval = conf.getInt(CALL_QUEUE_CODEL_INTERVAL, CALL_QUEUE_CODEL_DEFAULT_INTERVAL);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    double codelLifoThreshold = conf.getDouble(CALL_QUEUE_CODEL_LIFO_THRESHOLD,<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      CALL_QUEUE_CODEL_DEFAULT_LIFO_THRESHOLD);<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>    for (BlockingQueue&lt;CallRunner&gt; queue : queues) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      if (queue instanceof AdaptiveLifoCoDelCallQueue) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>        ((AdaptiveLifoCoDelCallQueue) queue).updateTunables(codelTargetDelay, codelInterval,<a name="line.509"></a>
+<span class="sourceLineNo">510</span>          codelLifoThreshold);<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>  }<a name="line.513"></a>
+<span class="sourceLineNo">514</span>}<a name="line.514"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html
index e19370a..0efd22e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html
@@ -494,28 +494,32 @@
 <span class="sourceLineNo">486</span>   */<a name="line.486"></a>
 <span class="sourceLineNo">487</span>  public void resizeQueues(Configuration conf) {<a name="line.487"></a>
 <span class="sourceLineNo">488</span>    String configKey = RpcScheduler.IPC_SERVER_MAX_CALLQUEUE_LENGTH;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    if (name != null &amp;&amp; name.toLowerCase(Locale.ROOT).contains("priority")) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      configKey = RpcScheduler.IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH;<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    currentQueueLimit = conf.getInt(configKey, currentQueueLimit);<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>  public void onConfigurationChange(Configuration conf) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    // update CoDel Scheduler tunables<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    int codelTargetDelay = conf.getInt(CALL_QUEUE_CODEL_TARGET_DELAY,<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      CALL_QUEUE_CODEL_DEFAULT_TARGET_DELAY);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    int codelInterval = conf.getInt(CALL_QUEUE_CODEL_INTERVAL, CALL_QUEUE_CODEL_DEFAULT_INTERVAL);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    double codelLifoThreshold = conf.getDouble(CALL_QUEUE_CODEL_LIFO_THRESHOLD,<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      CALL_QUEUE_CODEL_DEFAULT_LIFO_THRESHOLD);<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    for (BlockingQueue&lt;CallRunner&gt; queue : queues) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      if (queue instanceof AdaptiveLifoCoDelCallQueue) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        ((AdaptiveLifoCoDelCallQueue) queue).updateTunables(codelTargetDelay, codelInterval,<a name="line.505"></a>
-<span class="sourceLineNo">506</span>          codelLifoThreshold);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      }<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span>}<a name="line.510"></a>
+<span class="sourceLineNo">489</span>    if (name != null) {<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      if (name.toLowerCase(Locale.ROOT).contains("priority")) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>        configKey = RpcScheduler.IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      } else if (name.toLowerCase(Locale.ROOT).contains("replication")) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        configKey = RpcScheduler.IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH;<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>    currentQueueLimit = conf.getInt(configKey, currentQueueLimit);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span>  public void onConfigurationChange(Configuration conf) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    // update CoDel Scheduler tunables<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    int codelTargetDelay = conf.getInt(CALL_QUEUE_CODEL_TARGET_DELAY,<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      CALL_QUEUE_CODEL_DEFAULT_TARGET_DELAY);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    int codelInterval = conf.getInt(CALL_QUEUE_CODEL_INTERVAL, CALL_QUEUE_CODEL_DEFAULT_INTERVAL);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    double codelLifoThreshold = conf.getDouble(CALL_QUEUE_CODEL_LIFO_THRESHOLD,<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      CALL_QUEUE_CODEL_DEFAULT_LIFO_THRESHOLD);<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>    for (BlockingQueue&lt;CallRunner&gt; queue : queues) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      if (queue instanceof AdaptiveLifoCoDelCallQueue) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>        ((AdaptiveLifoCoDelCallQueue) queue).updateTunables(codelTargetDelay, codelInterval,<a name="line.509"></a>
+<span class="sourceLineNo">510</span>          codelLifoThreshold);<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>  }<a name="line.513"></a>
+<span class="sourceLineNo">514</span>}<a name="line.514"></a>
 
 
 


[19/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html
index 3d893d9..8472b08 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.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":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":6,"i14":10,"i15":10,"i16":10,"i17":6,"i18":6,"i19":10,"i20":10,"i21":10,"i22":6,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":6,"i29":10,"i30":10,"i31":6};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":6,"i5":10,"i6":10,"i7":10,"i8":10,"i9":6,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":6,"i16":10,"i17":10,"i18":10,"i19":6,"i20":6,"i21":10,"i22":10,"i23":10,"i24":6,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":6,"i33":10,"i34":10,"i35":6};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public abstract class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.87">RegionTransitionProcedure</a>
+public abstract class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.99">RegionTransitionProcedure</a>
 extends <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;
 implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteProcedure.html" title="interface in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteProcedure</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</pre>
 <div class="block">Base class for the Assign and Unassign Procedure.
@@ -159,11 +159,18 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
  intentionally not implemented. It is a 'one shot' procedure. See its class doc for how it
  handles failure.
  </li>
+ <li>If we find a region in an 'unexpected' state, we'll complain and retry with backoff forever.
+ The 'unexpected' state needs to be fixed either by another running Procedure or by operator
+ intervention (Regions in 'unexpected' state indicates bug or unexpected transition type).
+ For this to work, subclasses need to persist the 'attempt' counter kept in this class when
+ they do serializeStateData and restore it inside their deserializeStateData, just as they do
+ for <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#regionInfo"><code>regionInfo</code></a>.
+ </li>
  </ul>
  </p>
 
- <p>TODO: Considering it is a priority doing all we can to get make a region available as soon as possible,
- re-attempting with any target makes sense if specified target fails in case of
+ <p>TODO: Considering it is a priority doing all we can to get make a region available as soon as
+ possible, re-attempting with any target makes sense if specified target fails in case of
  <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment"><code>AssignProcedure</code></a>. For <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment"><code>UnassignProcedure</code></a>, our concern is preventing data loss
  on failed unassign. See class doc for explanation.</div>
 </li>
@@ -211,18 +218,27 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.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/master/assignment/RegionTransitionProcedure.html#attempt">attempt</a></span></code>
+<div class="block">Like <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#regionInfo"><code>regionInfo</code></a>, the expectation is that subclasses persist the value of this
+ data member.</div>
+</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/assignment/RegionTransitionProcedure.html#lock">lock</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static org.slf4j.Logger</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#regionInfo">regionInfo</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#regionInfo">regionInfo</a></span></code>
+<div class="block">This data member must be persisted.</div>
+</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#transitionState">transitionState</a></span></code>&nbsp;</td>
 </tr>
@@ -303,77 +319,85 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
                 <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
 <tr id="i5" class="rowColor">
+<td class="colFirst"><code>protected int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getAttempt--">getAttempt</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>private long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getBackoffTime-int-">getBackoffTime</a></span>(int&nbsp;attempts)</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getRegionInfo--">getRegionInfo</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getRegionState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getRegionState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>abstract <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getServer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getServer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Used by ServerCrashProcedure to see if this Assign/Unassign needs processing.</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getTableName--">getTableName</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>(package private) org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getTransitionState--">getTransitionState</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.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>
 <div class="block">This is used in conjunction with <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#holdLock-TEnvironment-"><code>Procedure.holdLock(Object)</code></a>.</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<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/master/assignment/RegionTransitionProcedure.html#holdLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">holdLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Used to keep the procedure lock even when the procedure is yielding or suspended.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#isMeta--">isMeta</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>protected abstract boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#isRollbackSupported-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState-">isRollbackSupported</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState&nbsp;state)</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#isServerOnline-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">isServerOnline</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
               <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#isServerOnline-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">isServerOnline</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
               <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<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/master/assignment/RegionTransitionProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">The user should override this method, and release lock if necessary.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>abstract <a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteCallBuild-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">remoteCallBuild</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>
 <div class="block">For building the remote operation.</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>protected abstract boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-java.io.IOException-">remoteCallFailed</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                 <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;exception)</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<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/assignment/RegionTransitionProcedure.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-java.io.IOException-">remoteCallFailed</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
@@ -381,14 +405,14 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <div class="block">Called when the executeProcedure call is failed.</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteOperationCompleted-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">remoteOperationCompleted</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Called when RS tells the remote procedure is succeeded through the
  <code>reportProcedureDone</code> method.</div>
 </td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteOperationFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">remoteOperationFailed</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                      <a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureException.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureException</a>&nbsp;error)</code>
@@ -396,60 +420,76 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
  method.</div>
 </td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>protected abstract void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#reportTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-long-">reportTransition</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                 org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode&nbsp;code,
                 long&nbsp;seqId)</code>&nbsp;</td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#reportTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-long-">reportTransition</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                 org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode&nbsp;code,
                 long&nbsp;seqId)</code>&nbsp;</td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#rollback-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">rollback</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">The code to undo what was done by the execute() code.</div>
 </td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setRegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">setRegionInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setAttempt-int-">setAttempt</a></span>(int&nbsp;attempt)</code>
+<div class="block">This setter is for subclasses to call in their
+ <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-"><code>Procedure.deserializeStateData(ProcedureStateSerializer)</code></a> method.</div>
+</td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i28" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setRegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">setRegionInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>
+<div class="block">This setter is for subclasses to call in their
+ <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-"><code>Procedure.deserializeStateData(ProcedureStateSerializer)</code></a> method.</div>
+</td>
+</tr>
+<tr id="i29" class="rowColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setTimeoutFailure-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">setTimeoutFailure</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
+<div class="block">At end of timeout, wake ourselves up so we run again.</div>
+</td>
+</tr>
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setTransitionState-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState-">setTransitionState</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState&nbsp;state)</code>&nbsp;</td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#shouldWaitClientAck-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">shouldWaitClientAck</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">By default, the executor will keep the procedure result around util
  the eviction TTL is expired.</div>
 </td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>protected abstract boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#startTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">startTransition</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#toStringClassDetails-java.lang.StringBuilder-">toStringClassDetails</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</code>
 <div class="block">Extend the toString() information with the procedure details
  e.g.</div>
 </td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;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>
 </td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code>protected abstract boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#updateTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">updateTransition</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>
@@ -462,7 +502,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/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#completionCleanup-TEnvironment-">completionCleanup</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</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.html#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#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.hbase.procedure2.Procedure-org.apache.hadoop.hbase.procedure2.Procedure-">haveSameParent</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/hadoo
 p/hbase/procedure2/Procedure.html#isWaiting--">isWaiting</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#removeStackIndex--">removeStackIndex</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</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/hb
 ase/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/Procedure.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="../../../../../../org/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#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>
+<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#completionCleanup-TEnvironment-">completionCleanup</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</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.html#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#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.hbase.procedure2.Procedure-org.apache.hadoop.hbase.procedure2.Procedure-">haveSameParent</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/hadoo
 p/hbase/procedure2/Procedure.html#isWaiting--">isWaiting</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#removeStackIndex--">removeStackIndex</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</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/hb
 ase/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/Procedure.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="../../../../../../org/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#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">
@@ -498,7 +538,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.91">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.103">LOG</a></pre>
 </li>
 </ul>
 <a name="aborted">
@@ -507,7 +547,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>aborted</h4>
-<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.93">aborted</a></pre>
+<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.105">aborted</a></pre>
 </li>
 </ul>
 <a name="transitionState">
@@ -516,7 +556,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>transitionState</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.95">transitionState</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.107">transitionState</a></pre>
 </li>
 </ul>
 <a name="regionInfo">
@@ -525,7 +565,21 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>regionInfo</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.96">regionInfo</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.113">regionInfo</a></pre>
+<div class="block">This data member must be persisted. Expectation is that it is done by subclasses in their
+ <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-"><code>Procedure.serializeStateData(ProcedureStateSerializer)</code></a> call, restoring <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#regionInfo"><code>regionInfo</code></a>
+ in their <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-"><code>Procedure.deserializeStateData(ProcedureStateSerializer)</code></a> method.</div>
+</li>
+</ul>
+<a name="attempt">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>attempt</h4>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.119">attempt</a></pre>
+<div class="block">Like <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#regionInfo"><code>regionInfo</code></a>, the expectation is that subclasses persist the value of this
+ data member. It is used doing backoff when Procedure gets stuck.</div>
 </li>
 </ul>
 <a name="lock">
@@ -534,7 +588,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockListLast">
 <li class="blockList">
 <h4>lock</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.97">lock</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.121">lock</a></pre>
 </li>
 </ul>
 </li>
@@ -551,7 +605,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>RegionTransitionProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.100">RegionTransitionProcedure</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.124">RegionTransitionProcedure</a>()</pre>
 </li>
 </ul>
 <a name="RegionTransitionProcedure-org.apache.hadoop.hbase.client.RegionInfo-">
@@ -560,7 +614,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RegionTransitionProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.102">RegionTransitionProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.126">RegionTransitionProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</pre>
 </li>
 </ul>
 </li>
@@ -577,7 +631,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionInfo</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.107">getRegionInfo</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.131">getRegionInfo</a>()</pre>
 </li>
 </ul>
 <a name="setRegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">
@@ -586,7 +640,36 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>setRegionInfo</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.111">setRegionInfo</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.142">setRegionInfo</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</pre>
+<div class="block">This setter is for subclasses to call in their
+ <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-"><code>Procedure.deserializeStateData(ProcedureStateSerializer)</code></a> method. Expectation is that
+ subclasses will persist `regioninfo` in their
+ <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-"><code>Procedure.serializeStateData(ProcedureStateSerializer)</code></a> method and then restore `regionInfo` on
+ deserialization by calling.</div>
+</li>
+</ul>
+<a name="setAttempt-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setAttempt</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.151">setAttempt</a>(int&nbsp;attempt)</pre>
+<div class="block">This setter is for subclasses to call in their
+ <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-"><code>Procedure.deserializeStateData(ProcedureStateSerializer)</code></a> method.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setRegionInfo-org.apache.hadoop.hbase.client.RegionInfo-"><code>setRegionInfo(RegionInfo)</code></a></dd>
+</dl>
+</li>
+</ul>
+<a name="getAttempt--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getAttempt</h4>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.155">getAttempt</a>()</pre>
 </li>
 </ul>
 <a name="getTableName--">
@@ -595,7 +678,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableName</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.117">getTableName</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.160">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>
@@ -610,7 +693,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>isMeta</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.122">isMeta</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.165">isMeta</a>()</pre>
 </li>
 </ul>
 <a name="toStringClassDetails-java.lang.StringBuilder-">
@@ -619,7 +702,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringClassDetails</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.127">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.170">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClassDetails-java.lang.StringBuilder-">Procedure</a></code></span></div>
 <div class="block">Extend the toString() information with the procedure details
  e.g. className and parameters</div>
@@ -637,7 +720,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionState</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.135">getRegionState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.178">getRegionState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 </li>
 </ul>
 <a name="setTransitionState-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState-">
@@ -646,7 +729,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>setTransitionState</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.139">setTransitionState</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState&nbsp;state)</pre>
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.182">setTransitionState</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState&nbsp;state)</pre>
 </li>
 </ul>
 <a name="getTransitionState--">
@@ -655,7 +738,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>getTransitionState</h4>
-<pre>org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.143">getTransitionState</a>()</pre>
+<pre>org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.186">getTransitionState</a>()</pre>
 </li>
 </ul>
 <a name="startTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">
@@ -664,7 +747,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>startTransition</h4>
-<pre>protected abstract&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.147">startTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected abstract&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.190">startTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                            <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                            <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a></pre>
@@ -681,7 +764,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>updateTransition</h4>
-<pre>protected abstract&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.156">updateTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected abstract&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.199">updateTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                             <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)
                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                             <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a></pre>
@@ -702,7 +785,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>finishTransition</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.159">finishTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.202">finishTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                          <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                          <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a></pre>
@@ -719,7 +802,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>reportTransition</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.162">reportTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.205">reportTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                          <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                                          org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode&nbsp;code,
                                          long&nbsp;seqId)
@@ -736,7 +819,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>remoteCallBuild</h4>
-<pre>public abstract&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.166">remoteCallBuild</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>public abstract&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.209">remoteCallBuild</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                                                           <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteProcedure.html#remoteCallBuild-TEnv-TRemote-">RemoteProcedureDispatcher.RemoteProcedure</a></code></span></div>
 <div class="block">For building the remote operation.</div>
@@ -752,7 +835,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>remoteCallFailed</h4>
-<pre>protected abstract&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.173">remoteCallFailed</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected abstract&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.216">remoteCallFailed</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                             <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                                             <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;exception)</pre>
 <dl>
@@ -769,7 +852,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>remoteCallFailed</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.177">remoteCallFailed</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.220">remoteCallFailed</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                              <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;exception)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteProcedure.html#remoteCallFailed-TEnv-TRemote-java.io.IOException-">RemoteProcedureDispatcher.RemoteProcedure</a></code></span></div>
@@ -786,7 +869,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>addToRemoteDispatcher</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.202">addToRemoteDispatcher</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.245">addToRemoteDispatcher</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;targetServer)</pre>
 <div class="block">Be careful! At the end of this method, the procedure has either succeeded
  and this procedure has been set into a suspended state OR, we failed and
@@ -806,7 +889,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>reportTransition</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.226">reportTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.269">reportTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                 <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                                 org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode&nbsp;code,
                                 long&nbsp;seqId)
@@ -823,7 +906,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>isServerOnline</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.254">isServerOnline</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.297">isServerOnline</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                  <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</pre>
 </li>
 </ul>
@@ -833,7 +916,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>isServerOnline</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.258">isServerOnline</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.301">isServerOnline</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                  <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 </li>
 </ul>
@@ -843,7 +926,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringState</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.263">toStringState</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;builder)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.306">toStringState</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;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>
@@ -861,7 +944,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <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/master/assignment/RegionTransitionProcedure.html#line.272">execute</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/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.315">execute</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="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#execute-TEnvironment-">Procedure</a></code></span></div>
 <div class="block">The main code of the procedure. It must be idempotent since execute()
@@ -881,13 +964,39 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 </dl>
 </li>
 </ul>
+<a name="getBackoffTime-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getBackoffTime</h4>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.387">getBackoffTime</a>(int&nbsp;attempts)</pre>
+</li>
+</ul>
+<a name="setTimeoutFailure-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setTimeoutFailure</h4>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.397">setTimeoutFailure</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">At end of timeout, wake ourselves up so we run again.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setTimeoutFailure-TEnvironment-">setTimeoutFailure</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>true to let the framework handle the timeout as abort,
+         false in case the procedure handled the timeout itself.</dd>
+</dl>
+</li>
+</ul>
 <a name="rollback-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>rollback</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.335">rollback</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.404">rollback</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#rollback-TEnvironment-">Procedure</a></code></span></div>
 <div class="block">The code to undo what was done by the execute() code.
  It is called when the procedure or one of the sub-procedures failed or an
@@ -909,7 +1018,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>isRollbackSupported</h4>
-<pre>protected abstract&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.350">isRollbackSupported</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState&nbsp;state)</pre>
+<pre>protected abstract&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.419">isRollbackSupported</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState&nbsp;state)</pre>
 </li>
 </ul>
 <a name="abort-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
@@ -918,7 +1027,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>abort</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.353">abort</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.422">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
@@ -941,7 +1050,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
 <ul class="blockList">
 <li class="blockList">
 <h4>acquireLock</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.362">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>
+<p

<TRUNCATED>

[14/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
index 6c3402f..bada433 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
@@ -142,265 +142,273 @@
 <span class="sourceLineNo">134</span>    if (this.targetServer != null) {<a name="line.134"></a>
 <span class="sourceLineNo">135</span>      state.setTargetServer(ProtobufUtil.toServerName(this.targetServer));<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    serializer.serialize(state.build());<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>  protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      throws IOException {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    final AssignRegionStateData state = serializer.deserialize(AssignRegionStateData.class);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    setTransitionState(state.getTransitionState());<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    setRegionInfo(ProtobufUtil.toRegionInfo(state.getRegionInfo()));<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    forceNewPlan = state.getForceNewPlan();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    if (state.hasTargetServer()) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      this.targetServer = ProtobufUtil.toServerName(state.getTargetServer());<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  @Override<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  protected boolean startTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      throws IOException {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    // If the region is already open we can't do much...<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    if (regionNode.isInState(State.OPEN) &amp;&amp; isServerOnline(env, regionNode)) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      LOG.info("Assigned, not reassigning; " + this + "; " + regionNode.toShortString());<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      return false;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    // Don't assign if table is in disabling or disabled state.<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    TableStateManager tsm = env.getMasterServices().getTableStateManager();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    TableName tn = regionNode.getRegionInfo().getTable();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    if (tsm.getTableState(tn).isDisabledOrDisabling()) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      LOG.info("Table " + tn + " state=" + tsm.getTableState(tn) + ", skipping " + this);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return false;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // If the region is SPLIT, we can't assign it. But state might be CLOSED, rather than<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    // SPLIT which is what a region gets set to when unassigned as part of SPLIT. FIX.<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    if (regionNode.isInState(State.SPLIT) ||<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        (regionNode.getRegionInfo().isOffline() &amp;&amp; regionNode.getRegionInfo().isSplit())) {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      LOG.info("SPLIT, cannot be assigned; " + this + "; " + regionNode +<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        "; hri=" + regionNode.getRegionInfo());<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      return false;<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>    // If we haven't started the operation yet, we can abort<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    if (aborted.get() &amp;&amp; regionNode.isInState(State.CLOSED, State.OFFLINE)) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        regionNode.setState(State.FAILED_OPEN);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        setFailure(getClass().getSimpleName(),<a name="line.180"></a>
-<span class="sourceLineNo">181</span>          new RetriesExhaustedException("Max attempts exceeded"));<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      } else {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        setAbortFailure(getClass().getSimpleName(), "Abort requested");<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      }<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>    // Send assign (add into assign-pool). Region is now in OFFLINE state. Setting offline state<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    // scrubs what was the old region location. Setting a new regionLocation here is how we retain<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    // old assignment or specify target server if a move or merge. See<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    // AssignmentManager#processAssignQueue. Otherwise, balancer gives us location.<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    ServerName lastRegionLocation = regionNode.offline();<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    boolean retain = false;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    if (!forceNewPlan) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      if (this.targetServer != null) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        retain = targetServer.equals(lastRegionLocation);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>        regionNode.setRegionLocation(targetServer);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      } else {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        if (lastRegionLocation != null) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>          // Try and keep the location we had before we offlined.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>          retain = true;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          regionNode.setRegionLocation(lastRegionLocation);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        } else if (regionNode.getLastHost() != null) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          retain = true;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>          LOG.info("Setting lastHost as the region location " + regionNode.getLastHost());<a name="line.205"></a>
-<span class="sourceLineNo">206</span>          regionNode.setRegionLocation(regionNode.getLastHost());<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>    }<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    LOG.info("Starting " + this + "; " + regionNode.toShortString() +<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        "; forceNewPlan=" + this.forceNewPlan +<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        ", retain=" + retain);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    env.getAssignmentManager().queueAssign(regionNode);<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>  protected boolean updateTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  throws IOException, ProcedureSuspendedException {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    // TODO: crash if destinationServer is specified and not online<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    // which is also the case when the balancer provided us with a different location.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    if (LOG.isTraceEnabled()) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      LOG.trace("Update " + this + "; " + regionNode.toShortString());<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (regionNode.getRegionLocation() == null) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return 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>    if (!isServerOnline(env, regionNode)) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      // TODO: is this correct? should we wait the chore/ssh?<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      LOG.info("Server not online, re-queuing " + this + "; " + regionNode.toShortString());<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<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><a name="line.236"></a>
-<span class="sourceLineNo">237</span>    if (env.getAssignmentManager().waitServerReportEvent(regionNode.getRegionLocation(), this)) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      LOG.info("Early suspend! " + this + "; " + regionNode.toShortString());<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      throw new ProcedureSuspendedException();<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>    if (regionNode.isInState(State.OPEN)) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      LOG.info("Already assigned: " + this + "; " + regionNode.toShortString());<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return false;<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>    // Transition regionNode State. Set it to OPENING. Update hbase:meta, and add<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    // region to list of regions on the target regionserver. Need to UNDO if failure!<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    env.getAssignmentManager().markRegionAsOpening(regionNode);<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>    // TODO: Requires a migration to be open by the RS?<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    // regionNode.getFormatVersion()<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>    if (!addToRemoteDispatcher(env, regionNode.getRegionLocation())) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      // Failed the dispatch BUT addToRemoteDispatcher internally does<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      // cleanup on failure -- even the undoing of markRegionAsOpening above --<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      // so nothing more to do here; in fact we need to get out of here<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      // fast since we've been put back on the scheduler.<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>    // We always return true, even if we fail dispatch because addToRemoteDispatcher<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    // failure processing sets state back to REGION_TRANSITION_QUEUE so we try again;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    // i.e. return true to keep the Procedure running; it has been reset to startover.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    return true;<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 finishTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      throws IOException {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    env.getAssignmentManager().markRegionAsOpened(regionNode);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // This success may have been after we failed open a few times. Be sure to cleanup any<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    // failed open references. See #incrementAndCheckMaxAttempts and where it is called.<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    env.getAssignmentManager().getRegionStates().removeFromFailedOpen(regionNode.getRegionInfo());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  @Override<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  protected void reportTransition(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      final TransitionCode code, final long openSeqNum) throws UnexpectedStateException {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    switch (code) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      case OPENED:<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        if (openSeqNum &lt; 0) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.282"></a>
-<span class="sourceLineNo">283</span>              " transition openSeqNum=" + openSeqNum + ", " + regionNode);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        if (openSeqNum &lt; regionNode.getOpenSeqNum()) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          LOG.warn("Skipping update of open seqnum with " + openSeqNum +<a name="line.286"></a>
-<span class="sourceLineNo">287</span>              " because current seqnum=" + regionNode.getOpenSeqNum());<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        } else {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          regionNode.setOpenSeqNum(openSeqNum);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        // Leave the state here as OPENING for now. We set it to OPEN in<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        // REGION_TRANSITION_FINISH section where we do a bunch of checks.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        // regionNode.setState(RegionState.State.OPEN, RegionState.State.OPENING);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        setTransitionState(RegionTransitionState.REGION_TRANSITION_FINISH);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        break;<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      case FAILED_OPEN:<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        handleFailure(env, regionNode);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        break;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      default:<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.300"></a>
-<span class="sourceLineNo">301</span>            " transition openSeqNum=" + openSeqNum + ", " + regionNode.toShortString() +<a name="line.301"></a>
-<span class="sourceLineNo">302</span>            ", " + this + ", expected OPENED or FAILED_OPEN.");<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><a name="line.305"></a>
-<span class="sourceLineNo">306</span>  /**<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * Called when dispatch or subsequent OPEN request fail. Can be run by the<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * inline dispatch call or later by the ServerCrashProcedure. Our state is<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * generally OPENING. Cleanup and reset to OFFLINE and put our Procedure<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * State back to REGION_TRANSITION_QUEUE so the Assign starts over.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   */<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  private void handleFailure(final MasterProcedureEnv env, final RegionStateNode regionNode) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      aborted.set(true);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    this.forceNewPlan = true;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    this.targetServer = null;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    regionNode.offline();<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    // We were moved to OPENING state before dispatch. Undo. It is safe to call<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    // this method because it checks for OPENING first.<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    env.getAssignmentManager().undoRegionAsOpening(regionNode);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<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>  private boolean incrementAndCheckMaxAttempts(final MasterProcedureEnv env,<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      final RegionStateNode regionNode) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    final int retries = env.getAssignmentManager().getRegionStates().<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        addToFailedOpen(regionNode).incrementAndGetRetries();<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    int max = env.getAssignmentManager().getAssignMaxAttempts();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    LOG.info("Retry=" + retries + " of max=" + max + "; " +<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        this + "; " + regionNode.toShortString());<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    return retries &gt;= max;<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 RemoteOperation remoteCallBuild(final MasterProcedureEnv env, final ServerName serverName) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    assert serverName.equals(getRegionState(env).getRegionLocation());<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    return new RegionOpenOperation(this, getRegionInfo(),<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        env.getAssignmentManager().getFavoredNodes(getRegionInfo()), 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>  protected boolean remoteCallFailed(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      final IOException exception) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    handleFailure(env, regionNode);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    return true;<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>  @Override<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    super.toStringClassDetails(sb);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    if (this.targetServer != null) sb.append(", target=").append(this.targetServer);<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 ServerName getServer(final MasterProcedureEnv env) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    RegionStateNode node =<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(this.getRegionInfo());<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    if (node == null) return null;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    return node.getRegionLocation();<a name="line.360"></a>
+<span class="sourceLineNo">137</span>    if (getAttempt() &gt; 0) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      state.setAttempt(getAttempt());<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    }<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    serializer.serialize(state.build());<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  }<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  @Override<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      throws IOException {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    final AssignRegionStateData state = serializer.deserialize(AssignRegionStateData.class);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    setTransitionState(state.getTransitionState());<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    setRegionInfo(ProtobufUtil.toRegionInfo(state.getRegionInfo()));<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    forceNewPlan = state.getForceNewPlan();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    if (state.hasTargetServer()) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      this.targetServer = ProtobufUtil.toServerName(state.getTargetServer());<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    if (state.hasAttempt()) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      setAttempt(state.getAttempt());<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  }<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>  @Override<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  protected boolean startTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      throws IOException {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    // If the region is already open we can't do much...<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    if (regionNode.isInState(State.OPEN) &amp;&amp; isServerOnline(env, regionNode)) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      LOG.info("Assigned, not reassigning; " + this + "; " + regionNode.toShortString());<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      return false;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    // Don't assign if table is in disabling or disabled state.<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    TableStateManager tsm = env.getMasterServices().getTableStateManager();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    TableName tn = regionNode.getRegionInfo().getTable();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    if (tsm.getTableState(tn).isDisabledOrDisabling()) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      LOG.info("Table " + tn + " state=" + tsm.getTableState(tn) + ", skipping " + this);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      return false;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    // If the region is SPLIT, we can't assign it. But state might be CLOSED, rather than<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    // SPLIT which is what a region gets set to when unassigned as part of SPLIT. FIX.<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    if (regionNode.isInState(State.SPLIT) ||<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        (regionNode.getRegionInfo().isOffline() &amp;&amp; regionNode.getRegionInfo().isSplit())) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      LOG.info("SPLIT, cannot be assigned; " + this + "; " + regionNode +<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        "; hri=" + regionNode.getRegionInfo());<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      return false;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>    // If we haven't started the operation yet, we can abort<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    if (aborted.get() &amp;&amp; regionNode.isInState(State.CLOSED, State.OFFLINE)) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        regionNode.setState(State.FAILED_OPEN);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        setFailure(getClass().getSimpleName(),<a name="line.186"></a>
+<span class="sourceLineNo">187</span>          new RetriesExhaustedException("Max attempts exceeded"));<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      } else {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        setAbortFailure(getClass().getSimpleName(), "Abort requested");<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      return false;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    }<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>    // Send assign (add into assign-pool). We call regionNode.offline below to set state to<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    // OFFLINE and to clear the region location. Setting a new regionLocation here is how we retain<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // old assignment or specify target server if a move or merge. See<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    // AssignmentManager#processAssignQueue. Otherwise, balancer gives us location.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    // TODO: Region will be set into OFFLINE state below regardless of what its previous state was<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    // This is dangerous? Wrong? What if region was in an unexpected state?<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    ServerName lastRegionLocation = regionNode.offline();<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    boolean retain = false;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (!forceNewPlan) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      if (this.targetServer != null) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        retain = targetServer.equals(lastRegionLocation);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        regionNode.setRegionLocation(targetServer);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      } else {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        if (lastRegionLocation != null) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          // Try and keep the location we had before we offlined.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>          retain = true;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          regionNode.setRegionLocation(lastRegionLocation);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        } else if (regionNode.getLastHost() != null) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>          retain = true;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>          LOG.info("Setting lastHost as the region location " + regionNode.getLastHost());<a name="line.213"></a>
+<span class="sourceLineNo">214</span>          regionNode.setRegionLocation(regionNode.getLastHost());<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        }<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      }<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    LOG.info("Starting " + this + "; " + regionNode.toShortString() +<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        "; forceNewPlan=" + this.forceNewPlan +<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        ", retain=" + retain);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    env.getAssignmentManager().queueAssign(regionNode);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    return true;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>  @Override<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  protected boolean updateTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  throws IOException, ProcedureSuspendedException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    // TODO: crash if destinationServer is specified and not online<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    // which is also the case when the balancer provided us with a different location.<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    if (LOG.isTraceEnabled()) {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      LOG.trace("Update " + this + "; " + regionNode.toShortString());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    if (regionNode.getRegionLocation() == null) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      return true;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>    if (!isServerOnline(env, regionNode)) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      // TODO: is this correct? should we wait the chore/ssh?<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      LOG.info("Server not online, re-queuing " + this + "; " + regionNode.toShortString());<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      return true;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
+<span class="sourceLineNo">244</span><a name="line.244"></a>
+<span class="sourceLineNo">245</span>    if (env.getAssignmentManager().waitServerReportEvent(regionNode.getRegionLocation(), this)) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      LOG.info("Early suspend! " + this + "; " + regionNode.toShortString());<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      throw new ProcedureSuspendedException();<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    if (regionNode.isInState(State.OPEN)) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      LOG.info("Already assigned: " + this + "; " + regionNode.toShortString());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      return false;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    }<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>    // Transition regionNode State. Set it to OPENING. Update hbase:meta, and add<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    // region to list of regions on the target regionserver. Need to UNDO if failure!<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    env.getAssignmentManager().markRegionAsOpening(regionNode);<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    // TODO: Requires a migration to be open by the RS?<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    // regionNode.getFormatVersion()<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>    if (!addToRemoteDispatcher(env, regionNode.getRegionLocation())) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      // Failed the dispatch BUT addToRemoteDispatcher internally does<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      // cleanup on failure -- even the undoing of markRegionAsOpening above --<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      // so nothing more to do here; in fact we need to get out of here<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      // fast since we've been put back on the scheduler.<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    // We always return true, even if we fail dispatch because addToRemoteDispatcher<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // failure processing sets state back to REGION_TRANSITION_QUEUE so we try again;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    // i.e. return true to keep the Procedure running; it has been reset to startover.<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    return true;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  protected void finishTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      throws IOException {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    env.getAssignmentManager().markRegionAsOpened(regionNode);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    // This success may have been after we failed open a few times. Be sure to cleanup any<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    // failed open references. See #incrementAndCheckMaxAttempts and where it is called.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    env.getAssignmentManager().getRegionStates().removeFromFailedOpen(regionNode.getRegionInfo());<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  }<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  @Override<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  protected void reportTransition(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      final TransitionCode code, final long openSeqNum) throws UnexpectedStateException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    switch (code) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      case OPENED:<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        if (openSeqNum &lt; 0) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.290"></a>
+<span class="sourceLineNo">291</span>              " transition openSeqNum=" + openSeqNum + ", " + regionNode);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        if (openSeqNum &lt; regionNode.getOpenSeqNum()) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          LOG.warn("Skipping update of open seqnum with " + openSeqNum +<a name="line.294"></a>
+<span class="sourceLineNo">295</span>              " because current seqnum=" + regionNode.getOpenSeqNum());<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        } else {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>          regionNode.setOpenSeqNum(openSeqNum);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        // Leave the state here as OPENING for now. We set it to OPEN in<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        // REGION_TRANSITION_FINISH section where we do a bunch of checks.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        // regionNode.setState(RegionState.State.OPEN, RegionState.State.OPENING);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        setTransitionState(RegionTransitionState.REGION_TRANSITION_FINISH);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        break;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      case FAILED_OPEN:<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        handleFailure(env, regionNode);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        break;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      default:<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.308"></a>
+<span class="sourceLineNo">309</span>            " transition openSeqNum=" + openSeqNum + ", " + regionNode.toShortString() +<a name="line.309"></a>
+<span class="sourceLineNo">310</span>            ", " + this + ", expected OPENED or FAILED_OPEN.");<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  }<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  /**<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * Called when dispatch or subsequent OPEN request fail. Can be run by the<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * inline dispatch call or later by the ServerCrashProcedure. Our state is<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * generally OPENING. Cleanup and reset to OFFLINE and put our Procedure<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * State back to REGION_TRANSITION_QUEUE so the Assign starts over.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  private void handleFailure(final MasterProcedureEnv env, final RegionStateNode regionNode) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      aborted.set(true);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    this.forceNewPlan = true;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    this.targetServer = null;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    regionNode.offline();<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    // We were moved to OPENING state before dispatch. Undo. It is safe to call<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    // this method because it checks for OPENING first.<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    env.getAssignmentManager().undoRegionAsOpening(regionNode);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  private boolean incrementAndCheckMaxAttempts(final MasterProcedureEnv env,<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      final RegionStateNode regionNode) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    final int retries = env.getAssignmentManager().getRegionStates().<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        addToFailedOpen(regionNode).incrementAndGetRetries();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    int max = env.getAssignmentManager().getAssignMaxAttempts();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    LOG.info("Retry=" + retries + " of max=" + max + "; " +<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        this + "; " + regionNode.toShortString());<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    return retries &gt;= max;<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 RemoteOperation remoteCallBuild(final MasterProcedureEnv env, final ServerName serverName) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    assert serverName.equals(getRegionState(env).getRegionLocation());<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    return new RegionOpenOperation(this, getRegionInfo(),<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        env.getAssignmentManager().getFavoredNodes(getRegionInfo()), false);<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>  protected boolean remoteCallFailed(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      final IOException exception) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    handleFailure(env, regionNode);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    return true;<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 void toStringClassDetails(StringBuilder sb) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    super.toStringClassDetails(sb);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    if (this.targetServer != null) sb.append(", target=").append(this.targetServer);<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>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getAssignProcMetrics();<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>   * Sort AssignProcedures such that meta and system assigns come first before user-space assigns.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Have to do it this way w/ distinct Comparator because Procedure is already Comparable on<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * 'Env'(?).<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  public static class CompareAssignProcedure implements Comparator&lt;AssignProcedure&gt; {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    @Override<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    public int compare(AssignProcedure left, AssignProcedure right) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      if (left.getRegionInfo().isMetaRegion()) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        if (right.getRegionInfo().isMetaRegion()) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.378"></a>
-<span class="sourceLineNo">379</span>        }<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        return -1;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      } else if (right.getRegionInfo().isMetaRegion()) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        return +1;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      if (left.getRegionInfo().getTable().isSystemTable()) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.385"></a>
+<span class="sourceLineNo">364</span>  public ServerName getServer(final MasterProcedureEnv env) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    RegionStateNode node =<a name="line.365"></a>
+<span class="sourceLineNo">366</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(this.getRegionInfo());<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    if (node == null) return null;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    return node.getRegionLocation();<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>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getAssignProcMetrics();<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>  /**<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * Sort AssignProcedures such that meta and system assigns come first before user-space assigns.<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * Have to do it this way w/ distinct Comparator because Procedure is already Comparable on<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * 'Env'(?).<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  public static class CompareAssignProcedure implements Comparator&lt;AssignProcedure&gt; {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    @Override<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    public int compare(AssignProcedure left, AssignProcedure right) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      if (left.getRegionInfo().isMetaRegion()) {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        if (right.getRegionInfo().isMetaRegion()) {<a name="line.385"></a>
 <span class="sourceLineNo">386</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.386"></a>
 <span class="sourceLineNo">387</span>        }<a name="line.387"></a>
 <span class="sourceLineNo">388</span>        return -1;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      } else if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.389"></a>
+<span class="sourceLineNo">389</span>      } else if (right.getRegionInfo().isMetaRegion()) {<a name="line.389"></a>
 <span class="sourceLineNo">390</span>        return +1;<a name="line.390"></a>
 <span class="sourceLineNo">391</span>      }<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<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">392</span>      if (left.getRegionInfo().getTable().isSystemTable()) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        }<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        return -1;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      } else if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        return +1;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
+<span class="sourceLineNo">402</span>  }<a name="line.402"></a>
+<span class="sourceLineNo">403</span>}<a name="line.403"></a>
 
 
 


[22/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index 9a7940d..a0e92fa 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,8 +25,8 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2007 - 2018 The Apache Software Foundation</copyright>
     <item>
-      <title>File: 3604,
-             Errors: 15861,
+      <title>File: 3606,
+             Errors: 15867,
              Warnings: 0,
              Infos: 0
       </title>
@@ -22740,6 +22740,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.TestRetryCounter.java">org/apache/hadoop/hbase/util/TestRetryCounter.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.RowMutations.java">org/apache/hadoop/hbase/client/RowMutations.java</a>
                 </td>
                 <td>
@@ -30776,6 +30790,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.assignment.TestUnexpectedStateException.java">org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  1
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.security.visibility.expression.NonLeafExpressionNode.java">org/apache/hadoop/hbase/security/visibility/expression/NonLeafExpressionNode.java</a>
                 </td>
                 <td>
@@ -38121,7 +38149,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  5
+                  10
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 485701d..fb44828 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -63,7 +63,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -375,7 +375,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 207d50d..bf7ae52 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -440,7 +440,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index b6db1d5..e0a7feb 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -1105,7 +1105,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 1457907..39e7938 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -313,7 +313,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index 3191a3a..3ec32be 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -969,7 +969,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 8e53117..ebfab4e 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3768,21 +3768,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Sat Apr 28 14:42:29 UTC 2018"</code></td>
+<td class="colLast"><code>"Tue May  1 14:39:02 UTC 2018"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"a13630383335371dee338f4e2b42ac0f5de57667"</code></td>
+<td class="colLast"><code>"7790ab156eabbea4527ec8e5a1c39430398bed0c"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"05d5a910bd9a34952978ab46e80e224e"</code></td>
+<td class="colLast"><code>"fdb39258407f4e8b010b6f19204e4d5c"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">
@@ -11292,6 +11292,13 @@
 <td><code><a href="org/apache/hadoop/hbase/ipc/RpcScheduler.html#IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH">IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH</a></code></td>
 <td class="colLast"><code>"hbase.ipc.server.priority.max.callqueue.length"</code></td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.ipc.RpcScheduler.IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td><code><a href="org/apache/hadoop/hbase/ipc/RpcScheduler.html#IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH">IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH</a></code></td>
+<td class="colLast"><code>"hbase.ipc.server.replication.max.callqueue.length"</code></td>
+</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index da96458..deffc39 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -4262,6 +4262,11 @@
 <dd>
 <div class="block">Check if we should attain safe point.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#attempt">attempt</a></span> - Variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a></dt>
+<dd>
+<div class="block">Like <a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#regionInfo"><code>RegionTransitionProcedure.regionInfo</code></a>, the expectation is that subclasses persist the value of this
+ data member.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/HBaseSaslRpcServer.html#attemptingUser">attemptingUser</a></span> - Variable in class org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/HBaseSaslRpcServer.html" title="class in org.apache.hadoop.hbase.security">HBaseSaslRpcServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RetryCounter.html#attempts">attempts</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util">RetryCounter</a></dt>
@@ -23708,7 +23713,9 @@
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/util/DelayedUtil.DelayedObject.html#DelayedObject--">DelayedObject()</a></span> - Constructor for class org.apache.hadoop.hbase.procedure2.util.<a href="org/apache/hadoop/hbase/procedure2/util/DelayedUtil.DelayedObject.html" title="class in org.apache.hadoop.hbase.procedure2.util">DelayedUtil.DelayedObject</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/procedure2/DelayedProcedure.html" title="class in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">DelayedProcedure</span></a> - Class in <a href="org/apache/hadoop/hbase/procedure2/package-summary.html">org.apache.hadoop.hbase.procedure2</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Vessel that carries a Procedure and a timeout.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/DelayedProcedure.html#DelayedProcedure-org.apache.hadoop.hbase.procedure2.Procedure-">DelayedProcedure(Procedure&lt;?&gt;)</a></span> - Constructor for class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/DelayedProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">DelayedProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#delayedReseek">delayedReseek</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a></dt>
@@ -34355,6 +34362,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ConnectionImplementation.html#getAsyncProcess--">getAsyncProcess()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ConnectionImplementation.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getAttempt--">getAttempt()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/HBaseSaslRpcServer.html#getAttemptingUser--">getAttemptingUser()</a></span> - Method in class org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/HBaseSaslRpcServer.html" title="class in org.apache.hadoop.hbase.security">HBaseSaslRpcServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RetryCounter.html#getAttemptTimes--">getAttemptTimes()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util">RetryCounter</a></dt>
@@ -34505,12 +34514,18 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/backoff/ExponentialClientBackoffPolicy.html#getBackoffTime-org.apache.hadoop.hbase.ServerName-byte:A-org.apache.hadoop.hbase.client.backoff.ServerStatistics-">getBackoffTime(ServerName, byte[], ServerStatistics)</a></span> - Method in class org.apache.hadoop.hbase.client.backoff.<a href="org/apache/hadoop/hbase/client/backoff/ExponentialClientBackoffPolicy.html" title="class in org.apache.hadoop.hbase.client.backoff">ExponentialClientBackoffPolicy</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getBackoffTime-int-">getBackoffTime(int)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html#getBackoffTime-org.apache.hadoop.hbase.util.RetryCounter.RetryConfig-int-">getBackoffTime(RetryCounter.RetryConfig, int)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RetryCounter.BackoffPolicy.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.BackoffPolicy</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html#getBackoffTime-org.apache.hadoop.hbase.util.RetryCounter.RetryConfig-int-">getBackoffTime(RetryCounter.RetryConfig, int)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicy.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.ExponentialBackoffPolicy</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html#getBackoffTime-org.apache.hadoop.hbase.util.RetryCounter.RetryConfig-int-">getBackoffTime(RetryCounter.RetryConfig, int)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RetryCounter.ExponentialBackoffPolicyWithLimit.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.ExponentialBackoffPolicyWithLimit</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RetryCounter.html#getBackoffTime--">getBackoffTime()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util">RetryCounter</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RetryCounter.html#getBackoffTimeAndIncrementAttempts--">getBackoffTimeAndIncrementAttempts()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util">RetryCounter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/FileLink.html#getBackReferenceFileName-org.apache.hadoop.fs.Path-">getBackReferenceFileName(Path)</a></span> - Static method in class org.apache.hadoop.hbase.io.<a href="org/apache/hadoop/hbase/io/FileLink.html" title="class in org.apache.hadoop.hbase.io">FileLink</a></dt>
 <dd>
 <div class="block">Get the referenced file name from the reference link directory path.</div>
@@ -60600,6 +60615,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/RpcScheduler.html#IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH">IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH</a></span> - Static variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/RpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">RpcScheduler</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/RpcScheduler.html#IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH">IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH</a></span> - Static variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/RpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">RpcScheduler</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/ipc/IPCUtil.html" title="class in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">IPCUtil</span></a> - Class in <a href="org/apache/hadoop/hbase/ipc/package-summary.html">org.apache.hadoop.hbase.ipc</a></dt>
 <dd>
 <div class="block">Utility to help ipc'ing.</div>
@@ -88195,7 +88212,9 @@ service.</div>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html#regionInfo">regionInfo</a></span> - Variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#regionInfo">regionInfo</a></span> - Variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">This data member must be persisted.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/normalizer/SplitNormalizationPlan.html#regionInfo">regionInfo</a></span> - Variable in class org.apache.hadoop.hbase.master.normalizer.<a href="org/apache/hadoop/hbase/master/normalizer/SplitNormalizationPlan.html" title="class in org.apache.hadoop.hbase.master.normalizer">SplitNormalizationPlan</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOperation.html#regionInfo">regionInfo</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOperation.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher.RegionOperation</a></dt>
@@ -93245,7 +93264,9 @@ service.</div>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/HBaseFsck.FileLockCallable.html#retryCounter">retryCounter</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/HBaseFsck.FileLockCallable.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck.FileLockCallable</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">RetryCounter</span></a> - Class in <a href="org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Operation retry accounting.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RetryCounter.html#RetryCounter-int-long-java.util.concurrent.TimeUnit-">RetryCounter(int, long, TimeUnit)</a></span> - Constructor for class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util">RetryCounter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RetryCounter.html#RetryCounter-org.apache.hadoop.hbase.util.RetryCounter.RetryConfig-">RetryCounter(RetryCounter.RetryConfig)</a></span> - Constructor for class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util">RetryCounter</a></dt>
@@ -98475,6 +98496,11 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Scan.html#setAsyncPrefetch-boolean-">setAsyncPrefetch(boolean)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setAttempt-int-">setAttempt(int)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a></dt>
+<dd>
+<div class="block">This setter is for subclasses to call in their
+ <a href="org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-"><code>Procedure.deserializeStateData(ProcedureStateSerializer)</code></a> method.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Append.html#setAttribute-java.lang.String-byte:A-">setAttribute(String, byte[])</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Append.html" title="class in org.apache.hadoop.hbase.client">Append</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Attributes.html#setAttribute-java.lang.String-byte:A-">setAttribute(String, byte[])</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Attributes.html" title="interface in org.apache.hadoop.hbase.client">Attributes</a></dt>
@@ -101315,7 +101341,10 @@ service.</div>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/RegionInfoBuilder.html#setRegionId-long-">setRegionId(long)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/RegionInfoBuilder.html" title="class in org.apache.hadoop.hbase.client">RegionInfoBuilder</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setRegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">setRegionInfo(RegionInfo)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">This setter is for subclasses to call in their
+ <a href="org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-"><code>Procedure.deserializeStateData(ProcedureStateSerializer)</code></a> method.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/normalizer/SplitNormalizationPlan.html#setRegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">setRegionInfo(RegionInfo)</a></span> - Method in class org.apache.hadoop.hbase.master.normalizer.<a href="org/apache/hadoop/hbase/master/normalizer/SplitNormalizationPlan.html" title="class in org.apache.hadoop.hbase.master.normalizer">SplitNormalizationPlan</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html#setRegionLocation-org.apache.hadoop.hbase.ServerName-">setRegionLocation(ServerName)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a></dt>
@@ -102366,6 +102395,10 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/util/DelayedUtil.DelayedContainerWithTimestamp.html#setTimeout-long-">setTimeout(long)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.util.<a href="org/apache/hadoop/hbase/procedure2/util/DelayedUtil.DelayedContainerWithTimestamp.html" title="class in org.apache.hadoop.hbase.procedure2.util">DelayedUtil.DelayedContainerWithTimestamp</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setTimeoutFailure-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">setTimeoutFailure(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a></dt>
+<dd>
+<div class="block">At end of timeout, wake ourselves up so we run again.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/locking/LockProcedure.html#setTimeoutFailure-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">setTimeoutFailure(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.locking.<a href="org/apache/hadoop/hbase/master/locking/LockProcedure.html" title="class in org.apache.hadoop.hbase.master.locking">LockProcedure</a></dt>
 <dd>
 <div class="block">Re run the procedure after every timeout to write new WAL entries so we don't hold back old

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
index 6119ee7..4885291 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
@@ -2742,7 +2742,9 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
-<td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#regionInfo">regionInfo</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#regionInfo">regionInfo</a></span></code>
+<div class="block">This data member must be persisted.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]</code></td>
@@ -3179,7 +3181,10 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setRegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">setRegionInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setRegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">setRegionInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>
+<div class="block">This setter is for subclasses to call in their
+ <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-"><code>Procedure.deserializeStateData(ProcedureStateSerializer)</code></a> method.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/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 92137c6..9559009 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -550,24 +550,24 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/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/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>
 </ul>
 </li>
 </ul>

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/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 151206a..36dcf23 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -273,12 +273,12 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">HFileBlock.Writer.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.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/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/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/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/40477ee9/devapidocs/org/apache/hadoop/hbase/ipc/FifoRpcScheduler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/FifoRpcScheduler.html b/devapidocs/org/apache/hadoop/hbase/ipc/FifoRpcScheduler.html
index f002a4f..b5aaf62 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/FifoRpcScheduler.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/FifoRpcScheduler.html
@@ -190,7 +190,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">RpcScheduler</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#IPC_SERVER_MAX_CALLQUEUE_LENGTH">IPC_SERVER_MAX_CALLQUEUE_LENGTH</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH">IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#IPC_SERVER_MAX_CALLQUEUE_LENGTH">IPC_SERVER_MAX_CALLQUEUE_LENGTH</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH">IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH">IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH</a></code></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.html b/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.html
index 76e0b1b..e6d31f5 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.html
@@ -1177,7 +1177,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>onConfigurationChange</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.495">onConfigurationChange</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.499">onConfigurationChange</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html b/devapidocs/org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html
index 2e5e4fd..3c1e60e 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.40">RpcScheduler.Context</a>
+<pre>public abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.42">RpcScheduler.Context</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Exposes runtime information of a <code>RpcServer</code> that a <code>RpcScheduler</code> may need.</div>
 </li>
@@ -187,7 +187,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>Context</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html#line.40">Context</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html#line.42">Context</a>()</pre>
 </li>
 </ul>
 </li>
@@ -204,7 +204,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getListenerAddress</h4>
-<pre>public abstract&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html#line.41">getListenerAddress</a>()</pre>
+<pre>public abstract&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html#line.43">getListenerAddress</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/ipc/RpcScheduler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/RpcScheduler.html b/devapidocs/org/apache/hadoop/hbase/ipc/RpcScheduler.html
index 1f83c35..1803122 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/RpcScheduler.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/RpcScheduler.html
@@ -165,6 +165,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH">IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH</a></span></code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH">IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH</a></span></code>&nbsp;</td>
+</tr>
 </table>
 </li>
 </ul>
@@ -358,7 +362,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <a name="IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH</h4>
 <pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.36">IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH</a></pre>
@@ -368,6 +372,19 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH</h4>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.38">IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.ipc.RpcScheduler.IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 <!-- ========= CONSTRUCTOR DETAIL ======== -->
@@ -399,7 +416,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>init</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.50">init</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html" title="class in org.apache.hadoop.hbase.ipc">RpcScheduler.Context</a>&nbsp;context)</pre>
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.52">init</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html" title="class in org.apache.hadoop.hbase.ipc">RpcScheduler.Context</a>&nbsp;context)</pre>
 <div class="block">Does some quick initialization. Heavy tasks (e.g. starting threads) should be
  done in <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#start--"><code>start()</code></a>. This method is called before <code>start</code>.</div>
 <dl>
@@ -414,7 +431,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>start</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.55">start</a>()</pre>
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.57">start</a>()</pre>
 <div class="block">Prepares for request serving. An implementation may start some handler threads here.</div>
 </li>
 </ul>
@@ -424,7 +441,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.58">stop</a>()</pre>
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.60">stop</a>()</pre>
 <div class="block">Stops serving new requests.</div>
 </li>
 </ul>
@@ -434,7 +451,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>dispatch</h4>
-<pre>public abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.66">dispatch</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&nbsp;task)
+<pre>public abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.68">dispatch</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&nbsp;task)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Dispatches an RPC request asynchronously. An implementation is free to choose to process the
@@ -454,7 +471,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getCallQueueInfo</h4>
-<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/CallQueueInfo.html" title="class in org.apache.hadoop.hbase.ipc">CallQueueInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.69">getCallQueueInfo</a>()</pre>
+<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/CallQueueInfo.html" title="class in org.apache.hadoop.hbase.ipc">CallQueueInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.71">getCallQueueInfo</a>()</pre>
 <div class="block">Get call queue information</div>
 </li>
 </ul>
@@ -464,7 +481,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getGeneralQueueLength</h4>
-<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.72">getGeneralQueueLength</a>()</pre>
+<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.74">getGeneralQueueLength</a>()</pre>
 <div class="block">Retrieves length of the general queue for metrics.</div>
 </li>
 </ul>
@@ -474,7 +491,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getPriorityQueueLength</h4>
-<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.75">getPriorityQueueLength</a>()</pre>
+<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.77">getPriorityQueueLength</a>()</pre>
 <div class="block">Retrieves length of the priority queue for metrics.</div>
 </li>
 </ul>
@@ -484,7 +501,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationQueueLength</h4>
-<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.78">getReplicationQueueLength</a>()</pre>
+<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.80">getReplicationQueueLength</a>()</pre>
 <div class="block">Retrieves length of the replication queue for metrics.</div>
 </li>
 </ul>
@@ -494,7 +511,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveRpcHandlerCount</h4>
-<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.81">getActiveRpcHandlerCount</a>()</pre>
+<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.83">getActiveRpcHandlerCount</a>()</pre>
 <div class="block">Retrieves the total number of active handler.</div>
 </li>
 </ul>
@@ -504,7 +521,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveGeneralRpcHandlerCount</h4>
-<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.84">getActiveGeneralRpcHandlerCount</a>()</pre>
+<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.86">getActiveGeneralRpcHandlerCount</a>()</pre>
 <div class="block">Retrieves the number of active general handler.</div>
 </li>
 </ul>
@@ -514,7 +531,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getActivePriorityRpcHandlerCount</h4>
-<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.87">getActivePriorityRpcHandlerCount</a>()</pre>
+<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.89">getActivePriorityRpcHandlerCount</a>()</pre>
 <div class="block">Retrieves the number of active priority handler.</div>
 </li>
 </ul>
@@ -524,7 +541,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveReplicationRpcHandlerCount</h4>
-<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.90">getActiveReplicationRpcHandlerCount</a>()</pre>
+<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.92">getActiveReplicationRpcHandlerCount</a>()</pre>
 <div class="block">Retrieves the number of active replication handler.</div>
 </li>
 </ul>
@@ -534,7 +551,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumGeneralCallsDropped</h4>
-<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.96">getNumGeneralCallsDropped</a>()</pre>
+<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.98">getNumGeneralCallsDropped</a>()</pre>
 <div class="block">If CoDel-based RPC executors are used, retrieves the number of Calls that were dropped
  from general queue because RPC executor is under high load; returns 0 otherwise.</div>
 </li>
@@ -545,7 +562,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumLifoModeSwitches</h4>
-<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.103">getNumLifoModeSwitches</a>()</pre>
+<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.105">getNumLifoModeSwitches</a>()</pre>
 <div class="block">If CoDel-based RPC executors are used, retrieves the number of Calls that were
  picked from the tail of the queue (indicating adaptive LIFO mode, when
  in the period of overloade we serve last requests first); returns 0 otherwise.</div>
@@ -557,7 +574,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getWriteQueueLength</h4>
-<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.106">getWriteQueueLength</a>()</pre>
+<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.108">getWriteQueueLength</a>()</pre>
 <div class="block">Retrieves length of the write queue for metrics when use RWQueueRpcExecutor.</div>
 </li>
 </ul>
@@ -567,7 +584,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getReadQueueLength</h4>
-<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.109">getReadQueueLength</a>()</pre>
+<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.111">getReadQueueLength</a>()</pre>
 <div class="block">Retrieves length of the read queue for metrics when use RWQueueRpcExecutor.</div>
 </li>
 </ul>
@@ -577,7 +594,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanQueueLength</h4>
-<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.112">getScanQueueLength</a>()</pre>
+<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.114">getScanQueueLength</a>()</pre>
 <div class="block">Retrieves length of the scan queue for metrics when use RWQueueRpcExecutor.</div>
 </li>
 </ul>
@@ -587,7 +604,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveWriteRpcHandlerCount</h4>
-<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.115">getActiveWriteRpcHandlerCount</a>()</pre>
+<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.117">getActiveWriteRpcHandlerCount</a>()</pre>
 <div class="block">Retrieves the number of active write rpc handler when use RWQueueRpcExecutor.</div>
 </li>
 </ul>
@@ -597,7 +614,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveReadRpcHandlerCount</h4>
-<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.118">getActiveReadRpcHandlerCount</a>()</pre>
+<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.120">getActiveReadRpcHandlerCount</a>()</pre>
 <div class="block">Retrieves the number of active write rpc handler when use RWQueueRpcExecutor.</div>
 </li>
 </ul>
@@ -607,7 +624,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getActiveScanRpcHandlerCount</h4>
-<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.121">getActiveScanRpcHandlerCount</a>()</pre>
+<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html#line.123">getActiveScanRpcHandlerCount</a>()</pre>
 <div class="block">Retrieves the number of active write rpc handler when use RWQueueRpcExecutor.</div>
 </li>
 </ul>


[03/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
index e8817db..78aa552 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -3267,26 +3267,30 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestUnexpectedStateException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionStates.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestRegionStates.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRogueRSAssignment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestRogueRSAssignment.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionStates.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestRegionStates.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAssignmentOnRSCrash.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestAssignmentOnRSCrash.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRogueRSAssignment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestRogueRSAssignment.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestMergeTableRegionsProcedure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAssignmentOnRSCrash.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestAssignmentOnRSCrash.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestMergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestMergeTableRegionsProcedure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestAssignmentManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 </tbody>
@@ -6113,142 +6117,146 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestThreadLocalPoolMap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestThreadLocalPoolMap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRetryCounter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRetryCounter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReusablePoolMap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestReusablePoolMap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestThreadLocalPoolMap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestThreadLocalPoolMap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRoundRobinPoolMap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRoundRobinPoolMap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReusablePoolMap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestReusablePoolMap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHBaseFsckReplication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckReplication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRoundRobinPoolMap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRoundRobinPoolMap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRootPath.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRootPath.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHBaseFsckReplication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckReplication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionSplitter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRootPath.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRootPath.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHBaseFsckComparator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckComparator.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionSplitter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHBaseFsckMOB.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckMOB.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHBaseFsckComparator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckComparator.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestByteBuffUtils.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestByteBuffUtils.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHBaseFsckMOB.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckMOB.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFSTableDescriptors.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFSTableDescriptors.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestByteBuffUtils.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestByteBuffUtils.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestDefaultEnvironmentEdge.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestDefaultEnvironmentEdge.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFSTableDescriptors.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFSTableDescriptors.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFSUtils.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFSUtils.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDefaultEnvironmentEdge.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestDefaultEnvironmentEdge.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSortedList.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestSortedList.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFSUtils.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFSUtils.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestBloomFilterChunk.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestBloomFilterChunk.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSortedList.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestSortedList.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFSHDFSUtils.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFSHDFSUtils.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestBloomFilterChunk.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestBloomFilterChunk.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestConfigurationUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestConfigurationUtil.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFSHDFSUtils.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFSHDFSUtils.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFSVisitor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFSVisitor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestConfigurationUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestConfigurationUtil.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestIdLock.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestIdLock.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFSVisitor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFSVisitor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHBaseFsckEncryption.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckEncryption.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestIdLock.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestIdLock.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestStealJobQueue.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestStealJobQueue.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHBaseFsckEncryption.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHBaseFsckEncryption.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMiniClusterLoadEncoded.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestMiniClusterLoadEncoded.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestStealJobQueue.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestStealJobQueue.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionMover.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionMover.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMiniClusterLoadEncoded.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestMiniClusterLoadEncoded.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestConnectionCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestConnectionCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionMover.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionMover.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestJSONMetricUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestJSONMetricUtil.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestConnectionCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestConnectionCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHFileArchiveUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHFileArchiveUtil.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestJSONMetricUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestJSONMetricUtil.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCoprocessorScanPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHFileArchiveUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestHFileArchiveUtil.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMiniClusterLoadSequential.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestMiniClusterLoadSequential.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCoprocessorScanPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFromClientSide3WoUnsafe.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFromClientSide3WoUnsafe.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMiniClusterLoadSequential.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestMiniClusterLoadSequential.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestEncryptionTest.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestEncryptionTest.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFromClientSide3WoUnsafe.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestFromClientSide3WoUnsafe.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCompressionTest.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestCompressionTest.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestEncryptionTest.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestEncryptionTest.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestIdReadWriteLock.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestIdReadWriteLock.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompressionTest.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestCompressionTest.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestBoundedPriorityBlockingQueue.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestBoundedPriorityBlockingQueue.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestIdReadWriteLock.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestIdReadWriteLock.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMiniClusterLoadParallel.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestMiniClusterLoadParallel.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestBoundedPriorityBlockingQueue.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestBoundedPriorityBlockingQueue.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionSplitCalculator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitCalculator.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMiniClusterLoadParallel.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestMiniClusterLoadParallel.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestRegionSplitCalculator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestRegionSplitCalculator.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestIncrementingEnvironmentEdge.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/TestIncrementingEnvironmentEdge.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 </tbody>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
index 6a83234..6530a4b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
@@ -2079,26 +2079,30 @@
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestUnexpectedStateException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestSplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestRegionStates.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestRegionStates.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestRogueRSAssignment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestRogueRSAssignment.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAssignmentOnRSCrash.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestAssignmentOnRSCrash.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestMergeTableRegionsProcedure.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/TestAssignmentManager.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/ipc/DelegatingRpcScheduler.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/ipc/DelegatingRpcScheduler.html b/testdevapidocs/org/apache/hadoop/hbase/ipc/DelegatingRpcScheduler.html
index f841917..866614c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/ipc/DelegatingRpcScheduler.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/ipc/DelegatingRpcScheduler.html
@@ -163,7 +163,7 @@ extends org.apache.hadoop.hbase.ipc.RpcScheduler</pre>
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.ipc.RpcScheduler</h3>
-<code>IPC_SERVER_MAX_CALLQUEUE_LENGTH, IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH</code></li>
+<code>IPC_SERVER_MAX_CALLQUEUE_LENGTH, IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH, IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH</code></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html
index d427927..19b85b8 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestRogueRSAssignment.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li>Next&nbsp;Class</li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html" target="_top">Frames</a></li>
@@ -838,7 +838,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestRogueRSAssignment.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li>Next&nbsp;Class</li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html
new file mode 100644
index 0000000..c43c03a
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html
@@ -0,0 +1,503 @@
+<!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>TestUnexpectedStateException (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TestUnexpectedStateException (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":10,"i2":9,"i3":10,"i4":10,"i5":10};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+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/TestUnexpectedStateException.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/assignment/TestSplitTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li>Next&nbsp;Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" target="_top">Frames</a></li>
+<li><a href="TestUnexpectedStateException.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.master.assignment</div>
+<h2 title="Class TestUnexpectedStateException" class="title">Class TestUnexpectedStateException</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.master.assignment.TestUnexpectedStateException</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#line.55">TestUnexpectedStateException</a>
+extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
+<div class="block">Tests for HBASE-18408 "AM consumes CPU and fills up the logs really fast when there is no RS to
+ assign". If an <code>UnexpectedStateException</code>, we'd spin on
+ the ProcedureExecutor consuming CPU and filling logs. Test new back-off facility.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#FAMILY">FAMILY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#LOG">LOG</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>org.junit.rules.TestName</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#name">name</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#REGIONS">REGIONS</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.TableName</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#tableName">tableName</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#TestUnexpectedStateException--">TestUnexpectedStateException</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#afterClass--">afterClass</a></span>()</code>&nbsp;</td>
+</tr>
+<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/assignment/TestUnexpectedStateException.html#before--">before</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#beforeClass--">beforeClass</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>private long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#getUnassignTimeout-org.apache.hbase.thirdparty.com.google.gson.JsonParser-java.lang.String-">getUnassignTimeout</a></span>(org.apache.hbase.thirdparty.com.google.gson.JsonParser&nbsp;parser,
+                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;proceduresAsJSON)</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.client.RegionInfo</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#pickArbitraryRegion-org.apache.hadoop.hbase.client.Admin-">pickArbitraryRegion</a></span>(org.apache.hadoop.hbase.client.Admin&nbsp;admin)</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#testUnableToAssign--">testUnableToAssign</a></span>()</code>
+<div class="block">Manufacture a state that will throw UnexpectedStateException.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#line.57">CLASS_RULE</a></pre>
+</li>
+</ul>
+<a name="name">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>name</h4>
+<pre>public final&nbsp;org.junit.rules.TestName <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#line.59">name</a></pre>
+</li>
+</ul>
+<a name="LOG">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>LOG</h4>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#line.61">LOG</a></pre>
+</li>
+</ul>
+<a name="TEST_UTIL">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TEST_UTIL</h4>
+<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#line.62">TEST_UTIL</a></pre>
+</li>
+</ul>
+<a name="FAMILY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>FAMILY</h4>
+<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#line.63">FAMILY</a></pre>
+</li>
+</ul>
+<a name="tableName">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tableName</h4>
+<pre>private&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#line.64">tableName</a></pre>
+</li>
+</ul>
+<a name="REGIONS">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>REGIONS</h4>
+<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#line.65">REGIONS</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.assignment.TestUnexpectedStateException.REGIONS">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TestUnexpectedStateException--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestUnexpectedStateException</h4>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#line.55">TestUnexpectedStateException</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="beforeClass--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>beforeClass</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#line.68">beforeClass</a>()
+                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="afterClass--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>afterClass</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#line.73">afterClass</a>()
+                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="before--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>before</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#line.78">before</a>()
+            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="pickArbitraryRegion-org.apache.hadoop.hbase.client.Admin-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>pickArbitraryRegion</h4>
+<pre>private&nbsp;org.apache.hadoop.hbase.client.RegionInfo&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#line.83">pickArbitraryRegion</a>(org.apache.hadoop.hbase.client.Admin&nbsp;admin)
+                                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="testUnableToAssign--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testUnableToAssign</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#line.97">testUnableToAssign</a>()
+                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<div class="block">Manufacture a state that will throw UnexpectedStateException.
+ Change an assigned region's 'state' to be OPENING. That'll mess up a subsequent unassign
+ causing it to throw UnexpectedStateException. We can easily manufacture this infinite retry
+ state in UnassignProcedure because it has no startTransition. AssignProcedure does where it
+ squashes whatever the current region state is making it OFFLINE. That makes it harder to mess
+ it up. Make do with UnassignProcedure for now.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getUnassignTimeout-org.apache.hbase.thirdparty.com.google.gson.JsonParser-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getUnassignTimeout</h4>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#line.153">getUnassignTimeout</a>(org.apache.hbase.thirdparty.com.google.gson.JsonParser&nbsp;parser,
+                                <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;proceduresAsJSON)
+                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>proceduresAsJSON</code> - This is String returned by admin.getProcedures call... an array of
+                         Procedures as JSON.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The Procedure timeout value parsed from the Unassign Procedure.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestUnexpectedStateException.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/assignment/TestSplitTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li>Next&nbsp;Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" target="_top">Frames</a></li>
+<li><a href="TestUnexpectedStateException.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <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/40477ee9/testdevapidocs/org/apache/hadoop/hbase/master/assignment/class-use/TestUnexpectedStateException.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/class-use/TestUnexpectedStateException.html b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/class-use/TestUnexpectedStateException.html
new file mode 100644
index 0000000..732628a
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/class-use/TestUnexpectedStateException.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.assignment.TestUnexpectedStateException (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.master.assignment.TestUnexpectedStateException (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">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/assignment/class-use/TestUnexpectedStateException.html" target="_top">Frames</a></li>
+<li><a href="TestUnexpectedStateException.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.assignment.TestUnexpectedStateException" class="title">Uses of Class<br>org.apache.hadoop.hbase.master.assignment.TestUnexpectedStateException</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.master.assignment.TestUnexpectedStateException</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/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">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/assignment/class-use/TestUnexpectedStateException.html" target="_top">Frames</a></li>
+<li><a href="TestUnexpectedStateException.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;2018 <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/40477ee9/testdevapidocs/org/apache/hadoop/hbase/master/assignment/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/package-frame.html
index cdffced..54805a7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/package-frame.html
@@ -28,6 +28,7 @@
 <li><a href="TestRegionStates.html" title="class in org.apache.hadoop.hbase.master.assignment" target="classFrame">TestRegionStates</a></li>
 <li><a href="TestRogueRSAssignment.html" title="class in org.apache.hadoop.hbase.master.assignment" target="classFrame">TestRogueRSAssignment</a></li>
 <li><a href="TestSplitTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment" target="classFrame">TestSplitTableRegionProcedure</a></li>
+<li><a href="TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment" target="classFrame">TestUnexpectedStateException</a></li>
 </ul>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/master/assignment/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/package-summary.html
index 65981b9..f370957 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/package-summary.html
@@ -145,6 +145,13 @@
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TestSplitTableRegionProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></td>
+<td class="colLast">
+<div class="block">Tests for HBASE-18408 "AM consumes CPU and fills up the logs really fast when there is no RS to
+ assign".</div>
+</td>
+</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/master/assignment/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/package-tree.html
index a6158e5..b68be44 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/assignment/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/assignment/package-tree.html
@@ -123,6 +123,7 @@
 <li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestRegionStates.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">TestRegionStates</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestRogueRSAssignment.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">TestRogueRSAssignment</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">TestSplitTableRegionProcedure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">TestUnexpectedStateException</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/master/snapshot/TestAssignProcedure.TargetServerBeingNulledOnUsAssignProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/snapshot/TestAssignProcedure.TargetServerBeingNulledOnUsAssignProcedure.html b/testdevapidocs/org/apache/hadoop/hbase/master/snapshot/TestAssignProcedure.TargetServerBeingNulledOnUsAssignProcedure.html
index 628ce37..a49388b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/snapshot/TestAssignProcedure.TargetServerBeingNulledOnUsAssignProcedure.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/snapshot/TestAssignProcedure.TargetServerBeingNulledOnUsAssignProcedure.html
@@ -285,14 +285,14 @@ extends org.apache.hadoop.hbase.master.assignment.AssignProcedure</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.assignment.RegionTransitionProcedure</h3>
-<code>abort, acquireLock, execute, getRegionInfo, getTableName, hasLock, holdLock, isMeta, isServerOnline, isServerOnline, releaseLock, remoteOperationCompleted, remoteOperationFailed, reportTransition, rollback, setRegionInfo, shouldWaitClientAck, toStringState</code></li>
+<code>abort, acquireLock, execute, getAttempt, getRegionInfo, getTableName, hasLock, holdLock, isMeta, isServerOnline, isServerOnline, releaseLock, remoteOperationCompleted, remoteOperationFailed, reportTransition, rollback, setAttempt, setRegionInfo, setTimeoutFailure, shouldWaitClientAck, toStringState</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.Procedure</h3>
-<code>addStackIndex, afterReplay, beforeReplay, compareTo, completionCleanup, doAcquireLock, doExecute, doReleaseLock, doRollback, elapsedTime, getChildrenLatch, getException, getLastUpdate, getNonceKey, getOwner, getParentProcId, getProcId, getProcIdHashCode, getProcName, getResult, getRootProcedureId, getRootProcId, getStackIndexes, getState, getSubmittedTime, getTimeout, getTimeoutTimestamp, hasChildren, hasException, hasOwner, hasParent, hasTimeout, haveSameParent, incChildrenLatch, isFailed, isFinished, isInitializing, isRunnable, isSuccess, isWaiting, isYieldAfterExecutionStep, removeStackIndex, setAbortFailure, setChildrenLatch, setFailure, setFailure, setLastUpdate, setNonceKey, setOwner, setOwner, setParentProcId, setProcId, setResult, setRootProcId, setStackIndexes, setState, setSubmittedTime, setTimeout, setTimeoutFailure, toString, toStringClass, toStringDetails, toStringSimpleSB, updateMetricsOnFinish, updateMetricsOnSubmit, updateTimestamp, wasExecuted</code></li>
+<code>addStackIndex, afterReplay, beforeReplay, compareTo, completionCleanup, doAcquireLock, doExecute, doReleaseLock, doRollback, elapsedTime, getChildrenLatch, getException, getLastUpdate, getNonceKey, getOwner, getParentProcId, getProcId, getProcIdHashCode, getProcName, getResult, getRootProcedureId, getRootProcId, getStackIndexes, getState, getSubmittedTime, getTimeout, getTimeoutTimestamp, hasChildren, hasException, hasOwner, hasParent, hasTimeout, haveSameParent, incChildrenLatch, isFailed, isFinished, isInitializing, isRunnable, isSuccess, isWaiting, isYieldAfterExecutionStep, removeStackIndex, setAbortFailure, setChildrenLatch, setFailure, setFailure, setLastUpdate, setNonceKey, setOwner, setOwner, setParentProcId, setProcId, setResult, setRootProcId, setStackIndexes, setState, setSubmittedTime, setTimeout, toString, toStringClass, toStringDetails, toStringSimpleSB, updateMetricsOnFinish, updateMetricsOnSubmit, updateTimestamp, wasExecuted</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/40477ee9/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 8e559cb..2aae146 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -569,15 +569,15 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/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/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/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html
index e50f5aa..0039f39 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html#line.206">TestProcedureEvents.TestProcEnv</a>
+<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html#line.213">TestProcedureEvents.TestProcEnv</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -184,7 +184,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestProcEnv</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html#line.206">TestProcEnv</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html#line.213">TestProcEnv</a>()</pre>
 </li>
 </ul>
 </li>
@@ -201,7 +201,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getProcedureScheduler</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureScheduler&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html#line.207">getProcedureScheduler</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureScheduler&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestProcEnv.html#line.214">getProcedureScheduler</a>()</pre>
 </li>
 </ul>
 </li>


[04/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 9365417..7357dd2 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -375,7 +375,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 3563edd..8e1453d 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -769,7 +769,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 2ac6ed4..8b74346 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -335,7 +335,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 208f276..c7e4004 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -305,7 +305,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index 31af7b4..6ce9af7 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -331,7 +331,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 894eab8..9ebb449 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -63,7 +63,7 @@ Running Apache HBase (TM) in pseudo-distributed mode
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -308,7 +308,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index b7916e6..ce11b06 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -63,7 +63,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -303,7 +303,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index baa6f02..3847da7 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -331,7 +331,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index fa51325..75f4c05 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -299,7 +299,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 2f018c5..52ec3cc 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -333,7 +333,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index c676510..82368bd 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -520,7 +520,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index 45648b1..c129180 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -730,7 +730,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index b96d573..f6264df 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -1858,6 +1858,7 @@
 <li><a href="org/apache/hadoop/hbase/client/TestResultScannerCursor.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestResultScannerCursor</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestResultSizeEstimation.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestResultSizeEstimation</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestRetriesExhaustedWithDetailsException.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestRetriesExhaustedWithDetailsException</a></li>
+<li><a href="org/apache/hadoop/hbase/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestRetryCounter</a></li>
 <li><a href="org/apache/hadoop/hbase/util/TestReusablePoolMap.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestReusablePoolMap</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestReversedScannerCallable.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestReversedScannerCallable</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestReversibleScanners</a></li>
@@ -2200,6 +2201,7 @@
 <li><a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.TokenServer.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestTokenAuthentication.TokenServer</a></li>
 <li><a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token" target="classFrame">TestTokenUtil</a></li>
 <li><a href="org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">TestTruncateTableProcedure</a></li>
+<li><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment" target="classFrame">TestUnexpectedStateException</a></li>
 <li><a href="org/apache/hadoop/hbase/types/TestUnion2.html" title="class in org.apache.hadoop.hbase.types" target="classFrame">TestUnion2</a></li>
 <li><a href="org/apache/hadoop/hbase/types/TestUnion2.SampleUnion1.html" title="class in org.apache.hadoop.hbase.types" target="classFrame">TestUnion2.SampleUnion1</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestUpdateConfiguration.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestUpdateConfiguration</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 80e9bc1..4d56c33 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -1858,6 +1858,7 @@
 <li><a href="org/apache/hadoop/hbase/client/TestResultScannerCursor.html" title="class in org.apache.hadoop.hbase.client">TestResultScannerCursor</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestResultSizeEstimation.html" title="class in org.apache.hadoop.hbase.client">TestResultSizeEstimation</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestRetriesExhaustedWithDetailsException.html" title="class in org.apache.hadoop.hbase.client">TestRetriesExhaustedWithDetailsException</a></li>
+<li><a href="org/apache/hadoop/hbase/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util">TestRetryCounter</a></li>
 <li><a href="org/apache/hadoop/hbase/util/TestReusablePoolMap.html" title="class in org.apache.hadoop.hbase.util">TestReusablePoolMap</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestReversedScannerCallable.html" title="class in org.apache.hadoop.hbase.client">TestReversedScannerCallable</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver">TestReversibleScanners</a></li>
@@ -2200,6 +2201,7 @@
 <li><a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.TokenServer.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenAuthentication.TokenServer</a></li>
 <li><a href="org/apache/hadoop/hbase/security/token/TestTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenUtil</a></li>
 <li><a href="org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TestTruncateTableProcedure</a></li>
+<li><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></li>
 <li><a href="org/apache/hadoop/hbase/types/TestUnion2.html" title="class in org.apache.hadoop.hbase.types">TestUnion2</a></li>
 <li><a href="org/apache/hadoop/hbase/types/TestUnion2.SampleUnion1.html" title="class in org.apache.hadoop.hbase.types">TestUnion2.SampleUnion1</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestUpdateConfiguration.html" title="class in org.apache.hadoop.hbase.client">TestUpdateConfiguration</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/constant-values.html b/testdevapidocs/constant-values.html
index 9d8cf5c..a1aa8c3 100644
--- a/testdevapidocs/constant-values.html
+++ b/testdevapidocs/constant-values.html
@@ -7192,6 +7192,25 @@
 </tbody>
 </table>
 </li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.master.assignment.TestUnexpectedStateException.REGIONS">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#REGIONS">REGIONS</a></code></td>
+<td class="colLast"><code>10</code></td>
+</tr>
+</tbody>
+</table>
+</li>
 </ul>
 <ul class="blockList">
 <li class="blockList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index d4a5341..3068fb4 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -1135,6 +1135,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestWALPlayer.html#afterClass--">afterClass()</a></span> - Static method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestWALPlayer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestWALPlayer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#afterClass--">afterClass()</a></span> - Static method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionOpen.html#afterClass--">afterClass()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionOpen.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionOpen</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionReplicas.html#afterClass--">afterClass()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionReplicas.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicas</a></dt>
@@ -2297,6 +2299,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/AbstractTestDLS.html#before--">before()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/AbstractTestDLS.html" title="class in org.apache.hadoop.hbase.master">AbstractTestDLS</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#before--">before()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/BalancerTestBase2.html#before--">before()</a></span> - Method in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/BalancerTestBase2.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerTestBase2</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestClusterStatusPublisher.html#before--">before()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestClusterStatusPublisher.html" title="class in org.apache.hadoop.hbase.master">TestClusterStatusPublisher</a></dt>
@@ -2443,6 +2447,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestWALPlayer.html#beforeClass--">beforeClass()</a></span> - Static method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestWALPlayer.html" title="class in org.apache.hadoop.hbase.mapreduce">TestWALPlayer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#beforeClass--">beforeClass()</a></span> - Static method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestCatalogJanitor.html#beforeClass--">beforeClass()</a></span> - Static method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestCatalogJanitor.html" title="class in org.apache.hadoop.hbase.master">TestCatalogJanitor</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestParallelPut.html#beforeClass--">beforeClass()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestParallelPut.html" title="class in org.apache.hadoop.hbase.regionserver">TestParallelPut</a></dt>
@@ -4909,6 +4915,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TestSplitTableRegionProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">TestBaseLoadBalancer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/TestDefaultLoadBalancer.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestDefaultLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">TestDefaultLoadBalancer</a></dt>
@@ -6281,6 +6289,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestRegionSplitter.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestRegionSplitter.html" title="class in org.apache.hadoop.hbase.util">TestRegionSplitter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestRetryCounter.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util">TestRetryCounter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestReusablePoolMap.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestReusablePoolMap.html" title="class in org.apache.hadoop.hbase.util">TestReusablePoolMap</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestRootPath.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestRootPath.html" title="class in org.apache.hadoop.hbase.util">TestRootPath</a></dt>
@@ -13655,6 +13665,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestRogueRSAssignment.html#FAMILY">FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestRogueRSAssignment.html" title="class in org.apache.hadoop.hbase.master.assignment">TestRogueRSAssignment</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#FAMILY">FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/TestRegionLocationFinder.html#FAMILY">FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestRegionLocationFinder.html" title="class in org.apache.hadoop.hbase.master.balancer">TestRegionLocationFinder</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestCatalogJanitorInMemoryStates.html#FAMILY">FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestCatalogJanitorInMemoryStates.html" title="class in org.apache.hadoop.hbase.master">TestCatalogJanitorInMemoryStates</a></dt>
@@ -18570,6 +18582,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getTypeByte--">getTypeByte()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#getUnassignTimeout-org.apache.hbase.thirdparty.com.google.gson.JsonParser-java.lang.String-">getUnassignTimeout(JsonParser, String)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/TestQuotaTableUtil.html#getUniqueTableName--">getUniqueTableName()</a></span> - Method in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/TestQuotaTableUtil.html" title="class in org.apache.hadoop.hbase.quotas">TestQuotaTableUtil</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestCase.html#getUnitTestdir-java.lang.String-">getUnitTestdir(String)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestCase.html" title="class in org.apache.hadoop.hbase">HBaseTestCase</a></dt>
@@ -23019,6 +23033,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TestSplitTableRegionProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/BalancerTestBase.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/BalancerTestBase.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerTestBase</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/LoadBalancerPerformanceEvaluation.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/LoadBalancerPerformanceEvaluation.html" title="class in org.apache.hadoop.hbase.master.balancer">LoadBalancerPerformanceEvaluation</a></dt>
@@ -23757,6 +23773,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestRegionSplitter.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestRegionSplitter.html" title="class in org.apache.hadoop.hbase.util">TestRegionSplitter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestRetryCounter.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util">TestRetryCounter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestRootPath.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestRootPath.html" title="class in org.apache.hadoop.hbase.util">TestRootPath</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestShowProperties.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestShowProperties.html" title="class in org.apache.hadoop.hbase.util">TestShowProperties</a></dt>
@@ -26011,6 +26029,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TestSplitTableRegionProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">TestBaseLoadBalancer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/TestDefaultLoadBalancer.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestDefaultLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">TestDefaultLoadBalancer</a></dt>
@@ -28757,6 +28777,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ResourceChecker.Phase.html#Phase--">Phase()</a></span> - Constructor for enum org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase">ResourceChecker.Phase</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#pickArbitraryRegion-org.apache.hadoop.hbase.client.Admin-">pickArbitraryRegion(Admin)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/ProcessBasedLocalHBaseCluster.html#pidFilePath-org.apache.hadoop.hbase.util.ProcessBasedLocalHBaseCluster.ServerType-int-">pidFilePath(ProcessBasedLocalHBaseCluster.ServerType, int)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ProcessBasedLocalHBaseCluster.html" title="class in org.apache.hadoop.hbase.util">ProcessBasedLocalHBaseCluster</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/ProtobufCoprocessorService.html#ping-com.google.protobuf.RpcController-org.apache.hadoop.hbase.ipc.protobuf.generated.TestProtos.EmptyRequestProto-com.google.protobuf.RpcCallback-">ping(RpcController, TestProtos.EmptyRequestProto, RpcCallback&lt;TestProtos.EmptyResponseProto&gt;)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/ProtobufCoprocessorService.html" title="class in org.apache.hadoop.hbase.coprocessor">ProtobufCoprocessorService</a></dt>
@@ -31866,6 +31888,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/TestTableQuotaViolationStore.html#regionReports">regionReports</a></span> - Variable in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/TestTableQuotaViolationStore.html" title="class in org.apache.hadoop.hbase.quotas">TestTableQuotaViolationStore</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#REGIONS">REGIONS</a></span> - Static variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/LoadBalancerPerformanceEvaluation.html#regions">regions</a></span> - Variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/LoadBalancerPerformanceEvaluation.html" title="class in org.apache.hadoop.hbase.master.balancer">LoadBalancerPerformanceEvaluation</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticBalancerPickers.html#REGIONS">REGIONS</a></span> - Static variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticBalancerPickers.html" title="class in org.apache.hadoop.hbase.master.balancer">TestFavoredStochasticBalancerPickers</a></dt>
@@ -40352,6 +40376,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/AbstractTestDLS.html#tableName">tableName</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/AbstractTestDLS.html" title="class in org.apache.hadoop.hbase.master">AbstractTestDLS</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#tableName">tableName</a></span> - Variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/TestRegionLocationFinder.html#tableName">tableName</a></span> - Static variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestRegionLocationFinder.html" title="class in org.apache.hadoop.hbase.master.balancer">TestRegionLocationFinder</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/locking/TestLockManager.html#tableName">tableName</a></span> - Static variable in class org.apache.hadoop.hbase.master.locking.<a href="org/apache/hadoop/hbase/master/locking/TestLockManager.html" title="class in org.apache.hadoop.hbase.master.locking">TestLockManager</a></dt>
@@ -42468,6 +42494,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/AbstractTestDLS.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/AbstractTestDLS.html" title="class in org.apache.hadoop.hbase.master">AbstractTestDLS</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticBalancerPickers.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticBalancerPickers.html" title="class in org.apache.hadoop.hbase.master.balancer">TestFavoredStochasticBalancerPickers</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticLoadBalancer.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">TestFavoredStochasticLoadBalancer</a></dt>
@@ -44266,6 +44294,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.html#testBasics--">testBasics()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestRetryCounter.html#testBasics--">testBasics()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util">TestRetryCounter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestSimpleMutableByteRange.html#testBasics--">testBasics()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestSimpleMutableByteRange.html" title="class in org.apache.hadoop.hbase.util">TestSimpleMutableByteRange</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestScannerFromBucketCache.html#testBasicScanWithLRUCache--">testBasicScanWithLRUCache()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestScannerFromBucketCache.html" title="class in org.apache.hadoop.hbase.io.hfile">TestScannerFromBucketCache</a></dt>
@@ -57830,6 +57860,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCache.html#testRetrieveFromFile--">testRetrieveFromFile()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.bucket.<a href="org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCache.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">TestBucketCache</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">TestRetryCounter</span></a> - Class in <a href="org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></dt>
+<dd>
+<div class="block">Basic test for some old functionality we don't seem to have used but that looks nice.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestRetryCounter.html#TestRetryCounter--">TestRetryCounter()</a></span> - Constructor for class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestRetryCounter.html" title="class in org.apache.hadoop.hbase.util">TestRetryCounter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestMetaTableAccessor.html#testRetrying--">testRetrying()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestMetaTableAccessor.html" title="class in org.apache.hadoop.hbase">TestMetaTableAccessor</a></dt>
 <dd>
 <div class="block">Does <code>MetaTableAccessor.getRegion(Connection, byte[])</code> and a write
@@ -61714,7 +61750,10 @@
 <div class="block">Remove the @Ignore to try out timeout and retry asettings</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html#testTimeoutEventProcedure--">testTimeoutEventProcedure()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/TestProcedureEvents.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureEvents</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tests being able to suspend a Procedure for N timeouts and then failing.s
+ Resets the timeout after each elapses.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#TestTimeoutEventProcedure--">TestTimeoutEventProcedure()</a></span> - Constructor for class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureEvents.TestTimeoutEventProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html#TestTimeoutEventProcedure-int-int-">TestTimeoutEventProcedure(int, int)</a></span> - Constructor for class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/TestProcedureEvents.TestTimeoutEventProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureEvents.TestTimeoutEventProcedure</a></dt>
@@ -61980,6 +62019,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/crypto/TestEncryption.html#testTypicalHFileBlocks--">testTypicalHFileBlocks()</a></span> - Method in class org.apache.hadoop.hbase.io.crypto.<a href="org/apache/hadoop/hbase/io/crypto/TestEncryption.html" title="class in org.apache.hadoop.hbase.io.crypto">TestEncryption</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#testUnableToAssign--">testUnableToAssign()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></dt>
+<dd>
+<div class="block">Manufacture a state that will throw UnexpectedStateException.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/TestAccessController.html#testUnassign--">testUnassign()</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/TestAccessController.html" title="class in org.apache.hadoop.hbase.security.access">TestAccessController</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestAssignmentManager.html#testUnassignAndCrashBeforeResponse--">testUnassignAndCrashBeforeResponse()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestAssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">TestAssignmentManager</a></dt>
@@ -62012,6 +62055,13 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/TestParseFilter.html#testUnescapedQuote3--">testUnescapedQuote3()</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestParseFilter.html" title="class in org.apache.hadoop.hbase.filter">TestParseFilter</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">TestUnexpectedStateException</span></a> - Class in <a href="org/apache/hadoop/hbase/master/assignment/package-summary.html">org.apache.hadoop.hbase.master.assignment</a></dt>
+<dd>
+<div class="block">Tests for HBASE-18408 "AM consumes CPU and fills up the logs really fast when there is no RS to
+ assign".</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html#TestUnexpectedStateException--">TestUnexpectedStateException()</a></span> - Constructor for class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.html" title="class in org.apache.hadoop.hbase.master.assignment">TestUnexpectedStateException</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/TestFSHLog.html#testUnflushedSeqIdTracking--">testUnflushedSeqIdTracking()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/TestFSHLog.html" title="class in org.apache.hadoop.hbase.regionserver.wal">TestFSHLog</a></dt>
 <dd>
 <div class="block">Test case for https://issues.apache.org/jira/browse/HBASE-16721</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html b/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html
index 1652604..d708d04 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html
@@ -175,7 +175,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/ipc/DelegatingRpcScheduler.
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.ipc.RpcScheduler</h3>
-<code>IPC_SERVER_MAX_CALLQUEUE_LENGTH, IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH</code></li>
+<code>IPC_SERVER_MAX_CALLQUEUE_LENGTH, IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH, IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH</code></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index e159b3f..3168ee3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -145,8 +145,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.Failure.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestBackupDeleteWithFailures.Failure</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.FailurePhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestIncrementalBackupMergeWithFailures.FailurePhase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.Failure.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestBackupDeleteWithFailures.Failure</span></a></li>
 </ul>
 </li>
 </ul>


[13/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
index 6c3402f..bada433 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
@@ -142,265 +142,273 @@
 <span class="sourceLineNo">134</span>    if (this.targetServer != null) {<a name="line.134"></a>
 <span class="sourceLineNo">135</span>      state.setTargetServer(ProtobufUtil.toServerName(this.targetServer));<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    serializer.serialize(state.build());<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>  protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      throws IOException {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    final AssignRegionStateData state = serializer.deserialize(AssignRegionStateData.class);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    setTransitionState(state.getTransitionState());<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    setRegionInfo(ProtobufUtil.toRegionInfo(state.getRegionInfo()));<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    forceNewPlan = state.getForceNewPlan();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    if (state.hasTargetServer()) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      this.targetServer = ProtobufUtil.toServerName(state.getTargetServer());<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  @Override<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  protected boolean startTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      throws IOException {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    // If the region is already open we can't do much...<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    if (regionNode.isInState(State.OPEN) &amp;&amp; isServerOnline(env, regionNode)) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      LOG.info("Assigned, not reassigning; " + this + "; " + regionNode.toShortString());<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      return false;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    // Don't assign if table is in disabling or disabled state.<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    TableStateManager tsm = env.getMasterServices().getTableStateManager();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    TableName tn = regionNode.getRegionInfo().getTable();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    if (tsm.getTableState(tn).isDisabledOrDisabling()) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      LOG.info("Table " + tn + " state=" + tsm.getTableState(tn) + ", skipping " + this);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return false;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // If the region is SPLIT, we can't assign it. But state might be CLOSED, rather than<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    // SPLIT which is what a region gets set to when unassigned as part of SPLIT. FIX.<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    if (regionNode.isInState(State.SPLIT) ||<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        (regionNode.getRegionInfo().isOffline() &amp;&amp; regionNode.getRegionInfo().isSplit())) {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      LOG.info("SPLIT, cannot be assigned; " + this + "; " + regionNode +<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        "; hri=" + regionNode.getRegionInfo());<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      return false;<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>    // If we haven't started the operation yet, we can abort<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    if (aborted.get() &amp;&amp; regionNode.isInState(State.CLOSED, State.OFFLINE)) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        regionNode.setState(State.FAILED_OPEN);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        setFailure(getClass().getSimpleName(),<a name="line.180"></a>
-<span class="sourceLineNo">181</span>          new RetriesExhaustedException("Max attempts exceeded"));<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      } else {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        setAbortFailure(getClass().getSimpleName(), "Abort requested");<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      }<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>    // Send assign (add into assign-pool). Region is now in OFFLINE state. Setting offline state<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    // scrubs what was the old region location. Setting a new regionLocation here is how we retain<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    // old assignment or specify target server if a move or merge. See<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    // AssignmentManager#processAssignQueue. Otherwise, balancer gives us location.<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    ServerName lastRegionLocation = regionNode.offline();<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    boolean retain = false;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    if (!forceNewPlan) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      if (this.targetServer != null) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        retain = targetServer.equals(lastRegionLocation);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>        regionNode.setRegionLocation(targetServer);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      } else {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        if (lastRegionLocation != null) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>          // Try and keep the location we had before we offlined.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>          retain = true;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          regionNode.setRegionLocation(lastRegionLocation);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        } else if (regionNode.getLastHost() != null) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          retain = true;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>          LOG.info("Setting lastHost as the region location " + regionNode.getLastHost());<a name="line.205"></a>
-<span class="sourceLineNo">206</span>          regionNode.setRegionLocation(regionNode.getLastHost());<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>    }<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    LOG.info("Starting " + this + "; " + regionNode.toShortString() +<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        "; forceNewPlan=" + this.forceNewPlan +<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        ", retain=" + retain);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    env.getAssignmentManager().queueAssign(regionNode);<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>  protected boolean updateTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  throws IOException, ProcedureSuspendedException {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    // TODO: crash if destinationServer is specified and not online<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    // which is also the case when the balancer provided us with a different location.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    if (LOG.isTraceEnabled()) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      LOG.trace("Update " + this + "; " + regionNode.toShortString());<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (regionNode.getRegionLocation() == null) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return 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>    if (!isServerOnline(env, regionNode)) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      // TODO: is this correct? should we wait the chore/ssh?<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      LOG.info("Server not online, re-queuing " + this + "; " + regionNode.toShortString());<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<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><a name="line.236"></a>
-<span class="sourceLineNo">237</span>    if (env.getAssignmentManager().waitServerReportEvent(regionNode.getRegionLocation(), this)) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      LOG.info("Early suspend! " + this + "; " + regionNode.toShortString());<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      throw new ProcedureSuspendedException();<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>    if (regionNode.isInState(State.OPEN)) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      LOG.info("Already assigned: " + this + "; " + regionNode.toShortString());<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return false;<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>    // Transition regionNode State. Set it to OPENING. Update hbase:meta, and add<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    // region to list of regions on the target regionserver. Need to UNDO if failure!<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    env.getAssignmentManager().markRegionAsOpening(regionNode);<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>    // TODO: Requires a migration to be open by the RS?<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    // regionNode.getFormatVersion()<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>    if (!addToRemoteDispatcher(env, regionNode.getRegionLocation())) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      // Failed the dispatch BUT addToRemoteDispatcher internally does<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      // cleanup on failure -- even the undoing of markRegionAsOpening above --<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      // so nothing more to do here; in fact we need to get out of here<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      // fast since we've been put back on the scheduler.<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>    // We always return true, even if we fail dispatch because addToRemoteDispatcher<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    // failure processing sets state back to REGION_TRANSITION_QUEUE so we try again;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    // i.e. return true to keep the Procedure running; it has been reset to startover.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    return true;<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 finishTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      throws IOException {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    env.getAssignmentManager().markRegionAsOpened(regionNode);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // This success may have been after we failed open a few times. Be sure to cleanup any<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    // failed open references. See #incrementAndCheckMaxAttempts and where it is called.<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    env.getAssignmentManager().getRegionStates().removeFromFailedOpen(regionNode.getRegionInfo());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  @Override<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  protected void reportTransition(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      final TransitionCode code, final long openSeqNum) throws UnexpectedStateException {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    switch (code) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      case OPENED:<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        if (openSeqNum &lt; 0) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.282"></a>
-<span class="sourceLineNo">283</span>              " transition openSeqNum=" + openSeqNum + ", " + regionNode);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        if (openSeqNum &lt; regionNode.getOpenSeqNum()) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          LOG.warn("Skipping update of open seqnum with " + openSeqNum +<a name="line.286"></a>
-<span class="sourceLineNo">287</span>              " because current seqnum=" + regionNode.getOpenSeqNum());<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        } else {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          regionNode.setOpenSeqNum(openSeqNum);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        // Leave the state here as OPENING for now. We set it to OPEN in<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        // REGION_TRANSITION_FINISH section where we do a bunch of checks.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        // regionNode.setState(RegionState.State.OPEN, RegionState.State.OPENING);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        setTransitionState(RegionTransitionState.REGION_TRANSITION_FINISH);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        break;<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      case FAILED_OPEN:<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        handleFailure(env, regionNode);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        break;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      default:<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.300"></a>
-<span class="sourceLineNo">301</span>            " transition openSeqNum=" + openSeqNum + ", " + regionNode.toShortString() +<a name="line.301"></a>
-<span class="sourceLineNo">302</span>            ", " + this + ", expected OPENED or FAILED_OPEN.");<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><a name="line.305"></a>
-<span class="sourceLineNo">306</span>  /**<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * Called when dispatch or subsequent OPEN request fail. Can be run by the<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * inline dispatch call or later by the ServerCrashProcedure. Our state is<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * generally OPENING. Cleanup and reset to OFFLINE and put our Procedure<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * State back to REGION_TRANSITION_QUEUE so the Assign starts over.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   */<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  private void handleFailure(final MasterProcedureEnv env, final RegionStateNode regionNode) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      aborted.set(true);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    this.forceNewPlan = true;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    this.targetServer = null;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    regionNode.offline();<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    // We were moved to OPENING state before dispatch. Undo. It is safe to call<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    // this method because it checks for OPENING first.<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    env.getAssignmentManager().undoRegionAsOpening(regionNode);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<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>  private boolean incrementAndCheckMaxAttempts(final MasterProcedureEnv env,<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      final RegionStateNode regionNode) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    final int retries = env.getAssignmentManager().getRegionStates().<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        addToFailedOpen(regionNode).incrementAndGetRetries();<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    int max = env.getAssignmentManager().getAssignMaxAttempts();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    LOG.info("Retry=" + retries + " of max=" + max + "; " +<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        this + "; " + regionNode.toShortString());<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    return retries &gt;= max;<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 RemoteOperation remoteCallBuild(final MasterProcedureEnv env, final ServerName serverName) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    assert serverName.equals(getRegionState(env).getRegionLocation());<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    return new RegionOpenOperation(this, getRegionInfo(),<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        env.getAssignmentManager().getFavoredNodes(getRegionInfo()), 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>  protected boolean remoteCallFailed(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      final IOException exception) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    handleFailure(env, regionNode);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    return true;<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>  @Override<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    super.toStringClassDetails(sb);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    if (this.targetServer != null) sb.append(", target=").append(this.targetServer);<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 ServerName getServer(final MasterProcedureEnv env) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    RegionStateNode node =<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(this.getRegionInfo());<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    if (node == null) return null;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    return node.getRegionLocation();<a name="line.360"></a>
+<span class="sourceLineNo">137</span>    if (getAttempt() &gt; 0) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      state.setAttempt(getAttempt());<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    }<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    serializer.serialize(state.build());<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  }<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  @Override<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      throws IOException {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    final AssignRegionStateData state = serializer.deserialize(AssignRegionStateData.class);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    setTransitionState(state.getTransitionState());<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    setRegionInfo(ProtobufUtil.toRegionInfo(state.getRegionInfo()));<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    forceNewPlan = state.getForceNewPlan();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    if (state.hasTargetServer()) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      this.targetServer = ProtobufUtil.toServerName(state.getTargetServer());<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    if (state.hasAttempt()) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      setAttempt(state.getAttempt());<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  }<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>  @Override<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  protected boolean startTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      throws IOException {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    // If the region is already open we can't do much...<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    if (regionNode.isInState(State.OPEN) &amp;&amp; isServerOnline(env, regionNode)) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      LOG.info("Assigned, not reassigning; " + this + "; " + regionNode.toShortString());<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      return false;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    // Don't assign if table is in disabling or disabled state.<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    TableStateManager tsm = env.getMasterServices().getTableStateManager();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    TableName tn = regionNode.getRegionInfo().getTable();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    if (tsm.getTableState(tn).isDisabledOrDisabling()) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      LOG.info("Table " + tn + " state=" + tsm.getTableState(tn) + ", skipping " + this);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      return false;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    // If the region is SPLIT, we can't assign it. But state might be CLOSED, rather than<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    // SPLIT which is what a region gets set to when unassigned as part of SPLIT. FIX.<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    if (regionNode.isInState(State.SPLIT) ||<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        (regionNode.getRegionInfo().isOffline() &amp;&amp; regionNode.getRegionInfo().isSplit())) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      LOG.info("SPLIT, cannot be assigned; " + this + "; " + regionNode +<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        "; hri=" + regionNode.getRegionInfo());<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      return false;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>    // If we haven't started the operation yet, we can abort<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    if (aborted.get() &amp;&amp; regionNode.isInState(State.CLOSED, State.OFFLINE)) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        regionNode.setState(State.FAILED_OPEN);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        setFailure(getClass().getSimpleName(),<a name="line.186"></a>
+<span class="sourceLineNo">187</span>          new RetriesExhaustedException("Max attempts exceeded"));<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      } else {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        setAbortFailure(getClass().getSimpleName(), "Abort requested");<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      return false;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    }<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>    // Send assign (add into assign-pool). We call regionNode.offline below to set state to<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    // OFFLINE and to clear the region location. Setting a new regionLocation here is how we retain<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // old assignment or specify target server if a move or merge. See<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    // AssignmentManager#processAssignQueue. Otherwise, balancer gives us location.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    // TODO: Region will be set into OFFLINE state below regardless of what its previous state was<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    // This is dangerous? Wrong? What if region was in an unexpected state?<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    ServerName lastRegionLocation = regionNode.offline();<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    boolean retain = false;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (!forceNewPlan) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      if (this.targetServer != null) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        retain = targetServer.equals(lastRegionLocation);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        regionNode.setRegionLocation(targetServer);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      } else {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        if (lastRegionLocation != null) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          // Try and keep the location we had before we offlined.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>          retain = true;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          regionNode.setRegionLocation(lastRegionLocation);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        } else if (regionNode.getLastHost() != null) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>          retain = true;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>          LOG.info("Setting lastHost as the region location " + regionNode.getLastHost());<a name="line.213"></a>
+<span class="sourceLineNo">214</span>          regionNode.setRegionLocation(regionNode.getLastHost());<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        }<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      }<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    LOG.info("Starting " + this + "; " + regionNode.toShortString() +<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        "; forceNewPlan=" + this.forceNewPlan +<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        ", retain=" + retain);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    env.getAssignmentManager().queueAssign(regionNode);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    return true;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>  @Override<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  protected boolean updateTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  throws IOException, ProcedureSuspendedException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    // TODO: crash if destinationServer is specified and not online<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    // which is also the case when the balancer provided us with a different location.<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    if (LOG.isTraceEnabled()) {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      LOG.trace("Update " + this + "; " + regionNode.toShortString());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    if (regionNode.getRegionLocation() == null) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      return true;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>    if (!isServerOnline(env, regionNode)) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      // TODO: is this correct? should we wait the chore/ssh?<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      LOG.info("Server not online, re-queuing " + this + "; " + regionNode.toShortString());<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      return true;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
+<span class="sourceLineNo">244</span><a name="line.244"></a>
+<span class="sourceLineNo">245</span>    if (env.getAssignmentManager().waitServerReportEvent(regionNode.getRegionLocation(), this)) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      LOG.info("Early suspend! " + this + "; " + regionNode.toShortString());<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      throw new ProcedureSuspendedException();<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    if (regionNode.isInState(State.OPEN)) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      LOG.info("Already assigned: " + this + "; " + regionNode.toShortString());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      return false;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    }<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>    // Transition regionNode State. Set it to OPENING. Update hbase:meta, and add<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    // region to list of regions on the target regionserver. Need to UNDO if failure!<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    env.getAssignmentManager().markRegionAsOpening(regionNode);<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    // TODO: Requires a migration to be open by the RS?<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    // regionNode.getFormatVersion()<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>    if (!addToRemoteDispatcher(env, regionNode.getRegionLocation())) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      // Failed the dispatch BUT addToRemoteDispatcher internally does<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      // cleanup on failure -- even the undoing of markRegionAsOpening above --<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      // so nothing more to do here; in fact we need to get out of here<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      // fast since we've been put back on the scheduler.<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    // We always return true, even if we fail dispatch because addToRemoteDispatcher<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // failure processing sets state back to REGION_TRANSITION_QUEUE so we try again;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    // i.e. return true to keep the Procedure running; it has been reset to startover.<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    return true;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  protected void finishTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      throws IOException {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    env.getAssignmentManager().markRegionAsOpened(regionNode);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    // This success may have been after we failed open a few times. Be sure to cleanup any<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    // failed open references. See #incrementAndCheckMaxAttempts and where it is called.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    env.getAssignmentManager().getRegionStates().removeFromFailedOpen(regionNode.getRegionInfo());<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  }<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  @Override<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  protected void reportTransition(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      final TransitionCode code, final long openSeqNum) throws UnexpectedStateException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    switch (code) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      case OPENED:<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        if (openSeqNum &lt; 0) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.290"></a>
+<span class="sourceLineNo">291</span>              " transition openSeqNum=" + openSeqNum + ", " + regionNode);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        if (openSeqNum &lt; regionNode.getOpenSeqNum()) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          LOG.warn("Skipping update of open seqnum with " + openSeqNum +<a name="line.294"></a>
+<span class="sourceLineNo">295</span>              " because current seqnum=" + regionNode.getOpenSeqNum());<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        } else {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>          regionNode.setOpenSeqNum(openSeqNum);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        // Leave the state here as OPENING for now. We set it to OPEN in<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        // REGION_TRANSITION_FINISH section where we do a bunch of checks.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        // regionNode.setState(RegionState.State.OPEN, RegionState.State.OPENING);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        setTransitionState(RegionTransitionState.REGION_TRANSITION_FINISH);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        break;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      case FAILED_OPEN:<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        handleFailure(env, regionNode);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        break;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      default:<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.308"></a>
+<span class="sourceLineNo">309</span>            " transition openSeqNum=" + openSeqNum + ", " + regionNode.toShortString() +<a name="line.309"></a>
+<span class="sourceLineNo">310</span>            ", " + this + ", expected OPENED or FAILED_OPEN.");<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  }<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  /**<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * Called when dispatch or subsequent OPEN request fail. Can be run by the<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * inline dispatch call or later by the ServerCrashProcedure. Our state is<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * generally OPENING. Cleanup and reset to OFFLINE and put our Procedure<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * State back to REGION_TRANSITION_QUEUE so the Assign starts over.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  private void handleFailure(final MasterProcedureEnv env, final RegionStateNode regionNode) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      aborted.set(true);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    this.forceNewPlan = true;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    this.targetServer = null;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    regionNode.offline();<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    // We were moved to OPENING state before dispatch. Undo. It is safe to call<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    // this method because it checks for OPENING first.<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    env.getAssignmentManager().undoRegionAsOpening(regionNode);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  private boolean incrementAndCheckMaxAttempts(final MasterProcedureEnv env,<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      final RegionStateNode regionNode) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    final int retries = env.getAssignmentManager().getRegionStates().<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        addToFailedOpen(regionNode).incrementAndGetRetries();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    int max = env.getAssignmentManager().getAssignMaxAttempts();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    LOG.info("Retry=" + retries + " of max=" + max + "; " +<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        this + "; " + regionNode.toShortString());<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    return retries &gt;= max;<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 RemoteOperation remoteCallBuild(final MasterProcedureEnv env, final ServerName serverName) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    assert serverName.equals(getRegionState(env).getRegionLocation());<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    return new RegionOpenOperation(this, getRegionInfo(),<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        env.getAssignmentManager().getFavoredNodes(getRegionInfo()), false);<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>  protected boolean remoteCallFailed(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      final IOException exception) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    handleFailure(env, regionNode);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    return true;<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 void toStringClassDetails(StringBuilder sb) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    super.toStringClassDetails(sb);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    if (this.targetServer != null) sb.append(", target=").append(this.targetServer);<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>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getAssignProcMetrics();<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>   * Sort AssignProcedures such that meta and system assigns come first before user-space assigns.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * Have to do it this way w/ distinct Comparator because Procedure is already Comparable on<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * 'Env'(?).<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  public static class CompareAssignProcedure implements Comparator&lt;AssignProcedure&gt; {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    @Override<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    public int compare(AssignProcedure left, AssignProcedure right) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      if (left.getRegionInfo().isMetaRegion()) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        if (right.getRegionInfo().isMetaRegion()) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.378"></a>
-<span class="sourceLineNo">379</span>        }<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        return -1;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      } else if (right.getRegionInfo().isMetaRegion()) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        return +1;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      if (left.getRegionInfo().getTable().isSystemTable()) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.385"></a>
+<span class="sourceLineNo">364</span>  public ServerName getServer(final MasterProcedureEnv env) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    RegionStateNode node =<a name="line.365"></a>
+<span class="sourceLineNo">366</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(this.getRegionInfo());<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    if (node == null) return null;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    return node.getRegionLocation();<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>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getAssignProcMetrics();<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>  /**<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * Sort AssignProcedures such that meta and system assigns come first before user-space assigns.<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * Have to do it this way w/ distinct Comparator because Procedure is already Comparable on<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * 'Env'(?).<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  public static class CompareAssignProcedure implements Comparator&lt;AssignProcedure&gt; {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    @Override<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    public int compare(AssignProcedure left, AssignProcedure right) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      if (left.getRegionInfo().isMetaRegion()) {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        if (right.getRegionInfo().isMetaRegion()) {<a name="line.385"></a>
 <span class="sourceLineNo">386</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.386"></a>
 <span class="sourceLineNo">387</span>        }<a name="line.387"></a>
 <span class="sourceLineNo">388</span>        return -1;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      } else if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.389"></a>
+<span class="sourceLineNo">389</span>      } else if (right.getRegionInfo().isMetaRegion()) {<a name="line.389"></a>
 <span class="sourceLineNo">390</span>        return +1;<a name="line.390"></a>
 <span class="sourceLineNo">391</span>      }<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<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">392</span>      if (left.getRegionInfo().getTable().isSystemTable()) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        }<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        return -1;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      } else if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        return +1;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
+<span class="sourceLineNo">402</span>  }<a name="line.402"></a>
+<span class="sourceLineNo">403</span>}<a name="line.403"></a>
 
 
 


[18/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html
index dc16a4c..66ff010 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html
@@ -366,14 +366,14 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.assignment.<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#abort-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#addToRemoteDispatcher-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">addToRemoteDispatcher</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#execute-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getRegionInfo--">getRegionInfo</a>, <a href="../../../../../../org/apache/hadoop/hbase/maste
 r/assignment/RegionTransitionProcedure.html#getRegionState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getRegionState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getTableName--">getTableName</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getTransitionState--">getTransitionState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#hasLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">hasLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#holdLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">holdLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#isMeta--">isMeta</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionP
 rocedure.html#isServerOnline-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">isServerOnline</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#isServerOnline-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">isServerOnline</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-java.io.IOException-">remoteCallFailed</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteOperationCompleted-org.apache.
 hadoop.hbase.master.procedure.MasterProcedureEnv-">remoteOperationCompleted</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteOperationFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">remoteOperationFailed</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#reportTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-long-">reportTransition</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#rollback-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setRegi
 onInfo-org.apache.hadoop.hbase.client.RegionInfo-">setRegionInfo</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setTransitionState-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState-">setTransitionState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#shouldWaitClientAck-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">shouldWaitClientAck</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#abort-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#addToRemoteDispatcher-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">addToRemoteDispatcher</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#execute-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getAttempt--">getAttempt</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assi
 gnment/RegionTransitionProcedure.html#getRegionInfo--">getRegionInfo</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getRegionState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getRegionState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getTableName--">getTableName</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getTransitionState--">getTransitionState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#hasLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">hasLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#holdLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">holdLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTra
 nsitionProcedure.html#isMeta--">isMeta</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#isServerOnline-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">isServerOnline</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#isServerOnline-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">isServerOnline</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-java.io.IOException-">remoteCallFailed</a>, <a hre
 f="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteOperationCompleted-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">remoteOperationCompleted</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteOperationFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">remoteOperationFailed</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#reportTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-long-">reportTransition</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#rollback-org.apache.hadoop.hbase.master.procedure.MasterProced
 ureEnv-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setAttempt-int-">setAttempt</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setRegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">setRegionInfo</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setTimeoutFailure-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">setTimeoutFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setTransitionState-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState-">setTransitionState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#shouldWaitClientAck-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">shouldWaitClientAck</a>, <a href="../../
 ../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.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#completionCleanup-TEnvironment-">completionCleanup</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-">d
 oReleaseLock</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#ge
 tProcId--">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#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.hbase.procedure2.Procedure-org.apache.hadoop.hbase.procedure2.Procedure-">haveSameParent</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="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#removeStackIndex--">removeStackInde
 x</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/Procedure.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="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setSubmittedTime-long-">setSubmitte
 dTime</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#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>
+<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#completionCleanup-TEnvironment-">completionCleanup</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-">d
 oReleaseLock</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#ge
 tProcId--">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#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.hbase.procedure2.Procedure-org.apache.hadoop.hbase.procedure2.Procedure-">haveSameParent</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="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#removeStackIndex--">removeStackInde
 x</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/Procedure.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="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setSubmittedTime-long-">setSubmitte
 dTime</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setTimeout-int-">setTimeout</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">
@@ -564,7 +564,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>deserializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.160">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.163">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
 <div class="block">Called on store load to allow the user to decode the previously serialized
@@ -585,7 +585,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>startTransition</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.175">startTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.181">startTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                   <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -599,7 +599,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>updateTransition</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.182">updateTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.188">updateTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                    <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#updateTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">RegionTransitionProcedure</a></code></span></div>
@@ -621,7 +621,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>finishTransition</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.209">finishTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.215">finishTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                 <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -638,7 +638,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>remoteCallBuild</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.228">remoteCallBuild</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.234">remoteCallBuild</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                                                  <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteProcedure.html#remoteCallBuild-TEnv-TRemote-">RemoteProcedureDispatcher.RemoteProcedure</a></code></span></div>
 <div class="block">For building the remote operation.</div>
@@ -656,7 +656,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>reportTransition</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.234">reportTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.240">reportTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                 <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                                 org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode&nbsp;code,
                                 long&nbsp;seqId)
@@ -675,7 +675,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>remoteCallFailed</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.248">remoteCallFailed</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.254">remoteCallFailed</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                    <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                                    <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;exception)</pre>
 <dl>
@@ -694,7 +694,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringClassDetails</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.289">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.295">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClassDetails-java.lang.StringBuilder-">Procedure</a></code></span></div>
 <div class="block">Extend the toString() information with the procedure details
  e.g. className and parameters</div>
@@ -712,7 +712,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>getServer</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.295">getServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.301">getServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getServer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">RegionTransitionProcedure</a></code></span></div>
 <div class="block">Used by ServerCrashProcedure to see if this Assign/Unassign needs processing.</div>
 <dl>
@@ -729,7 +729,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getProcedureMetrics</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.300">getProcedureMetrics</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#line.306">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/40477ee9/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 31c4412..affdb15 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -346,11 +346,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/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/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/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 c3e6de8..a267579 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
@@ -666,64 +666,70 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#shouldWaitClientAck-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">shouldWaitClientAck</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setTimeoutFailure-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">setTimeoutFailure</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
+<div class="block">At end of timeout, wake ourselves up so we run again.</div>
+</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#shouldWaitClientAck-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">shouldWaitClientAck</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#splitStoreFiles-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.regionserver.HRegionFileSystem-">splitStoreFiles</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a>&nbsp;regionFs)</code>
 <div class="block">Create Split directory</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">UnassignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#startTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">startTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#startTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">startTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected abstract boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#startTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">startTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#updateMeta-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateMeta</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Add daughter regions to META</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#updateMetaForMergedRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateMetaForMergedRegions</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Add merged region to META and delete original regions.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">UnassignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#updateTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">updateTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#updateTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">updateTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected abstract boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#updateTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">updateTransition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</code>
 <div class="block">Called when the Procedure is in the REGION_TRANSITION_DISPATCH state.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitTableRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html#writeMaxSequenceIdFile-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">writeMaxSequenceIdFile</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">MergeTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#writeMaxSequenceIdFile-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">writeMaxSequenceIdFile</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/procedure2/DelayedProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/DelayedProcedure.html b/devapidocs/org/apache/hadoop/hbase/procedure2/DelayedProcedure.html
index ab85c3b..66e5578 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/DelayedProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/DelayedProcedure.html
@@ -123,8 +123,9 @@
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/DelayedProcedure.html#line.24">DelayedProcedure</a>
+class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/DelayedProcedure.html#line.27">DelayedProcedure</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/util/DelayedUtil.DelayedContainerWithTimestamp.html" title="class in org.apache.hadoop.hbase.procedure2.util">DelayedUtil.DelayedContainerWithTimestamp</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&gt;</pre>
+<div class="block">Vessel that carries a Procedure and a timeout.</div>
 </li>
 </ul>
 </div>
@@ -202,7 +203,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/util/DelayedU
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DelayedProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/DelayedProcedure.html#line.25">DelayedProcedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/DelayedProcedure.html#line.28">DelayedProcedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html b/devapidocs/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html
index f5b1ca0..f337f8c 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.95">Procedure.LockState</a>
+<pre>public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.100">Procedure.LockState</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a>&gt;</pre>
 </li>
 </ul>
@@ -213,7 +213,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>LOCK_ACQUIRED</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html#line.96">LOCK_ACQUIRED</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html#line.101">LOCK_ACQUIRED</a></pre>
 </li>
 </ul>
 <a name="LOCK_YIELD_WAIT">
@@ -222,7 +222,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>LOCK_YIELD_WAIT</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html#line.97">LOCK_YIELD_WAIT</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html#line.102">LOCK_YIELD_WAIT</a></pre>
 </li>
 </ul>
 <a name="LOCK_EVENT_WAIT">
@@ -231,7 +231,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LOCK_EVENT_WAIT</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html#line.98">LOCK_EVENT_WAIT</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html#line.103">LOCK_EVENT_WAIT</a></pre>
 </li>
 </ul>
 </li>
@@ -248,7 +248,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/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html#line.95">values</a>()</pre>
+<pre>public static&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/procedure2/Procedure.LockState.html#line.100">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:
@@ -268,7 +268,7 @@ for (Procedure.LockState c : Procedure.LockState.values())
 <ul class="blockListLast">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&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/procedure2/Procedure.LockState.html#line.95">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.LockState.html#line.100">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">Returns the enum constant of this type with the specified name.
 The string must match <i>exactly</i> an identifier used to declare an
 enum constant in this type.  (Extraneous whitespace characters are 


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

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


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

Branch: refs/heads/asf-site
Commit: 40477ee92021e24d9a9d071bfadd94e6b1fa7d68
Parents: c28bec8
Author: jenkins <bu...@apache.org>
Authored: Tue May 1 14:46:56 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Tue May 1 14:46:56 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     6 +-
 apache_hbase_reference_guide.pdf                |     4 +-
 book.html                                       |     2 +-
 bulk-loads.html                                 |     6 +-
 checkstyle-aggregate.html                       | 20046 +++++++++--------
 checkstyle.rss                                  |    34 +-
 coc.html                                        |     6 +-
 dependencies.html                               |     6 +-
 dependency-convergence.html                     |     6 +-
 dependency-info.html                            |     6 +-
 dependency-management.html                      |     6 +-
 devapidocs/constant-values.html                 |    13 +-
 devapidocs/index-all.html                       |    41 +-
 .../hadoop/hbase/backup/package-tree.html       |     4 +-
 .../hbase/client/class-use/RegionInfo.html      |     9 +-
 .../hadoop/hbase/client/package-tree.html       |    22 +-
 .../hadoop/hbase/executor/package-tree.html     |     2 +-
 .../hadoop/hbase/filter/package-tree.html       |     6 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     6 +-
 .../hadoop/hbase/ipc/FifoRpcScheduler.html      |     2 +-
 .../apache/hadoop/hbase/ipc/RpcExecutor.html    |     2 +-
 .../hadoop/hbase/ipc/RpcScheduler.Context.html  |     6 +-
 .../apache/hadoop/hbase/ipc/RpcScheduler.html   |    59 +-
 .../hadoop/hbase/ipc/SimpleRpcScheduler.html    |    46 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |     2 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     4 +-
 .../AssignProcedure.CompareAssignProcedure.html |     6 +-
 .../master/assignment/AssignProcedure.html      |    28 +-
 .../RegionStateStore.RegionStateVisitor.html    |     4 +-
 .../master/assignment/RegionStateStore.html     |    48 +-
 .../assignment/RegionTransitionProcedure.html   |   259 +-
 .../master/assignment/UnassignProcedure.html    |    24 +-
 .../hadoop/hbase/master/package-tree.html       |     4 +-
 .../procedure/class-use/MasterProcedureEnv.html |    28 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    16 +-
 .../hbase/procedure2/DelayedProcedure.html      |     5 +-
 .../hbase/procedure2/Procedure.LockState.html   |    12 +-
 .../hadoop/hbase/procedure2/Procedure.html      |   207 +-
 .../hbase/procedure2/package-summary.html       |     4 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     4 +-
 .../hadoop/hbase/procedure2/package-use.html    |     4 +-
 .../class-use/DelayedUtil.DelayedContainer.html |     4 +-
 ...layedUtil.DelayedContainerWithTimestamp.html |     4 +-
 .../class-use/DelayedUtil.DelayedObject.html    |     4 +-
 .../DelayedUtil.DelayedWithTimeout.html         |     4 +-
 .../quotas/OperationQuota.OperationType.html    |     4 +-
 .../hadoop/hbase/quotas/package-tree.html       |     8 +-
 .../hadoop/hbase/regionserver/package-tree.html |    18 +-
 .../regionserver/querymatcher/package-tree.html |     2 +-
 .../hbase/regionserver/wal/package-tree.html    |     2 +-
 .../hadoop/hbase/thrift/package-tree.html       |     2 +-
 .../hbase/util/RetryCounter.BackoffPolicy.html  |     6 +-
 .../RetryCounter.ExponentialBackoffPolicy.html  |     6 +-
 ...unter.ExponentialBackoffPolicyWithLimit.html |     6 +-
 .../hbase/util/RetryCounter.RetryConfig.html    |    38 +-
 .../apache/hadoop/hbase/util/RetryCounter.html  |    73 +-
 .../hadoop/hbase/util/package-summary.html      |     4 +-
 .../apache/hadoop/hbase/util/package-tree.html  |    10 +-
 .../apache/hadoop/hbase/util/package-use.html   |     8 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 .../org/apache/hadoop/hbase/Version.html        |     6 +-
 .../ipc/RpcExecutor.CallPriorityComparator.html |    48 +-
 .../hadoop/hbase/ipc/RpcExecutor.Handler.html   |    48 +-
 .../hbase/ipc/RpcExecutor.QueueBalancer.html    |    48 +-
 .../ipc/RpcExecutor.RandomQueueBalancer.html    |    48 +-
 .../apache/hadoop/hbase/ipc/RpcExecutor.html    |    48 +-
 .../hadoop/hbase/ipc/RpcScheduler.Context.html  |   172 +-
 .../apache/hadoop/hbase/ipc/RpcScheduler.html   |   172 +-
 .../hadoop/hbase/ipc/SimpleRpcScheduler.html    |   402 +-
 .../AssignProcedure.CompareAssignProcedure.html |   510 +-
 .../master/assignment/AssignProcedure.html      |   510 +-
 .../RegionStateStore.RegionStateVisitor.html    |   607 +-
 .../master/assignment/RegionStateStore.html     |   607 +-
 .../assignment/RegionTransitionProcedure.html   |   825 +-
 .../master/assignment/UnassignProcedure.html    |   282 +-
 .../hbase/procedure2/DelayedProcedure.html      |    15 +-
 .../hbase/procedure2/Procedure.LockState.html   |  1645 +-
 .../hadoop/hbase/procedure2/Procedure.html      |  1645 +-
 .../hbase/util/RetryCounter.BackoffPolicy.html  |   286 +-
 .../RetryCounter.ExponentialBackoffPolicy.html  |   286 +-
 ...unter.ExponentialBackoffPolicyWithLimit.html |   286 +-
 .../hbase/util/RetryCounter.RetryConfig.html    |   286 +-
 .../apache/hadoop/hbase/util/RetryCounter.html  |   286 +-
 downloads.html                                  |   382 +
 export_control.html                             |     6 +-
 index.html                                      |     8 +-
 integration.html                                |     6 +-
 issue-tracking.html                             |     6 +-
 license.html                                    |     6 +-
 mail-lists.html                                 |     6 +-
 metrics.html                                    |     6 +-
 old_news.html                                   |     6 +-
 plugin-management.html                          |     6 +-
 plugins.html                                    |     6 +-
 poweredbyhbase.html                             |     6 +-
 project-info.html                               |     6 +-
 project-reports.html                            |     6 +-
 project-summary.html                            |     6 +-
 pseudo-distributed.html                         |     6 +-
 replication.html                                |     6 +-
 resources.html                                  |     6 +-
 source-repository.html                          |     6 +-
 sponsors.html                                   |     6 +-
 supportingprojects.html                         |     6 +-
 team-list.html                                  |     6 +-
 testdevapidocs/allclasses-frame.html            |     2 +
 testdevapidocs/allclasses-noframe.html          |     2 +
 testdevapidocs/constant-values.html             |    19 +
 testdevapidocs/index-all.html                   |    52 +-
 ...estMetaTableAccessor.SpyingRpcScheduler.html |     2 +-
 .../hadoop/hbase/backup/package-tree.html       |     2 +-
 .../hbase/class-use/HBaseClassTestRule.html     |    86 +-
 .../hbase/class-use/HBaseTestingUtility.html    |    14 +-
 .../hbase/ipc/DelegatingRpcScheduler.html       |     2 +-
 .../TestSplitTableRegionProcedure.html          |     4 +-
 .../TestUnexpectedStateException.html           |   503 +
 .../class-use/TestUnexpectedStateException.html |   125 +
 .../hbase/master/assignment/package-frame.html  |     1 +
 .../master/assignment/package-summary.html      |     7 +
 .../hbase/master/assignment/package-tree.html   |     1 +
 ...getServerBeingNulledOnUsAssignProcedure.html |     4 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    12 +-
 .../TestProcedureEvents.TestProcEnv.html        |     6 +-
 ...ocedureEvents.TestTimeoutEventProcedure.html |    24 +-
 .../hbase/procedure2/TestProcedureEvents.html   |    18 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     2 +-
 .../hadoop/hbase/regionserver/package-tree.html |     4 +-
 .../apache/hadoop/hbase/test/package-tree.html  |     4 +-
 .../hadoop/hbase/util/TestRegionSplitter.html   |     4 +-
 .../hadoop/hbase/util/TestRetryCounter.html     |   327 +
 .../hadoop/hbase/util/TestReusablePoolMap.html  |     4 +-
 .../hbase/util/class-use/TestRetryCounter.html  |   125 +
 .../apache/hadoop/hbase/util/package-frame.html |     1 +
 .../hadoop/hbase/util/package-summary.html      |    32 +-
 .../apache/hadoop/hbase/util/package-tree.html  |     1 +
 .../apache/hadoop/hbase/wal/package-tree.html   |     4 +-
 testdevapidocs/overview-tree.html               |     2 +
 .../TestUnexpectedStateException.html           |   239 +
 .../TestProcedureEvents.TestProcEnv.html        |   259 +-
 ...ocedureEvents.TestTimeoutEventProcedure.html |   259 +-
 .../hbase/procedure2/TestProcedureEvents.html   |   259 +-
 .../hadoop/hbase/util/TestRetryCounter.html     |   127 +
 142 files changed, 17912 insertions(+), 15415 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index f57af1f..9e7256a 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -63,7 +63,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -601,7 +601,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 66a92e3..d51337d 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:20180428143256+00'00')
-/CreationDate (D:20180428144755+00'00')
+/ModDate (D:20180501142955+00'00')
+/CreationDate (D:20180501144425+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index f863acb..5add829 100644
--- a/book.html
+++ b/book.html
@@ -37824,7 +37824,7 @@ The server will return cellblocks compressed using this same compressor as long
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2018-04-28 14:32:56 UTC
+Last updated 2018-05-01 14:29:55 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index e1bbbde..c00d1e3 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -63,7 +63,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -306,7 +306,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 


[15/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.RandomQueueBalancer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.RandomQueueBalancer.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.RandomQueueBalancer.html
index e19370a..0efd22e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.RandomQueueBalancer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.RandomQueueBalancer.html
@@ -494,28 +494,32 @@
 <span class="sourceLineNo">486</span>   */<a name="line.486"></a>
 <span class="sourceLineNo">487</span>  public void resizeQueues(Configuration conf) {<a name="line.487"></a>
 <span class="sourceLineNo">488</span>    String configKey = RpcScheduler.IPC_SERVER_MAX_CALLQUEUE_LENGTH;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    if (name != null &amp;&amp; name.toLowerCase(Locale.ROOT).contains("priority")) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      configKey = RpcScheduler.IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH;<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    currentQueueLimit = conf.getInt(configKey, currentQueueLimit);<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>  public void onConfigurationChange(Configuration conf) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    // update CoDel Scheduler tunables<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    int codelTargetDelay = conf.getInt(CALL_QUEUE_CODEL_TARGET_DELAY,<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      CALL_QUEUE_CODEL_DEFAULT_TARGET_DELAY);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    int codelInterval = conf.getInt(CALL_QUEUE_CODEL_INTERVAL, CALL_QUEUE_CODEL_DEFAULT_INTERVAL);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    double codelLifoThreshold = conf.getDouble(CALL_QUEUE_CODEL_LIFO_THRESHOLD,<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      CALL_QUEUE_CODEL_DEFAULT_LIFO_THRESHOLD);<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    for (BlockingQueue&lt;CallRunner&gt; queue : queues) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      if (queue instanceof AdaptiveLifoCoDelCallQueue) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        ((AdaptiveLifoCoDelCallQueue) queue).updateTunables(codelTargetDelay, codelInterval,<a name="line.505"></a>
-<span class="sourceLineNo">506</span>          codelLifoThreshold);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      }<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span>}<a name="line.510"></a>
+<span class="sourceLineNo">489</span>    if (name != null) {<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      if (name.toLowerCase(Locale.ROOT).contains("priority")) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>        configKey = RpcScheduler.IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      } else if (name.toLowerCase(Locale.ROOT).contains("replication")) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        configKey = RpcScheduler.IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH;<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>    currentQueueLimit = conf.getInt(configKey, currentQueueLimit);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span>  public void onConfigurationChange(Configuration conf) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    // update CoDel Scheduler tunables<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    int codelTargetDelay = conf.getInt(CALL_QUEUE_CODEL_TARGET_DELAY,<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      CALL_QUEUE_CODEL_DEFAULT_TARGET_DELAY);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    int codelInterval = conf.getInt(CALL_QUEUE_CODEL_INTERVAL, CALL_QUEUE_CODEL_DEFAULT_INTERVAL);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    double codelLifoThreshold = conf.getDouble(CALL_QUEUE_CODEL_LIFO_THRESHOLD,<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      CALL_QUEUE_CODEL_DEFAULT_LIFO_THRESHOLD);<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>    for (BlockingQueue&lt;CallRunner&gt; queue : queues) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      if (queue instanceof AdaptiveLifoCoDelCallQueue) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>        ((AdaptiveLifoCoDelCallQueue) queue).updateTunables(codelTargetDelay, codelInterval,<a name="line.509"></a>
+<span class="sourceLineNo">510</span>          codelLifoThreshold);<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>  }<a name="line.513"></a>
+<span class="sourceLineNo">514</span>}<a name="line.514"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html
index e19370a..0efd22e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html
@@ -494,28 +494,32 @@
 <span class="sourceLineNo">486</span>   */<a name="line.486"></a>
 <span class="sourceLineNo">487</span>  public void resizeQueues(Configuration conf) {<a name="line.487"></a>
 <span class="sourceLineNo">488</span>    String configKey = RpcScheduler.IPC_SERVER_MAX_CALLQUEUE_LENGTH;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    if (name != null &amp;&amp; name.toLowerCase(Locale.ROOT).contains("priority")) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      configKey = RpcScheduler.IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH;<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    currentQueueLimit = conf.getInt(configKey, currentQueueLimit);<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>  public void onConfigurationChange(Configuration conf) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    // update CoDel Scheduler tunables<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    int codelTargetDelay = conf.getInt(CALL_QUEUE_CODEL_TARGET_DELAY,<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      CALL_QUEUE_CODEL_DEFAULT_TARGET_DELAY);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    int codelInterval = conf.getInt(CALL_QUEUE_CODEL_INTERVAL, CALL_QUEUE_CODEL_DEFAULT_INTERVAL);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    double codelLifoThreshold = conf.getDouble(CALL_QUEUE_CODEL_LIFO_THRESHOLD,<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      CALL_QUEUE_CODEL_DEFAULT_LIFO_THRESHOLD);<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    for (BlockingQueue&lt;CallRunner&gt; queue : queues) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      if (queue instanceof AdaptiveLifoCoDelCallQueue) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        ((AdaptiveLifoCoDelCallQueue) queue).updateTunables(codelTargetDelay, codelInterval,<a name="line.505"></a>
-<span class="sourceLineNo">506</span>          codelLifoThreshold);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      }<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span>}<a name="line.510"></a>
+<span class="sourceLineNo">489</span>    if (name != null) {<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      if (name.toLowerCase(Locale.ROOT).contains("priority")) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>        configKey = RpcScheduler.IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      } else if (name.toLowerCase(Locale.ROOT).contains("replication")) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        configKey = RpcScheduler.IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH;<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>    currentQueueLimit = conf.getInt(configKey, currentQueueLimit);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span>  public void onConfigurationChange(Configuration conf) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    // update CoDel Scheduler tunables<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    int codelTargetDelay = conf.getInt(CALL_QUEUE_CODEL_TARGET_DELAY,<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      CALL_QUEUE_CODEL_DEFAULT_TARGET_DELAY);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    int codelInterval = conf.getInt(CALL_QUEUE_CODEL_INTERVAL, CALL_QUEUE_CODEL_DEFAULT_INTERVAL);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    double codelLifoThreshold = conf.getDouble(CALL_QUEUE_CODEL_LIFO_THRESHOLD,<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      CALL_QUEUE_CODEL_DEFAULT_LIFO_THRESHOLD);<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>    for (BlockingQueue&lt;CallRunner&gt; queue : queues) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      if (queue instanceof AdaptiveLifoCoDelCallQueue) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>        ((AdaptiveLifoCoDelCallQueue) queue).updateTunables(codelTargetDelay, codelInterval,<a name="line.509"></a>
+<span class="sourceLineNo">510</span>          codelLifoThreshold);<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>  }<a name="line.513"></a>
+<span class="sourceLineNo">514</span>}<a name="line.514"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html
index e3141b8..29e9f5d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html
@@ -43,91 +43,93 @@
 <span class="sourceLineNo">035</span>      "hbase.ipc.server.max.callqueue.length";<a name="line.35"></a>
 <span class="sourceLineNo">036</span>  public static final String IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH =<a name="line.36"></a>
 <span class="sourceLineNo">037</span>      "hbase.ipc.server.priority.max.callqueue.length";<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span>  /** Exposes runtime information of a {@code RpcServer} that a {@code RpcScheduler} may need. */<a name="line.39"></a>
-<span class="sourceLineNo">040</span>  public static abstract class Context {<a name="line.40"></a>
-<span class="sourceLineNo">041</span>    public abstract InetSocketAddress getListenerAddress();<a name="line.41"></a>
-<span class="sourceLineNo">042</span>  }<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>   * Does some quick initialization. Heavy tasks (e.g. starting threads) should be<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   * done in {@link #start()}. This method is called before {@code start}.<a name="line.46"></a>
-<span class="sourceLineNo">047</span>   *<a name="line.47"></a>
-<span class="sourceLineNo">048</span>   * @param context provides methods to retrieve runtime information from<a name="line.48"></a>
-<span class="sourceLineNo">049</span>   */<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  public abstract void init(Context context);<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  /**<a name="line.52"></a>
-<span class="sourceLineNo">053</span>   * Prepares for request serving. An implementation may start some handler threads here.<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   */<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  public abstract void start();<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>  /** Stops serving new requests. */<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  public abstract void stop();<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>  /**<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   * Dispatches an RPC request asynchronously. An implementation is free to choose to process the<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   * request immediately or delay it for later processing.<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   *<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   * @param task the request to be dispatched<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   */<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  public abstract boolean dispatch(CallRunner task) throws IOException, InterruptedException;<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  /** Get call queue information **/<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  public abstract CallQueueInfo getCallQueueInfo();<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>  /** Retrieves length of the general queue for metrics. */<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  public abstract int getGeneralQueueLength();<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  /** Retrieves length of the priority queue for metrics. */<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  public abstract int getPriorityQueueLength();<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>  /** Retrieves length of the replication queue for metrics. */<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  public abstract int getReplicationQueueLength();<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  /** Retrieves the total number of active handler. */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public abstract int getActiveRpcHandlerCount();<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  /** Retrieves the number of active general handler. */<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  public abstract int getActiveGeneralRpcHandlerCount();<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>  /** Retrieves the number of active priority handler. */<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  public abstract int getActivePriorityRpcHandlerCount();<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  /** Retrieves the number of active replication handler. */<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  public abstract int getActiveReplicationRpcHandlerCount();<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>   * If CoDel-based RPC executors are used, retrieves the number of Calls that were dropped<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   * from general queue because RPC executor is under high load; returns 0 otherwise.<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public abstract long getNumGeneralCallsDropped();<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>   * If CoDel-based RPC executors are used, retrieves the number of Calls that were<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * picked from the tail of the queue (indicating adaptive LIFO mode, when<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * in the period of overloade we serve last requests first); returns 0 otherwise.<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   */<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  public abstract long getNumLifoModeSwitches();<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>  /** Retrieves length of the write queue for metrics when use RWQueueRpcExecutor. */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public abstract int getWriteQueueLength();<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  /** Retrieves length of the read queue for metrics when use RWQueueRpcExecutor. */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  public abstract int getReadQueueLength();<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  /** Retrieves length of the scan queue for metrics when use RWQueueRpcExecutor. */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public abstract int getScanQueueLength();<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  /** Retrieves the number of active write rpc handler when use RWQueueRpcExecutor. */<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  public abstract int getActiveWriteRpcHandlerCount();<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  /** Retrieves the number of active write rpc handler when use RWQueueRpcExecutor. */<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public abstract int getActiveReadRpcHandlerCount();<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>  /** Retrieves the number of active write rpc handler when use RWQueueRpcExecutor. */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  public abstract int getActiveScanRpcHandlerCount();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>}<a name="line.122"></a>
+<span class="sourceLineNo">038</span>  public static final String IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH =<a name="line.38"></a>
+<span class="sourceLineNo">039</span>      "hbase.ipc.server.replication.max.callqueue.length";<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>  /** Exposes runtime information of a {@code RpcServer} that a {@code RpcScheduler} may need. */<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  public static abstract class Context {<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    public abstract InetSocketAddress getListenerAddress();<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  }<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>  /**<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   * Does some quick initialization. Heavy tasks (e.g. starting threads) should be<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   * done in {@link #start()}. This method is called before {@code start}.<a name="line.48"></a>
+<span class="sourceLineNo">049</span>   *<a name="line.49"></a>
+<span class="sourceLineNo">050</span>   * @param context provides methods to retrieve runtime information from<a name="line.50"></a>
+<span class="sourceLineNo">051</span>   */<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public abstract void init(Context context);<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  /**<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   * Prepares for request serving. An implementation may start some handler threads here.<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   */<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  public abstract void start();<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  /** Stops serving new requests. */<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  public abstract void stop();<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>   * Dispatches an RPC request asynchronously. An implementation is free to choose to process the<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   * request immediately or delay it for later processing.<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   *<a name="line.65"></a>
+<span class="sourceLineNo">066</span>   * @param task the request to be dispatched<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  public abstract boolean dispatch(CallRunner task) throws IOException, InterruptedException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  /** Get call queue information **/<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  public abstract CallQueueInfo getCallQueueInfo();<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>  /** Retrieves length of the general queue for metrics. */<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  public abstract int getGeneralQueueLength();<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  /** Retrieves length of the priority queue for metrics. */<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  public abstract int getPriorityQueueLength();<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>  /** Retrieves length of the replication queue for metrics. */<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  public abstract int getReplicationQueueLength();<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  /** Retrieves the total number of active handler. */<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  public abstract int getActiveRpcHandlerCount();<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  /** Retrieves the number of active general handler. */<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  public abstract int getActiveGeneralRpcHandlerCount();<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  /** Retrieves the number of active priority handler. */<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  public abstract int getActivePriorityRpcHandlerCount();<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  /** Retrieves the number of active replication handler. */<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  public abstract int getActiveReplicationRpcHandlerCount();<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>   * If CoDel-based RPC executors are used, retrieves the number of Calls that were dropped<a name="line.95"></a>
+<span class="sourceLineNo">096</span>   * from general queue because RPC executor is under high load; returns 0 otherwise.<a name="line.96"></a>
+<span class="sourceLineNo">097</span>   */<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  public abstract long getNumGeneralCallsDropped();<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>   * If CoDel-based RPC executors are used, retrieves the number of Calls that were<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * picked from the tail of the queue (indicating adaptive LIFO mode, when<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * in the period of overloade we serve last requests first); returns 0 otherwise.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   */<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  public abstract long getNumLifoModeSwitches();<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  /** Retrieves length of the write queue for metrics when use RWQueueRpcExecutor. */<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public abstract int getWriteQueueLength();<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  /** Retrieves length of the read queue for metrics when use RWQueueRpcExecutor. */<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  public abstract int getReadQueueLength();<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  /** Retrieves length of the scan queue for metrics when use RWQueueRpcExecutor. */<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  public abstract int getScanQueueLength();<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>  /** Retrieves the number of active write rpc handler when use RWQueueRpcExecutor. */<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  public abstract int getActiveWriteRpcHandlerCount();<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>  /** Retrieves the number of active write rpc handler when use RWQueueRpcExecutor. */<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public abstract int getActiveReadRpcHandlerCount();<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  /** Retrieves the number of active write rpc handler when use RWQueueRpcExecutor. */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  public abstract int getActiveScanRpcHandlerCount();<a name="line.123"></a>
+<span class="sourceLineNo">124</span>}<a name="line.124"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html
index e3141b8..29e9f5d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcScheduler.html
@@ -43,91 +43,93 @@
 <span class="sourceLineNo">035</span>      "hbase.ipc.server.max.callqueue.length";<a name="line.35"></a>
 <span class="sourceLineNo">036</span>  public static final String IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH =<a name="line.36"></a>
 <span class="sourceLineNo">037</span>      "hbase.ipc.server.priority.max.callqueue.length";<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span>  /** Exposes runtime information of a {@code RpcServer} that a {@code RpcScheduler} may need. */<a name="line.39"></a>
-<span class="sourceLineNo">040</span>  public static abstract class Context {<a name="line.40"></a>
-<span class="sourceLineNo">041</span>    public abstract InetSocketAddress getListenerAddress();<a name="line.41"></a>
-<span class="sourceLineNo">042</span>  }<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>   * Does some quick initialization. Heavy tasks (e.g. starting threads) should be<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   * done in {@link #start()}. This method is called before {@code start}.<a name="line.46"></a>
-<span class="sourceLineNo">047</span>   *<a name="line.47"></a>
-<span class="sourceLineNo">048</span>   * @param context provides methods to retrieve runtime information from<a name="line.48"></a>
-<span class="sourceLineNo">049</span>   */<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  public abstract void init(Context context);<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  /**<a name="line.52"></a>
-<span class="sourceLineNo">053</span>   * Prepares for request serving. An implementation may start some handler threads here.<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   */<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  public abstract void start();<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>  /** Stops serving new requests. */<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  public abstract void stop();<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>  /**<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   * Dispatches an RPC request asynchronously. An implementation is free to choose to process the<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   * request immediately or delay it for later processing.<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   *<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   * @param task the request to be dispatched<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   */<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  public abstract boolean dispatch(CallRunner task) throws IOException, InterruptedException;<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  /** Get call queue information **/<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  public abstract CallQueueInfo getCallQueueInfo();<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>  /** Retrieves length of the general queue for metrics. */<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  public abstract int getGeneralQueueLength();<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  /** Retrieves length of the priority queue for metrics. */<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  public abstract int getPriorityQueueLength();<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>  /** Retrieves length of the replication queue for metrics. */<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  public abstract int getReplicationQueueLength();<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  /** Retrieves the total number of active handler. */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public abstract int getActiveRpcHandlerCount();<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  /** Retrieves the number of active general handler. */<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  public abstract int getActiveGeneralRpcHandlerCount();<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>  /** Retrieves the number of active priority handler. */<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  public abstract int getActivePriorityRpcHandlerCount();<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  /** Retrieves the number of active replication handler. */<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  public abstract int getActiveReplicationRpcHandlerCount();<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>   * If CoDel-based RPC executors are used, retrieves the number of Calls that were dropped<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   * from general queue because RPC executor is under high load; returns 0 otherwise.<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public abstract long getNumGeneralCallsDropped();<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>   * If CoDel-based RPC executors are used, retrieves the number of Calls that were<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * picked from the tail of the queue (indicating adaptive LIFO mode, when<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * in the period of overloade we serve last requests first); returns 0 otherwise.<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   */<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  public abstract long getNumLifoModeSwitches();<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>  /** Retrieves length of the write queue for metrics when use RWQueueRpcExecutor. */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public abstract int getWriteQueueLength();<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  /** Retrieves length of the read queue for metrics when use RWQueueRpcExecutor. */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  public abstract int getReadQueueLength();<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  /** Retrieves length of the scan queue for metrics when use RWQueueRpcExecutor. */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public abstract int getScanQueueLength();<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  /** Retrieves the number of active write rpc handler when use RWQueueRpcExecutor. */<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  public abstract int getActiveWriteRpcHandlerCount();<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  /** Retrieves the number of active write rpc handler when use RWQueueRpcExecutor. */<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public abstract int getActiveReadRpcHandlerCount();<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>  /** Retrieves the number of active write rpc handler when use RWQueueRpcExecutor. */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  public abstract int getActiveScanRpcHandlerCount();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>}<a name="line.122"></a>
+<span class="sourceLineNo">038</span>  public static final String IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH =<a name="line.38"></a>
+<span class="sourceLineNo">039</span>      "hbase.ipc.server.replication.max.callqueue.length";<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>  /** Exposes runtime information of a {@code RpcServer} that a {@code RpcScheduler} may need. */<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  public static abstract class Context {<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    public abstract InetSocketAddress getListenerAddress();<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  }<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>  /**<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   * Does some quick initialization. Heavy tasks (e.g. starting threads) should be<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   * done in {@link #start()}. This method is called before {@code start}.<a name="line.48"></a>
+<span class="sourceLineNo">049</span>   *<a name="line.49"></a>
+<span class="sourceLineNo">050</span>   * @param context provides methods to retrieve runtime information from<a name="line.50"></a>
+<span class="sourceLineNo">051</span>   */<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public abstract void init(Context context);<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  /**<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   * Prepares for request serving. An implementation may start some handler threads here.<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   */<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  public abstract void start();<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  /** Stops serving new requests. */<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  public abstract void stop();<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>   * Dispatches an RPC request asynchronously. An implementation is free to choose to process the<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   * request immediately or delay it for later processing.<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   *<a name="line.65"></a>
+<span class="sourceLineNo">066</span>   * @param task the request to be dispatched<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  public abstract boolean dispatch(CallRunner task) throws IOException, InterruptedException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  /** Get call queue information **/<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  public abstract CallQueueInfo getCallQueueInfo();<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>  /** Retrieves length of the general queue for metrics. */<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  public abstract int getGeneralQueueLength();<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  /** Retrieves length of the priority queue for metrics. */<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  public abstract int getPriorityQueueLength();<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>  /** Retrieves length of the replication queue for metrics. */<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  public abstract int getReplicationQueueLength();<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  /** Retrieves the total number of active handler. */<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  public abstract int getActiveRpcHandlerCount();<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  /** Retrieves the number of active general handler. */<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  public abstract int getActiveGeneralRpcHandlerCount();<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  /** Retrieves the number of active priority handler. */<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  public abstract int getActivePriorityRpcHandlerCount();<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  /** Retrieves the number of active replication handler. */<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  public abstract int getActiveReplicationRpcHandlerCount();<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>   * If CoDel-based RPC executors are used, retrieves the number of Calls that were dropped<a name="line.95"></a>
+<span class="sourceLineNo">096</span>   * from general queue because RPC executor is under high load; returns 0 otherwise.<a name="line.96"></a>
+<span class="sourceLineNo">097</span>   */<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  public abstract long getNumGeneralCallsDropped();<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>   * If CoDel-based RPC executors are used, retrieves the number of Calls that were<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * picked from the tail of the queue (indicating adaptive LIFO mode, when<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * in the period of overloade we serve last requests first); returns 0 otherwise.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   */<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  public abstract long getNumLifoModeSwitches();<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  /** Retrieves length of the write queue for metrics when use RWQueueRpcExecutor. */<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public abstract int getWriteQueueLength();<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  /** Retrieves length of the read queue for metrics when use RWQueueRpcExecutor. */<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  public abstract int getReadQueueLength();<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  /** Retrieves length of the scan queue for metrics when use RWQueueRpcExecutor. */<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  public abstract int getScanQueueLength();<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>  /** Retrieves the number of active write rpc handler when use RWQueueRpcExecutor. */<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  public abstract int getActiveWriteRpcHandlerCount();<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>  /** Retrieves the number of active write rpc handler when use RWQueueRpcExecutor. */<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public abstract int getActiveReadRpcHandlerCount();<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  /** Retrieves the number of active write rpc handler when use RWQueueRpcExecutor. */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  public abstract int getActiveScanRpcHandlerCount();<a name="line.123"></a>
+<span class="sourceLineNo">124</span>}<a name="line.124"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html
index b4d0bf2..2dd8e17 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html
@@ -73,214 +73,220 @@
 <span class="sourceLineNo">065</span><a name="line.65"></a>
 <span class="sourceLineNo">066</span>    int maxQueueLength = conf.getInt(RpcScheduler.IPC_SERVER_MAX_CALLQUEUE_LENGTH,<a name="line.66"></a>
 <span class="sourceLineNo">067</span>        handlerCount * RpcServer.DEFAULT_MAX_CALLQUEUE_LENGTH_PER_HANDLER);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    int maxPriorityQueueLength =<a name="line.68"></a>
-<span class="sourceLineNo">069</span>        conf.getInt(RpcScheduler.IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH, maxQueueLength);<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>    this.priority = priority;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    this.highPriorityLevel = highPriorityLevel;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    this.abortable = server;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>    String callQueueType = conf.get(RpcExecutor.CALL_QUEUE_TYPE_CONF_KEY,<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      RpcExecutor.CALL_QUEUE_TYPE_CONF_DEFAULT);<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    float callqReadShare = conf.getFloat(RWQueueRpcExecutor.CALL_QUEUE_READ_SHARE_CONF_KEY, 0);<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>    if (callqReadShare &gt; 0) {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      // at least 1 read handler and 1 write handler<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      callExecutor = new RWQueueRpcExecutor("default.RWQ", Math.max(2, handlerCount),<a name="line.81"></a>
-<span class="sourceLineNo">082</span>        maxQueueLength, priority, conf, server);<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    } else {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      if (RpcExecutor.isFifoQueueType(callQueueType) || RpcExecutor.isCodelQueueType(callQueueType)) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>        callExecutor = new FastPathBalancedQueueRpcExecutor("default.FPBQ", handlerCount,<a name="line.85"></a>
-<span class="sourceLineNo">086</span>            maxQueueLength, priority, conf, server);<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      } else {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>        callExecutor = new BalancedQueueRpcExecutor("default.BQ", handlerCount, maxQueueLength,<a name="line.88"></a>
-<span class="sourceLineNo">089</span>            priority, conf, server);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      }<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    }<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>    // Create 2 queues to help priorityExecutor be more scalable.<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    this.priorityExecutor = priorityHandlerCount &gt; 0 ? new FastPathBalancedQueueRpcExecutor(<a name="line.94"></a>
-<span class="sourceLineNo">095</span>        "priority.FPBQ", priorityHandlerCount, RpcExecutor.CALL_QUEUE_TYPE_FIFO_CONF_VALUE,<a name="line.95"></a>
-<span class="sourceLineNo">096</span>        maxPriorityQueueLength, priority, conf, abortable) : null;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    this.replicationExecutor = replicationHandlerCount &gt; 0 ? new FastPathBalancedQueueRpcExecutor(<a name="line.97"></a>
-<span class="sourceLineNo">098</span>        "replication.FPBQ", replicationHandlerCount, RpcExecutor.CALL_QUEUE_TYPE_FIFO_CONF_VALUE,<a name="line.98"></a>
-<span class="sourceLineNo">099</span>        maxQueueLength, priority, conf, abortable) : null;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  }<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  public SimpleRpcScheduler(<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        Configuration conf,<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        int handlerCount,<a name="line.105"></a>
-<span class="sourceLineNo">106</span>        int priorityHandlerCount,<a name="line.106"></a>
-<span class="sourceLineNo">107</span>        int replicationHandlerCount,<a name="line.107"></a>
-<span class="sourceLineNo">108</span>        PriorityFunction priority,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        int highPriorityLevel) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    this(conf, handlerCount, priorityHandlerCount, replicationHandlerCount, priority,<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      null, highPriorityLevel);<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>  /**<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * Resize call queues;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * @param conf new configuration<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 void onConfigurationChange(Configuration conf) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    callExecutor.resizeQueues(conf);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    if (priorityExecutor != null) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      priorityExecutor.resizeQueues(conf);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    if (replicationExecutor != null) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      replicationExecutor.resizeQueues(conf);<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>    String callQueueType = conf.get(RpcExecutor.CALL_QUEUE_TYPE_CONF_KEY,<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      RpcExecutor.CALL_QUEUE_TYPE_CONF_DEFAULT);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    if (RpcExecutor.isCodelQueueType(callQueueType)) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      callExecutor.onConfigurationChange(conf);<a name="line.131"></a>
+<span class="sourceLineNo">068</span>    int maxPriorityQueueLength = conf.getInt(RpcScheduler.IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH,<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      priorityHandlerCount * RpcServer.DEFAULT_MAX_CALLQUEUE_LENGTH_PER_HANDLER);<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    int maxReplicationQueueLength =<a name="line.70"></a>
+<span class="sourceLineNo">071</span>        conf.getInt(RpcScheduler.IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH,<a name="line.71"></a>
+<span class="sourceLineNo">072</span>          replicationHandlerCount * RpcServer.DEFAULT_MAX_CALLQUEUE_LENGTH_PER_HANDLER);<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>    this.priority = priority;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    this.highPriorityLevel = highPriorityLevel;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    this.abortable = server;<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>    String callQueueType = conf.get(RpcExecutor.CALL_QUEUE_TYPE_CONF_KEY,<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      RpcExecutor.CALL_QUEUE_TYPE_CONF_DEFAULT);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    float callqReadShare = conf.getFloat(RWQueueRpcExecutor.CALL_QUEUE_READ_SHARE_CONF_KEY, 0);<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>    if (callqReadShare &gt; 0) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      // at least 1 read handler and 1 write handler<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      callExecutor = new RWQueueRpcExecutor("default.RWQ", Math.max(2, handlerCount),<a name="line.84"></a>
+<span class="sourceLineNo">085</span>        maxQueueLength, priority, conf, server);<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    } else {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      if (RpcExecutor.isFifoQueueType(callQueueType) || RpcExecutor.isCodelQueueType(callQueueType)) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>        callExecutor = new FastPathBalancedQueueRpcExecutor("default.FPBQ", handlerCount,<a name="line.88"></a>
+<span class="sourceLineNo">089</span>            maxQueueLength, priority, conf, server);<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      } else {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>        callExecutor = new BalancedQueueRpcExecutor("default.BQ", handlerCount, maxQueueLength,<a name="line.91"></a>
+<span class="sourceLineNo">092</span>            priority, conf, server);<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><a name="line.95"></a>
+<span class="sourceLineNo">096</span>    // Create 2 queues to help priorityExecutor be more scalable.<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    this.priorityExecutor = priorityHandlerCount &gt; 0 ? new FastPathBalancedQueueRpcExecutor(<a name="line.97"></a>
+<span class="sourceLineNo">098</span>        "priority.FPBQ", priorityHandlerCount, RpcExecutor.CALL_QUEUE_TYPE_FIFO_CONF_VALUE,<a name="line.98"></a>
+<span class="sourceLineNo">099</span>        maxPriorityQueueLength, priority, conf, abortable) : null;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    this.replicationExecutor =<a name="line.100"></a>
+<span class="sourceLineNo">101</span>        replicationHandlerCount &gt; 0<a name="line.101"></a>
+<span class="sourceLineNo">102</span>            ? new FastPathBalancedQueueRpcExecutor("replication.FPBQ", replicationHandlerCount,<a name="line.102"></a>
+<span class="sourceLineNo">103</span>                RpcExecutor.CALL_QUEUE_TYPE_FIFO_CONF_VALUE, maxReplicationQueueLength, priority,<a name="line.103"></a>
+<span class="sourceLineNo">104</span>                conf, abortable)<a name="line.104"></a>
+<span class="sourceLineNo">105</span>            : 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><a name="line.108"></a>
+<span class="sourceLineNo">109</span>  public SimpleRpcScheduler(<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        Configuration conf,<a name="line.110"></a>
+<span class="sourceLineNo">111</span>        int handlerCount,<a name="line.111"></a>
+<span class="sourceLineNo">112</span>        int priorityHandlerCount,<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        int replicationHandlerCount,<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        PriorityFunction priority,<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        int highPriorityLevel) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    this(conf, handlerCount, priorityHandlerCount, replicationHandlerCount, priority,<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      null, highPriorityLevel);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  /**<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * Resize call queues;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * @param conf new configuration<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   */<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  @Override<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  public void onConfigurationChange(Configuration conf) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    callExecutor.resizeQueues(conf);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    if (priorityExecutor != null) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      priorityExecutor.resizeQueues(conf);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    if (replicationExecutor != null) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      replicationExecutor.resizeQueues(conf);<a name="line.131"></a>
 <span class="sourceLineNo">132</span>    }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  }<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  @Override<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  public void init(Context context) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    this.port = context.getListenerAddress().getPort();<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 void start() {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    callExecutor.start(port);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    if (priorityExecutor != null) priorityExecutor.start(port);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    if (replicationExecutor != null) replicationExecutor.start(port);<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>  @Override<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  public void stop() {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    callExecutor.stop();<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    if (priorityExecutor != null) priorityExecutor.stop();<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    if (replicationExecutor != null) replicationExecutor.stop();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  @Override<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  public boolean dispatch(CallRunner callTask) throws InterruptedException {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    RpcCall call = callTask.getRpcCall();<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    int level = priority.getPriority(call.getHeader(), call.getParam(),<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        call.getRequestUser().orElse(null));<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    if (level == HConstants.PRIORITY_UNSET) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      level = HConstants.NORMAL_QOS;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    }<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    if (priorityExecutor != null &amp;&amp; level &gt; highPriorityLevel) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      return priorityExecutor.dispatch(callTask);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    } else if (replicationExecutor != null &amp;&amp; level == HConstants.REPLICATION_QOS) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return replicationExecutor.dispatch(callTask);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    } else {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      return callExecutor.dispatch(callTask);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  }<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  @Override<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  public int getGeneralQueueLength() {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    return callExecutor.getQueueLength();<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>  public int getPriorityQueueLength() {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    return priorityExecutor == null ? 0 : priorityExecutor.getQueueLength();<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>  @Override<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  public int getReplicationQueueLength() {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    return replicationExecutor == null ? 0 : replicationExecutor.getQueueLength();<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
-<span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>  @Override<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public int getActiveRpcHandlerCount() {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    return callExecutor.getActiveHandlerCount() + getActivePriorityRpcHandlerCount()<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        + getActiveReplicationRpcHandlerCount();<a name="line.189"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>    String callQueueType = conf.get(RpcExecutor.CALL_QUEUE_TYPE_CONF_KEY,<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      RpcExecutor.CALL_QUEUE_TYPE_CONF_DEFAULT);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    if (RpcExecutor.isCodelQueueType(callQueueType)) {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      callExecutor.onConfigurationChange(conf);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    }<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  }<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  @Override<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  public void init(Context context) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    this.port = context.getListenerAddress().getPort();<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  @Override<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  public void start() {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    callExecutor.start(port);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    if (priorityExecutor != null) priorityExecutor.start(port);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    if (replicationExecutor != null) replicationExecutor.start(port);<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 void stop() {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    callExecutor.stop();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    if (priorityExecutor != null) priorityExecutor.stop();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    if (replicationExecutor != null) replicationExecutor.stop();<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 boolean dispatch(CallRunner callTask) throws InterruptedException {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    RpcCall call = callTask.getRpcCall();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    int level = priority.getPriority(call.getHeader(), call.getParam(),<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        call.getRequestUser().orElse(null));<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    if (level == HConstants.PRIORITY_UNSET) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      level = HConstants.NORMAL_QOS;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    if (priorityExecutor != null &amp;&amp; level &gt; highPriorityLevel) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      return priorityExecutor.dispatch(callTask);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    } else if (replicationExecutor != null &amp;&amp; level == HConstants.REPLICATION_QOS) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      return replicationExecutor.dispatch(callTask);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    } else {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      return callExecutor.dispatch(callTask);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    }<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  }<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>  @Override<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public int getGeneralQueueLength() {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    return callExecutor.getQueueLength();<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  }<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>  @Override<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  public int getPriorityQueueLength() {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    return priorityExecutor == null ? 0 : priorityExecutor.getQueueLength();<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>  @Override<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  public int getReplicationQueueLength() {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    return replicationExecutor == null ? 0 : replicationExecutor.getQueueLength();<a name="line.189"></a>
 <span class="sourceLineNo">190</span>  }<a name="line.190"></a>
 <span class="sourceLineNo">191</span><a name="line.191"></a>
 <span class="sourceLineNo">192</span>  @Override<a name="line.192"></a>
-<span class="sourceLineNo">193</span>  public int getActiveGeneralRpcHandlerCount() {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    return callExecutor.getActiveHandlerCount();<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 int getActivePriorityRpcHandlerCount() {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    return (priorityExecutor == null ? 0 : priorityExecutor.getActiveHandlerCount());<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 int getActiveReplicationRpcHandlerCount() {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    return (replicationExecutor == null ? 0 : replicationExecutor.getActiveHandlerCount());<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 long getNumGeneralCallsDropped() {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    return callExecutor.getNumGeneralCallsDropped();<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 long getNumLifoModeSwitches() {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    return callExecutor.getNumLifoModeSwitches();<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 int getWriteQueueLength() {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    return callExecutor.getWriteQueueLength();<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 int getReadQueueLength() {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    return callExecutor.getReadQueueLength();<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  @Override<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  public int getScanQueueLength() {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    return callExecutor.getScanQueueLength();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  }<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>  @Override<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  public int getActiveWriteRpcHandlerCount() {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return callExecutor.getActiveWriteHandlerCount();<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>  public int getActiveReadRpcHandlerCount() {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    return callExecutor.getActiveReadHandlerCount();<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>  public int getActiveScanRpcHandlerCount() {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    return callExecutor.getActiveScanHandlerCount();<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>  @Override<a name="line.247"></a>
-<span class="sourceLineNo">248</span>  public CallQueueInfo getCallQueueInfo() {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    String queueName;<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>    CallQueueInfo callQueueInfo = new CallQueueInfo();<a name="line.251"></a>
+<span class="sourceLineNo">193</span>  public int getActiveRpcHandlerCount() {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    return callExecutor.getActiveHandlerCount() + getActivePriorityRpcHandlerCount()<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        + getActiveReplicationRpcHandlerCount();<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>  @Override<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  public int getActiveGeneralRpcHandlerCount() {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    return callExecutor.getActiveHandlerCount();<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>  @Override<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  public int getActivePriorityRpcHandlerCount() {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    return (priorityExecutor == null ? 0 : priorityExecutor.getActiveHandlerCount());<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>  public int getActiveReplicationRpcHandlerCount() {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    return (replicationExecutor == null ? 0 : replicationExecutor.getActiveHandlerCount());<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>  @Override<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public long getNumGeneralCallsDropped() {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    return callExecutor.getNumGeneralCallsDropped();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span>  @Override<a name="line.218"></a>
+<span class="sourceLineNo">219</span>  public long getNumLifoModeSwitches() {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return callExecutor.getNumLifoModeSwitches();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  @Override<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  public int getWriteQueueLength() {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    return callExecutor.getWriteQueueLength();<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 int getReadQueueLength() {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    return callExecutor.getReadQueueLength();<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 int getScanQueueLength() {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    return callExecutor.getScanQueueLength();<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 int getActiveWriteRpcHandlerCount() {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    return callExecutor.getActiveWriteHandlerCount();<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 int getActiveReadRpcHandlerCount() {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    return callExecutor.getActiveReadHandlerCount();<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 int getActiveScanRpcHandlerCount() {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    return callExecutor.getActiveScanHandlerCount();<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>    if(null!=callExecutor) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      queueName = "Call Queue";<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      callQueueInfo.setCallMethodCount(queueName, callExecutor.getCallQueueCountsSummary());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      callQueueInfo.setCallMethodSize(queueName, callExecutor.getCallQueueSizeSummary());<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">253</span>  @Override<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  public CallQueueInfo getCallQueueInfo() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    String queueName;<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    CallQueueInfo callQueueInfo = new CallQueueInfo();<a name="line.257"></a>
 <span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    if(null!=priorityExecutor) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      queueName = "Priority Queue";<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      callQueueInfo.setCallMethodCount(queueName, priorityExecutor.getCallQueueCountsSummary());<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      callQueueInfo.setCallMethodSize(queueName, priorityExecutor.getCallQueueSizeSummary());<a name="line.262"></a>
+<span class="sourceLineNo">259</span>    if(null!=callExecutor) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      queueName = "Call Queue";<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      callQueueInfo.setCallMethodCount(queueName, callExecutor.getCallQueueCountsSummary());<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      callQueueInfo.setCallMethodSize(queueName, callExecutor.getCallQueueSizeSummary());<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>    if(null!=replicationExecutor) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      queueName = "Replication Queue";<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      callQueueInfo.setCallMethodCount(queueName, replicationExecutor.getCallQueueCountsSummary());<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      callQueueInfo.setCallMethodSize(queueName, replicationExecutor.getCallQueueSizeSummary());<a name="line.268"></a>
+<span class="sourceLineNo">265</span>    if(null!=priorityExecutor) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      queueName = "Priority Queue";<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      callQueueInfo.setCallMethodCount(queueName, priorityExecutor.getCallQueueCountsSummary());<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      callQueueInfo.setCallMethodSize(queueName, priorityExecutor.getCallQueueSizeSummary());<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>    return callQueueInfo;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>}<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">271</span>    if(null!=replicationExecutor) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      queueName = "Replication Queue";<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      callQueueInfo.setCallMethodCount(queueName, replicationExecutor.getCallQueueCountsSummary());<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      callQueueInfo.setCallMethodSize(queueName, replicationExecutor.getCallQueueSizeSummary());<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>    return callQueueInfo;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>}<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
 
 
 


[23/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 2c21f06..400c722 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -281,10 +281,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>3604</td>
+<td>3606</td>
 <td>0</td>
 <td>0</td>
-<td>15861</td></tr></table></div>
+<td>15867</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -5017,7 +5017,7 @@
 <td><a href="#org.apache.hadoop.hbase.master.assignment.RegionTransitionProcedure.java">org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>5</td></tr>
+<td>10</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.SplitTableRegionProcedure.java">org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java</a></td>
 <td>0</td>
@@ -5044,5161 +5044,5166 @@
 <td>0</td>
 <td>2</td></tr>
 <tr class="b">
+<td><a href="#org.apache.hadoop.hbase.master.assignment.TestUnexpectedStateException.java">org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.java</a></td>
+<td>0</td>
+<td>0</td>
+<td>1</td></tr>
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.UnassignProcedure.java">org/apache/hadoop/hbase/master/assignment/UnassignProcedure.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.master.assignment.Util.java">org/apache/hadoop/hbase/master/assignment/Util.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.master.balancer.BalancerChore.java">org/apache/hadoop/hbase/master/balancer/BalancerChore.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.balancer.BalancerTestBase.java">org/apache/hadoop/hbase/master/balancer/BalancerTestBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>75</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>61</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.ClusterLoadState.java">org/apache/hadoop/hbase/master/balancer/ClusterLoadState.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.master.balancer.ClusterStatusChore.java">org/apache/hadoop/hbase/master/balancer/ClusterStatusChore.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.balancer.FavoredStochasticBalancer.java">org/apache/hadoop/hbase/master/balancer/FavoredStochasticBalancer.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.master.balancer.LoadBalancerFactory.java">org/apache/hadoop/hbase/master/balancer/LoadBalancerFactory.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.balancer.LoadBalancerPerformanceEvaluation.java">org/apache/hadoop/hbase/master/balancer/LoadBalancerPerformanceEvaluation.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.master.balancer.MetricsBalancerSourceImpl.java">org/apache/hadoop/hbase/master/balancer/MetricsBalancerSourceImpl.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.master.balancer.MetricsStochasticBalancerSourceImpl.java">org/apache/hadoop/hbase/master/balancer/MetricsStochasticBalancerSourceImpl.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.master.balancer.RegionInfoComparator.java">org/apache/hadoop/hbase/master/balancer/RegionInfoComparator.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.master.balancer.RegionLocationFinder.java">org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.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.balancer.ServerAndLoad.java">org/apache/hadoop/hbase/master/balancer/ServerAndLoad.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.balancer.SimpleLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/SimpleLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>33</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>32</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestBaseLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.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.master.balancer.TestDefaultLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/TestDefaultLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>48</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestFavoredNodeTableImport.java">org/apache/hadoop/hbase/master/balancer/TestFavoredNodeTableImport.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.master.balancer.TestFavoredStochasticBalancerPickers.java">org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticBalancerPickers.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.master.balancer.TestRegionsOnMasterOptions.java">org/apache/hadoop/hbase/master/balancer/TestRegionsOnMasterOptions.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestServerAndLoad.java">org/apache/hadoop/hbase/master/balancer/TestServerAndLoad.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.balancer.TestStochasticLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>33</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.BaseFileCleanerDelegate.java">org/apache/hadoop/hbase/master/cleaner/BaseFileCleanerDelegate.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.cleaner.BaseLogCleanerDelegate.java">org/apache/hadoop/hbase/master/cleaner/BaseLogCleanerDelegate.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.master.cleaner.CleanerChore.java">org/apache/hadoop/hbase/master/cleaner/CleanerChore.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.cleaner.FileCleanerDelegate.java">org/apache/hadoop/hbase/master/cleaner/FileCleanerDelegate.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.master.cleaner.HFileLinkCleaner.java">org/apache/hadoop/hbase/master/cleaner/HFileLinkCleaner.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.cleaner.TestCleanerChore.java">org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.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.master.cleaner.TestHFileCleaner.java">org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.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.master.cleaner.TestHFileLinkCleaner.java">org/apache/hadoop/hbase/master/cleaner/TestHFileLinkCleaner.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.master.cleaner.TestSnapshotFromMaster.java">org/apache/hadoop/hbase/master/cleaner/TestSnapshotFromMaster.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.cleaner.TimeToLiveHFileCleaner.java">org/apache/hadoop/hbase/master/cleaner/TimeToLiveHFileCleaner.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.master.cleaner.TimeToLiveLogCleaner.java">org/apache/hadoop/hbase/master/cleaner/TimeToLiveLogCleaner.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.locking.LockManager.java">org/apache/hadoop/hbase/master/locking/LockManager.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.master.locking.LockProcedure.java">org/apache/hadoop/hbase/master/locking/LockProcedure.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.master.normalizer.EmptyNormalizationPlan.java">org/apache/hadoop/hbase/master/normalizer/EmptyNormalizationPlan.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.master.normalizer.NormalizationPlan.java">org/apache/hadoop/hbase/master/normalizer/NormalizationPlan.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.normalizer.RegionNormalizerChore.java">org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.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.master.normalizer.RegionNormalizerFactory.java">org/apache/hadoop/hbase/master/normalizer/RegionNormalizerFactory.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.normalizer.TestSimpleRegionNormalizerOnCluster.java">org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizerOnCluster.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.master.procedure.AbstractStateMachineNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.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.master.procedure.AbstractStateMachineRegionProcedure.java">org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.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.master.procedure.AbstractStateMachineTableProcedure.java">org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.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.CloneSnapshotProcedure.java">org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.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.master.procedure.CreateNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.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.master.procedure.CreateTableProcedure.java">org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.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.master.procedure.DeleteNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>34</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure.java">org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.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.master.procedure.DisableTableProcedure.java">org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.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.master.procedure.EnableTableProcedure.java">org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>72</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.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.procedure.MasterProcedureScheduler.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.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.master.procedure.MasterProcedureSchedulerPerformanceEvaluation.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureSchedulerPerformanceEvaluation.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.master.procedure.MasterProcedureTestingUtility.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.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.procedure.MasterProcedureUtil.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureUtil.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.procedure.ModifyNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>21</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure.java">org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>45</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.ProcedureDescriber.java">org/apache/hadoop/hbase/master/procedure/ProcedureDescriber.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.procedure.ProcedurePrepareLatch.java">org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.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.procedure.ProcedureSyncWait.java">org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>46</td></tr>
-<tr class="b">
+<tr class="a">
 <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>1</td></tr>
-<tr class="a">
+<tr class="b">
 <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="b">
+<tr class="a">
 <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>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.TestCreateTableProcedure.java">org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.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.procedure.TestDeleteColumnFamilyProcedureFromClient.java">org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.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.procedure.TestDeleteNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.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.master.procedure.TestMasterObserverPostCalls.java">org/apache/hadoop/hbase/master/procedure/TestMasterObserverPostCalls.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.procedure.TestMasterProcedureEvents.java">org/apache/hadoop/hbase/master/procedure/TestMasterProcedureEvents.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.procedure.TestMasterProcedureScheduler.java">org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.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.TestMasterProcedureSchedulerConcurrency.java">org/apache/hadoop/hbase/master/procedure/TestMasterProcedureSchedulerConcurrency.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.master.procedure.TestMasterProcedureWalLease.java">org/apache/hadoop/hbase/master/procedure/TestMasterProcedureWalLease.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.master.procedure.TestRecoverMetaProcedure.java">org/apache/hadoop/hbase/master/procedure/TestRecoverMetaProcedure.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.procedure.TestSafemodeBringsDownMaster.java">org/apache/hadoop/hbase/master/procedure/TestSafemodeBringsDownMaster.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.procedure.TestServerCrashProcedure.java">org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.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.master.procedure.TestTableDDLProcedureBase.java">org/apache/hadoop/hbase/master/procedure/TestTableDDLProcedureBase.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.procedure.TestTableDescriptorModificationFromClient.java">org/apache/hadoop/hbase/master/procedure/TestTableDescriptorModificationFromClient.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.master.procedure.TestWALProcedureStoreOnHDFS.java">org/apache/hadoop/hbase/master/procedure/TestWALProcedureStoreOnHDFS.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.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="b">
+<tr class="a">
 <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>1</td></tr>
-<tr class="a">
+<tr class="b">
 <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>2</td></tr>
-<tr class="b">
+<tr class="a">
 <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>2</td></tr>
-<tr class="a">
+<tr class="b">
 <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="b">
+<tr class="a">
 <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>16</td></tr>
-<tr class="a">
+<tr class="b">
 <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>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.snapshot.TestAssignProcedure.java">org/apache/hadoop/hbase/master/snapshot/TestAssignProcedure.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.master.snapshot.TestSnapshotHFileCleaner.java">org/apache/hadoop/hbase/master/snapshot/TestSnapshotHFileCleaner.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.master.snapshot.TestSnapshotManager.java">org/apache/hadoop/hbase/master/snapshot/TestSnapshotManager.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.BaseSourceImpl.java">org/apache/hadoop/hbase/metrics/BaseSourceImpl.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.metrics.Interns.java">org/apache/hadoop/hbase/metrics/Interns.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.metrics.MBeanSourceImpl.java">org/apache/hadoop/hbase/metrics/MBeanSourceImpl.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.MetricsInfoImpl.java">org/apache/hadoop/hbase/metrics/MetricsInfoImpl.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.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>8</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>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mob.ExpiredMobFileCleaner.java">org/apache/hadoop/hbase/mob/ExpiredMobFileCleaner.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.MobCacheConfig.java">org/apache/hadoop/hbase/mob/MobCacheConfig.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.mob.MobConstants.java">org/apache/hadoop/hbase/mob/MobConstants.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.MobFileName.java">org/apache/hadoop/hbase/mob/MobFileName.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.MobTestUtil.java">org/apache/hadoop/hbase/mob/MobTestUtil.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.MobUtils.java">org/apache/hadoop/hbase/mob/MobUtils.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.mob.TestDefaultMobStoreFlusher.java">org/apache/hadoop/hbase/mob/TestDefaultMobStoreFlusher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>35</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mob.TestExpiredMobFileCleaner.java">org/apache/hadoop/hbase/mob/TestExpiredMobFileCleaner.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.compactions.MobCompactor.java">org/apache/hadoop/hbase/mob/compactions/MobCompactor.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.mob.compactions.PartitionedMobCompactionRequest.java">org/apache/hadoop/hbase/mob/compactions/PartitionedMobCompactionRequest.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.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.mob.compactions.TestMobCompactor.java">org/apache/hadoop/hbase/mob/compactions/TestMobCompactor.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.compactions.TestPartitionedMobCompactor.java">org/apache/hadoop/hbase/mob/compactions/TestPartitionedMobCompactor.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.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.TaskMonitor.java">org/apache/hadoop/hbase/monitoring/TaskMonitor.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.TestTaskMonitor.java">org/apache/hadoop/hbase/monitoring/TestTaskMonitor.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.mttr.IntegrationTestMTTR.java">org/apache/hadoop/hbase/mttr/IntegrationTestMTTR.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.namespace.NamespaceStateManager.java">org/apache/hadoop/hbase/namespace/NamespaceStateManager.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.NamespaceTableAndRegionInfo.java">org/apache/hadoop/hbase/namespace/NamespaceTableAndRegionInfo.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.namespace.TestNamespaceAuditor.java">org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.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.net.Address.java">org/apache/hadoop/hbase/net/Address.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.net.TestAddress.java">org/apache/hadoop/hbase/net/TestAddress.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.nio.ByteBuff.java">org/apache/hadoop/hbase/nio/ByteBuff.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <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>29</td></tr>
-<tr class="a">
+<tr class="b">
 <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>1</td></tr>
-<tr class="b">
+<tr class="a">
 <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>9</td></tr>
-<tr class="a">
+<tr class="b">
 <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>14</td></tr>
-<tr class="b">
+<tr class="a">
 <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="a">
+<tr class="b">
 <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>2</td></tr>
-<tr class="b">
+<tr class="a">
 <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="a">
+<tr class="b">
 <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="b">
+<tr class="a">
 <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>3</td></tr>
-<tr class="a">
+<tr class="b">
 <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>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure.SimpleMasterProcedureManager.java">org/apache/hadoop/hbase/procedure/SimpleMasterProcedureManager.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.SimpleRSProcedureManager.java">org/apache/hadoop/hbase/procedure/SimpleRSProcedureManager.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.Subprocedure.java">org/apache/hadoop/hbase/procedure/Subprocedure.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.procedure.TestProcedureCoordinator.java">org/apache/hadoop/hbase/procedure/TestProcedureCoordinator.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.TestProcedureDescriber.java">org/apache/hadoop/hbase/procedure/TestProcedureDescriber.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.TestProcedureMember.java">org/apache/hadoop/hbase/procedure/TestProcedureMember.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.procedure.TestZKProcedure.java">org/apache/hadoop/hbase/procedure/TestZKProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>29</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.TestZKProcedureControllers.java">org/apache/hadoop/hbase/procedure/TestZKProcedureControllers.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.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>3</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>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure.flush.FlushTableSubprocedure.java">org/apache/hadoop/hbase/procedure/flush/FlushTableSubprocedure.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.flush.MasterFlushTableProcedureManager.java">org/apache/hadoop/hbase/procedure/flush/MasterFlushTableProcedureManager.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.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="b">
+<tr class="a">
 <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="a">
+<tr class="b">
 <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="b">
+<tr class="a">
 <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="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.LockedResource.java">org/apache/hadoop/hbase/procedure2/LockedResource.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.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>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.ProcedureException.java">org/apache/hadoop/hbase/procedure2/ProcedureException.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.ProcedureExecutor.java">org/apache/hadoop/hbase/procedure2/ProcedureExecutor.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.procedure2.ProcedureScheduler.java">org/apache/hadoop/hbase/procedure2/ProcedureScheduler.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.ProcedureTestingUtility.java">org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.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.ProcedureUtil.java">org/apache/hadoop/hbase/procedure2/ProcedureUtil.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.RemoteProcedureDispatcher.java">org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.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.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.TestProcedureExecution.java">org/apache/hadoop/hbase/procedure2/TestProcedureExecution.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.TestProcedureExecutor.java">org/apache/hadoop/hbase/procedure2/TestProcedureExecutor.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.TestProcedureMetrics.java">org/apache/hadoop/hbase/procedure2/TestProcedureMetrics.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.TestProcedureNonce.java">org/apache/hadoop/hbase/procedure2/TestProcedureNonce.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.TestProcedureRecovery.java">org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.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.TestProcedureReplayOrder.java">org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.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.TestProcedureSchedulerConcurrency.java">org/apache/hadoop/hbase/procedure2/TestProcedureSchedulerConcurrency.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.TestProcedureSuspended.java">org/apache/hadoop/hbase/procedure2/TestProcedureSuspended.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.procedure2.TestProcedureToString.java">org/apache/hadoop/hbase/procedure2/TestProcedureToString.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.TestStateMachineProcedure.java">org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.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.TestYieldProcedures.java">org/apache/hadoop/hbase/procedure2/TestYieldProcedures.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.ProcedureStore.java">org/apache/hadoop/hbase/procedure2/store/ProcedureStore.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.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="b">
+<tr class="a">
 <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="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.TestProcedureStoreTracker.java">org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.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.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>2</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>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALLoaderPerformanceEvaluation.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALLoaderPerformanceEvaluation.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.procedure2.store.wal.ProcedureWALPerformanceEvaluation.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALPerformanceEvaluation.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.ProcedureWALPrettyPrinter.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALPrettyPrinter.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.store.wal.TestStressWALProcedureStore.java">org/apache/hadoop/hbase/procedure2/store/wal/TestStressWALProcedureStore.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.store.wal.TestWALProcedureStore.java">org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.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.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="a">
+<tr class="b">
 <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>4</td></tr>
-<tr class="b">
+<tr class="a">
 <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="a">
+<tr class="b">
 <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="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.protobuf.ProtobufMessageConverter.java">org/apache/hadoop/hbase/protobuf/ProtobufMessageConverter.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.protobuf.ProtobufUtil.java">org/apache/hadoop/hbase/protobuf/ProtobufUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>106</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>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.protobuf.TestProtobufUtil.java">org/apache/hadoop/hbase/protobuf/TestProtobufUtil.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.protobuf.TestReplicationProtobuf.java">org/apache/hadoop/hbase/protobuf/TestReplicationProtobuf.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.ActivePolicyEnforcement.java">org/apache/hadoop/hbase/quotas/ActivePolicyEnforcement.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.AverageIntervalRateLimiter.java">org/apache/hadoop/hbase/quotas/AverageIntervalRateLimiter.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.DefaultOperationQuota.java">org/apache/hadoop/hbase/quotas/DefaultOperationQuota.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.FileSystemUtilizationChore.java">org/apache/hadoop/hbase/quotas/FileSystemUtilizationChore.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.quotas.FixedIntervalRateLimiter.java">org/apache/hadoop/hbase/quotas/FixedIntervalRateLimiter.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.GlobalQuotaSettings.java">org/apache/hadoop/hbase/quotas/GlobalQuotaSettings.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.GlobalQuotaSettingsImpl.java">org/apache/hadoop/hbase/quotas/GlobalQuotaSettingsImpl.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.MasterSpaceQuotaObserver.java">org/apache/hadoop/hbase/quotas/MasterSpaceQuotaObserver.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.NamespaceQuotaSnapshotStore.java">org/apache/hadoop/hbase/quotas/NamespaceQuotaSnapshotStore.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.NoopOperationQuota.java">org/apache/hadoop/hbase/quotas/NoopOperationQuota.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.NoopQuotaLimiter.java">org/apache/hadoop/hbase/quotas/NoopQuotaLimiter.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.OperationQuota.java">org/apache/hadoop/hbase/quotas/OperationQuota.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.QuotaCache.java">org/apache/hadoop/hbase/quotas/QuotaCache.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.QuotaLimiter.java">org/apache/hadoop/hbase/quotas/QuotaLimiter.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.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>1</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>4</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>7</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>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.QuotaState.java">org/apache/hadoop/hbase/quotas/QuotaState.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.QuotaTableUtil.java">org/apache/hadoop/hbase/quotas/QuotaTableUtil.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.QuotaUtil.java">org/apache/hadoop/hbase/quotas/QuotaUtil.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.RateLimiter.java">org/apache/hadoop/hbase/quotas/RateLimiter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager.java">org/apache/hadoop/hbase/quotas/RegionServerRpcQuotaManager.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.RegionServerSpaceQuotaManager.java">org/apache/hadoop/hbase/quotas/RegionServerSpaceQuotaManager.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.SnapshotQuotaObserverChore.java">org/apache/hadoop/hbase/quotas/SnapshotQuotaObserverChore.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.SpaceLimitSettings.java">org/apache/hadoop/hbase/quotas/SpaceLimitSettings.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.SpaceQuotaRefresherChore.java">org/apache/hadoop/hbase/quotas/SpaceQuotaRefresherChore.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.SpaceQuotaSnapshot.java">org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshot.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.SpaceQuotaSnapshotNotifier.java">org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifier.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.SpaceQuotaSnapshotNotifierForTest.java">org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifierForTest.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.SpaceViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/SpaceViolationPolicyEnforcement.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>2</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>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.quotas.TestFileSystemUtilizationChore.java">org/apache/hadoop/hbase/quotas/TestFileSystemUtilizationChore.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.TestMasterSpaceQuotaObserver.java">org/apache/hadoop/hbase/quotas/TestMasterSpaceQuotaObserver.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.TestNamespaceQuotaViolationStore.java">org/apache/hadoop/hbase/quotas/TestNamespaceQuotaViolationStore.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.TestQuotaFilter.java">org/apache/hadoop/hbase/quotas/TestQuotaFilter.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.TestQuotaObserverChoreWithMiniCluster.java">org/apache/hadoop/hbase/quotas/TestQuotaObserverChoreWithMiniCluster.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.TestQuotaSettingsFactory.java">org/apache/hadoop/hbase/quotas/TestQuotaSettingsFactory.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.TestQuotaStatusRPCs.java">org/apache/hadoop/hbase/quotas/TestQuotaStatusRPCs.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.TestQuotaThrottle.java">org/apache/hadoop/hbase/quotas/TestQuotaThrottle.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.TestRateLimiter.java">org/apache/hadoop/hbase/quotas/TestRateLimiter.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.TestSpaceQuotas.java">org/apache/hadoop/hbase/quotas/TestSpaceQuotas.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.TestTableQuotaViolationStore.java">org/apache/hadoop/hbase/quotas/TestTableQuotaViolationStore.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.TestTablesWithQuotas.java">org/apache/hadoop/hbase/quotas/TestTablesWithQuotas.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.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.TimeBasedLimiter.java">org/apache/hadoop/hbase/quotas/TimeBasedLimiter.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.UserQuotaState.java">org/apache/hadoop/hbase/quotas/UserQuotaState.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.quotas.policies.BaseViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/BaseViolationPolicyEnforcement.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.policies.DefaultViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/DefaultViolationPolicyEnforcement.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.policies.DisableTableViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/DisableTableViolationPolicyEnforcement.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.policies.NoInsertsViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/NoInsertsViolationPolicyEnforcement.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.policies.NoWritesCompactionsViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/NoWritesCompactionsViolationPolicyEnforcement.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.policies.NoWritesViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/NoWritesViolationPolicyEnforcement.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.policies.TestBulkLoadCheckingViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/TestBulkLoadCheckingViolationPolicyEnforcement.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.AbstractMemStore.java">org/apache/hadoop/hbase/regionserver/AbstractMemStore.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.AbstractMultiFileWriter.java">org/apache/hadoop/hbase/regionserver/AbstractMultiFileWriter.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.AbstractTestDateTieredCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/AbstractTestDateTieredCompactionPolicy.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>16</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.BusyRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/BusyRegionSplitPolicy.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.ByteBufferChunkKeyValue.java">org/apache/hadoop/hbase/regionserver/ByteBufferChunkKeyValue.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.CSLMImmutableSegment.java">org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.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.CellArrayImmutableSegment.java">org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.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.CellArrayMap.java">org/apache/hadoop/hbase/regionserver/CellArrayMap.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.CellChunkMap.java">org/apache/hadoop/hbase/regionserver/CellChunkMap.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.CellFlatMap.java">org/apache/hadoop/hbase/regionserver/CellFlatMap.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.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>2</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>5</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>9</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>2</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>2</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>8</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>6</td></tr>
-<tr class="b">
+<tr class="a">
 <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>3</td></tr>
-<tr class="a">
+<tr class="b">
 <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>2</td></tr>
-<tr class="b">
+<tr class="a">
 <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>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.java">org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.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.DataBlockEncodingTool.java">org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.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.DateTieredStoreEngine.java">org/apache/hadoop/hbase/regionserver/DateTieredStoreEngine.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.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>2</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>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.DelegatingKeyValueScanner.java">org/apache/hadoop/hbase/regionserver/DelegatingKeyValueScanner.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.DelimitedKeyPrefixRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/DelimitedKeyPrefixRegionSplitPolicy.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.DisabledRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/DisabledRegionSplitPolicy.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.FavoredNodesForRegion.java">org/apache/hadoop/hbase/regionserver/FavoredNodesForRegion.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.FifoRpcSchedulerFactory.java">org/apache/hadoop/hbase/regionserver/FifoRpcSchedulerFactory.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>3</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>8</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>205</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>47</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>87</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>2</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>43</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>6</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>11</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>2</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>3</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>3</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>10</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>1</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>10</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>1</td></tr>
-<tr class="b">
+<tr class="a">
 <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>29</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreLAB.java">org/apache/hadoop/hbase/regionserver/MemStoreLAB.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.MemStoreLABImpl.java">org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.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.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.MetricsHeapMemoryManagerSourceImpl.java">org/apache/hadoop/hbase/regionserver/MetricsHeapMemoryManagerSourceImpl.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.MetricsRegionAggregateSourceImpl.java">org/apache/hadoop/hbase/regionserver/MetricsRegionAggregateSourceImpl.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.MetricsRegionServer.java">org/apache/hadoop/hbase/regionserver/MetricsRegionServer.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.MetricsRegionServerSourceFactoryImpl.java">org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.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.MetricsRegionServerSourceImpl.java">org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.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.MetricsRegionServerWrapperImpl.java">org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.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.MetricsRegionServerWrapperStub.java">org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.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.MetricsRegionSourceImpl.java">org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.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.MetricsTable.java">org/apache/hadoop/hbase/regionserver/MetricsTable.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.MetricsTableAggregateSourceImpl.java">org/apache/hadoop/hbase/regionserver/MetricsTableAggregateSourceImpl.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.MetricsTableSourceImpl.java">org/apache/hadoop/hbase/regionserver/MetricsTableSourceImpl.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.MetricsTableWrapperAggregateImpl.java">org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregateImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>20</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress.java">org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.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.regionserver.MobReferenceOnlyFilter.java">org/apache/hadoop/hbase/regionserver/MobReferenceOnlyFilter.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.MultiVersionConcurrencyControl.java">org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.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.MutableOnlineRegions.java">org/apache/hadoop/hbase/regionserver/MutableOnlineRegions.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.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.NoTagByteBufferChunkKeyValue.java">org/apache/hadoop/hbase/regionserver/NoTagByteBufferChunkKeyValue.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.OOMERegionServer.java">org/apache/hadoop/hbase/regionserver/OOMERegionServer.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.OnlineRegions.java">org/apache/hadoop/hbase/regionserver/OnlineRegions.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.OperationStatus.java">org/apache/hadoop/hbase/regionserver/OperationStatus.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.RSDumpServlet.java">org/apache/hadoop/hbase/regionserver/RSDumpServlet.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.RSRpcServices.java">org/apache/hadoop/hbase/regionserver/RSRpcServices.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>65</td></tr>
-<tr class="b">
+<tr class="a">
 <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>5</td></tr>
-<tr class="a">
+<tr class="b">
 <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>26</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionAsTable.java">org/apache/hadoop/hbase/regionserver/RegionAsTable.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.RegionCoprocessorHost.java">org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>79</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionScanner.java">org/apache/hadoop/hbase/regionserver/RegionScanner.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.RegionServerAccounting.java">org/apache/hadoop/hbase/regionserver/RegionServerAccounting.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>7</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>6</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>5</td></tr>
-<tr class="b">
+<tr class="a">
 <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="a">
+<tr class="b">
 <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="b">
+<tr class="a">
 <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="a">
+<tr class="b">
 <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>2</td></tr>
-<tr class="b">
+<tr class="a">
 <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>7</td></tr>
-<tr class="a">
+<tr class="b">
 <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>2</td></tr>
-<tr class="b">
+<tr class="a">
 <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>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ScanOptions.java">org/apache/hadoop/hbase/regionserver/ScanOptions.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.ScannerContext.java">org/apache/hadoop/hbase/regionserver/ScannerContext.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.ScannerIdGenerator.java">org/apache/hadoop/hbase/regionserver/ScannerIdGenerator.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.SecureBulkLoadEndpointClient.java">org/apache/hadoop/hbase/regionserver/SecureBulkLoadEndpointClient.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.SecureBulkLoadManager.java">org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.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.Segment.java">org/apache/hadoop/hbase/regionserver/Segment.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.SegmentFactory.java">org/apache/hadoop/hbase/regionserver/SegmentFactory.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.SegmentScanner.java">org/apache/hadoop/hbase/regionserver/SegmentScanner.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.ServerNonceManager.java">org/apache/hadoop/hbase/regionserver/ServerNonceManager.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.ShipperListener.java">org/apache/hadoop/hbase/regionserver/ShipperListener.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.ShutdownHook.java">org/apache/hadoop/hbase/regionserver/ShutdownHook.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.SimpleRpcSchedulerFactory.java">org/apache/hadoop/hbase/regionserver/SimpleRpcSchedulerFactory.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.SplitLogWorker.java">org/apache/hadoop/hbase/regionserver/SplitLogWorker.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.SplitRequest.java">org/apache/hadoop/hbase/regionserver/SplitRequest.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.SteppingSplitPolicy.java">org/apache/hadoop/hbase/regionserver/SteppingSplitPolicy.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.Store.java">org/apache/hadoop/hbase/regionserver/Store.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.StoreFileComparators.java">org/apache/hadoop/hbase/regionserver/StoreFileComparators.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.StoreFileInfo.java">org/apache/hadoop/hbase/regionserver/StoreFileInfo.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.regionserver.StoreFileManager.java">org/apache/hadoop/hbase/regionserver/StoreFileManager.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.StoreFileReader.java">org/apache/hadoop/hbase/regionserver/StoreFileReader.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.StoreFileScanner.java">org/apache/hadoop/hbase/regionserver/StoreFileScanner.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.regionserver.StoreFileWriter.java">org/apache/hadoop/hbase/regionserver/StoreFileWriter.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.regionserver.StoreFlushContext.java">org/apache/hadoop/hbase/regionserver/StoreFlushContext.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.StoreFlusher.java">org/apache/hadoop/hbase/regionserver/StoreFlusher.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.StoreScanner.java">org/apache/hadoop/hbase/regionserver/StoreScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>23</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.r

<TRUNCATED>

[21/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html b/devapidocs/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html
index a4be0db..589b80d 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html
@@ -200,7 +200,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">RpcScheduler</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#IPC_SERVER_MAX_CALLQUEUE_LENGTH">IPC_SERVER_MAX_CALLQUEUE_LENGTH</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH">IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#IPC_SERVER_MAX_CALLQUEUE_LENGTH">IPC_SERVER_MAX_CALLQUEUE_LENGTH</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH">IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH">IPC_SERVER_REPLICATION_MAX_CALLQUEUE_LENGTH</a></code></li>
 </ul>
 </li>
 </ul>
@@ -500,7 +500,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SimpleRpcScheduler</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.103">SimpleRpcScheduler</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.109">SimpleRpcScheduler</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                           int&nbsp;handlerCount,
                           int&nbsp;priorityHandlerCount,
                           int&nbsp;replicationHandlerCount,
@@ -522,7 +522,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>onConfigurationChange</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.119">onConfigurationChange</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.125">onConfigurationChange</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Resize call queues;</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -538,7 +538,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>init</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.136">init</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html" title="class in org.apache.hadoop.hbase.ipc">RpcScheduler.Context</a>&nbsp;context)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.142">init</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html" title="class in org.apache.hadoop.hbase.ipc">RpcScheduler.Context</a>&nbsp;context)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#init-org.apache.hadoop.hbase.ipc.RpcScheduler.Context-">RpcScheduler</a></code></span></div>
 <div class="block">Does some quick initialization. Heavy tasks (e.g. starting threads) should be
  done in <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#start--"><code>RpcScheduler.start()</code></a>. This method is called before <code>start</code>.</div>
@@ -556,7 +556,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>start</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.141">start</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.147">start</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#start--">RpcScheduler</a></code></span></div>
 <div class="block">Prepares for request serving. An implementation may start some handler threads here.</div>
 <dl>
@@ -571,7 +571,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.148">stop</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.154">stop</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#stop--">RpcScheduler</a></code></span></div>
 <div class="block">Stops serving new requests.</div>
 <dl>
@@ -586,7 +586,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>dispatch</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.155">dispatch</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&nbsp;callTask)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.161">dispatch</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&nbsp;callTask)
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#dispatch-org.apache.hadoop.hbase.ipc.CallRunner-">RpcScheduler</a></code></span></div>
 <div class="block">Dispatches an RPC request asynchronously. An implementation is free to choose to process the
@@ -607,7 +607,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>getGeneralQueueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.172">getGeneralQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.178">getGeneralQueueLength</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getGeneralQueueLength--">RpcScheduler</a></code></span></div>
 <div class="block">Retrieves length of the general queue for metrics.</div>
 <dl>
@@ -622,7 +622,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>getPriorityQueueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.177">getPriorityQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.183">getPriorityQueueLength</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getPriorityQueueLength--">RpcScheduler</a></code></span></div>
 <div class="block">Retrieves length of the priority queue for metrics.</div>
 <dl>
@@ -637,7 +637,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationQueueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.182">getReplicationQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.188">getReplicationQueueLength</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getReplicationQueueLength--">RpcScheduler</a></code></span></div>
 <div class="block">Retrieves length of the replication queue for metrics.</div>
 <dl>
@@ -652,7 +652,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveRpcHandlerCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.187">getActiveRpcHandlerCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.193">getActiveRpcHandlerCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getActiveRpcHandlerCount--">RpcScheduler</a></code></span></div>
 <div class="block">Retrieves the total number of active handler.</div>
 <dl>
@@ -667,7 +667,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveGeneralRpcHandlerCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.193">getActiveGeneralRpcHandlerCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.199">getActiveGeneralRpcHandlerCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getActiveGeneralRpcHandlerCount--">RpcScheduler</a></code></span></div>
 <div class="block">Retrieves the number of active general handler.</div>
 <dl>
@@ -682,7 +682,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>getActivePriorityRpcHandlerCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.198">getActivePriorityRpcHandlerCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.204">getActivePriorityRpcHandlerCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getActivePriorityRpcHandlerCount--">RpcScheduler</a></code></span></div>
 <div class="block">Retrieves the number of active priority handler.</div>
 <dl>
@@ -697,7 +697,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveReplicationRpcHandlerCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.203">getActiveReplicationRpcHandlerCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.209">getActiveReplicationRpcHandlerCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getActiveReplicationRpcHandlerCount--">RpcScheduler</a></code></span></div>
 <div class="block">Retrieves the number of active replication handler.</div>
 <dl>
@@ -712,7 +712,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumGeneralCallsDropped</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.208">getNumGeneralCallsDropped</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.214">getNumGeneralCallsDropped</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getNumGeneralCallsDropped--">RpcScheduler</a></code></span></div>
 <div class="block">If CoDel-based RPC executors are used, retrieves the number of Calls that were dropped
  from general queue because RPC executor is under high load; returns 0 otherwise.</div>
@@ -728,7 +728,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumLifoModeSwitches</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.213">getNumLifoModeSwitches</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.219">getNumLifoModeSwitches</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getNumLifoModeSwitches--">RpcScheduler</a></code></span></div>
 <div class="block">If CoDel-based RPC executors are used, retrieves the number of Calls that were
  picked from the tail of the queue (indicating adaptive LIFO mode, when
@@ -745,7 +745,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>getWriteQueueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.218">getWriteQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.224">getWriteQueueLength</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getWriteQueueLength--">RpcScheduler</a></code></span></div>
 <div class="block">Retrieves length of the write queue for metrics when use RWQueueRpcExecutor.</div>
 <dl>
@@ -760,7 +760,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>getReadQueueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.223">getReadQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.229">getReadQueueLength</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getReadQueueLength--">RpcScheduler</a></code></span></div>
 <div class="block">Retrieves length of the read queue for metrics when use RWQueueRpcExecutor.</div>
 <dl>
@@ -775,7 +775,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanQueueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.228">getScanQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.234">getScanQueueLength</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getScanQueueLength--">RpcScheduler</a></code></span></div>
 <div class="block">Retrieves length of the scan queue for metrics when use RWQueueRpcExecutor.</div>
 <dl>
@@ -790,7 +790,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveWriteRpcHandlerCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.233">getActiveWriteRpcHandlerCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.239">getActiveWriteRpcHandlerCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getActiveWriteRpcHandlerCount--">RpcScheduler</a></code></span></div>
 <div class="block">Retrieves the number of active write rpc handler when use RWQueueRpcExecutor.</div>
 <dl>
@@ -805,7 +805,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveReadRpcHandlerCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.238">getActiveReadRpcHandlerCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.244">getActiveReadRpcHandlerCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getActiveReadRpcHandlerCount--">RpcScheduler</a></code></span></div>
 <div class="block">Retrieves the number of active write rpc handler when use RWQueueRpcExecutor.</div>
 <dl>
@@ -820,7 +820,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveScanRpcHandlerCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.243">getActiveScanRpcHandlerCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.249">getActiveScanRpcHandlerCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getActiveScanRpcHandlerCount--">RpcScheduler</a></code></span></div>
 <div class="block">Retrieves the number of active write rpc handler when use RWQueueRpcExecutor.</div>
 <dl>
@@ -835,7 +835,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObs
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getCallQueueInfo</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/CallQueueInfo.html" title="class in org.apache.hadoop.hbase.ipc">CallQueueInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.248">getCallQueueInfo</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/CallQueueInfo.html" title="class in org.apache.hadoop.hbase.ipc">CallQueueInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.254">getCallQueueInfo</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getCallQueueInfo--">RpcScheduler</a></code></span></div>
 <div class="block">Get call queue information</div>
 <dl>

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
index 882553c..6741c37 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
@@ -376,14 +376,14 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.assignment.<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#abort-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#addToRemoteDispatcher-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">addToRemoteDispatcher</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#execute-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getRegionInfo--">getRegionInfo</a>, <a href="../../../../../../org/apache/hadoop/hbase/maste
 r/assignment/RegionTransitionProcedure.html#getRegionState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getRegionState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getTableName--">getTableName</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getTransitionState--">getTransitionState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#hasLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">hasLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#holdLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">holdLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#isMeta--">isMeta</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionP
 rocedure.html#isServerOnline-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">isServerOnline</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#isServerOnline-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">isServerOnline</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-java.io.IOException-">remoteCallFailed</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteOperationCompleted-org.apache.
 hadoop.hbase.master.procedure.MasterProcedureEnv-">remoteOperationCompleted</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteOperationFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">remoteOperationFailed</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#reportTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-long-">reportTransition</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#rollback-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setRegi
 onInfo-org.apache.hadoop.hbase.client.RegionInfo-">setRegionInfo</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setTransitionState-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState-">setTransitionState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#shouldWaitClientAck-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">shouldWaitClientAck</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#abort-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#addToRemoteDispatcher-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">addToRemoteDispatcher</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#execute-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getAttempt--">getAttempt</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assi
 gnment/RegionTransitionProcedure.html#getRegionInfo--">getRegionInfo</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getRegionState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getRegionState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getTableName--">getTableName</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getTransitionState--">getTransitionState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#hasLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">hasLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#holdLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">holdLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTra
 nsitionProcedure.html#isMeta--">isMeta</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#isServerOnline-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">isServerOnline</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#isServerOnline-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">isServerOnline</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-java.io.IOException-">remoteCallFailed</a>, <a hre
 f="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteOperationCompleted-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">remoteOperationCompleted</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteOperationFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">remoteOperationFailed</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#reportTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-long-">reportTransition</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#rollback-org.apache.hadoop.hbase.master.procedure.MasterProced
 ureEnv-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setAttempt-int-">setAttempt</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setRegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">setRegionInfo</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setTimeoutFailure-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">setTimeoutFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#setTransitionState-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState-">setTransitionState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#shouldWaitClientAck-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">shouldWaitClientAck</a>, <a href="../../
 ../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.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#completionCleanup-TEnvironment-">completionCleanup</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-">d
 oReleaseLock</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#ge
 tProcId--">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#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.hbase.procedure2.Procedure-org.apache.hadoop.hbase.procedure2.Procedure-">haveSameParent</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="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#removeStackIndex--">removeStackInde
 x</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/Procedure.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="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setSubmittedTime-long-">setSubmitte
 dTime</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#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>
+<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#completionCleanup-TEnvironment-">completionCleanup</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-">d
 oReleaseLock</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#ge
 tProcId--">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#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.hbase.procedure2.Procedure-org.apache.hadoop.hbase.procedure2.Procedure-">haveSameParent</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="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#removeStackIndex--">removeStackInde
 x</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/Procedure.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="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setSubmittedTime-long-">setSubmitte
 dTime</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setTimeout-int-">setTimeout</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">
@@ -552,7 +552,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>deserializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.141">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.144">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
 <div class="block">Called on store load to allow the user to decode the previously serialized
@@ -573,7 +573,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>startTransition</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.153">startTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.159">startTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                   <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -590,7 +590,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>updateTransition</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.218">updateTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.226">updateTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                    <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                    <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a></pre>
@@ -614,7 +614,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>finishTransition</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.268">finishTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.276">finishTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                 <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -631,7 +631,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>reportTransition</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.277">reportTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.285">reportTransition</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                 <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                                 org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode&nbsp;code,
                                 long&nbsp;openSeqNum)
@@ -650,7 +650,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>handleFailure</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.312">handleFailure</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.320">handleFailure</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                            <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</pre>
 <div class="block">Called when dispatch or subsequent OPEN request fail. Can be run by the
  inline dispatch call or later by the ServerCrashProcedure. Our state is
@@ -664,7 +664,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementAndCheckMaxAttempts</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.325">incrementAndCheckMaxAttempts</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.333">incrementAndCheckMaxAttempts</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                              <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</pre>
 </li>
 </ul>
@@ -674,7 +674,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>remoteCallBuild</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.336">remoteCallBuild</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.344">remoteCallBuild</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                                                  <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteProcedure.html#remoteCallBuild-TEnv-TRemote-">RemoteProcedureDispatcher.RemoteProcedure</a></code></span></div>
 <div class="block">For building the remote operation.</div>
@@ -692,7 +692,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>remoteCallFailed</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.343">remoteCallFailed</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.351">remoteCallFailed</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                    <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                                    <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;exception)</pre>
 <dl>
@@ -711,7 +711,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringClassDetails</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.350">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.358">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClassDetails-java.lang.StringBuilder-">Procedure</a></code></span></div>
 <div class="block">Extend the toString() information with the procedure details
  e.g. className and parameters</div>
@@ -729,7 +729,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>getServer</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.356">getServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.364">getServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getServer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">RegionTransitionProcedure</a></code></span></div>
 <div class="block">Used by ServerCrashProcedure to see if this Assign/Unassign needs processing.</div>
 <dl>
@@ -746,7 +746,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getProcedureMetrics</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.364">getProcedureMetrics</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.372">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/40477ee9/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html
index dff0ede..aab6a03 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html
@@ -105,7 +105,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.69">RegionStateStore.RegionStateVisitor</a></pre>
+<pre>public static interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.70">RegionStateStore.RegionStateVisitor</a></pre>
 </li>
 </ul>
 </div>
@@ -153,7 +153,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>visitRegionState</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html#line.70">visitRegionState</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html#line.71">visitRegionState</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
                       <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>&nbsp;state,
                       <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;regionLocation,
                       <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;lastHost,


[09/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html
index 824f8c3..ca94fbc 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html
@@ -161,154 +161,160 @@
 <span class="sourceLineNo">153</span>    if (removeAfterUnassigning) {<a name="line.153"></a>
 <span class="sourceLineNo">154</span>      state.setRemoveAfterUnassigning(true);<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    serializer.serialize(state.build());<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  }<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    final UnassignRegionStateData state =<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        serializer.deserialize(UnassignRegionStateData.class);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    setTransitionState(state.getTransitionState());<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    setRegionInfo(ProtobufUtil.toRegionInfo(state.getRegionInfo()));<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    this.hostingServer = ProtobufUtil.toServerName(state.getHostingServer());<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    force = state.getForce();<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    if (state.hasDestinationServer()) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      this.destinationServer = ProtobufUtil.toServerName(state.getDestinationServer());<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    removeAfterUnassigning = state.getRemoveAfterUnassigning();<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>  @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  protected boolean startTransition(final MasterProcedureEnv env, final RegionStateNode regionNode) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    // nothing to do here. we skip the step in the constructor<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    // by jumping to REGION_TRANSITION_DISPATCH<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    throw new UnsupportedOperationException();<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>  @Override<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  protected boolean updateTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        throws IOException {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    // if the region is already closed or offline we can't do much...<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    if (regionNode.isInState(State.CLOSED, State.OFFLINE)) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      LOG.info("Not unassigned " + this + "; " + regionNode.toShortString());<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>    // if we haven't started the operation yet, we can abort<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    if (aborted.get() &amp;&amp; regionNode.isInState(State.OPEN)) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      setAbortFailure(getClass().getSimpleName(), "abort requested");<a name="line.192"></a>
+<span class="sourceLineNo">156</span>    if (getAttempt() &gt; 0) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      state.setAttempt(getAttempt());<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    serializer.serialize(state.build());<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  protected void deserializeStateData(ProcedureStateSerializer serializer)<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      throws IOException {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    final UnassignRegionStateData state =<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        serializer.deserialize(UnassignRegionStateData.class);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    setTransitionState(state.getTransitionState());<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    setRegionInfo(ProtobufUtil.toRegionInfo(state.getRegionInfo()));<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    this.hostingServer = ProtobufUtil.toServerName(state.getHostingServer());<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    force = state.getForce();<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    if (state.hasDestinationServer()) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      this.destinationServer = ProtobufUtil.toServerName(state.getDestinationServer());<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    removeAfterUnassigning = state.getRemoveAfterUnassigning();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    if (state.hasAttempt()) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      setAttempt(state.getAttempt());<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  }<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>  @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  protected boolean startTransition(final MasterProcedureEnv env, final RegionStateNode regionNode) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    // nothing to do here. we skip the step in the constructor<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    // by jumping to REGION_TRANSITION_DISPATCH<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    throw new UnsupportedOperationException();<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>  @Override<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  protected boolean updateTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        throws IOException {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    // if the region is already closed or offline we can't do much...<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    if (regionNode.isInState(State.CLOSED, State.OFFLINE)) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      LOG.info("Not unassigned " + this + "; " + regionNode.toShortString());<a name="line.192"></a>
 <span class="sourceLineNo">193</span>      return false;<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>    // Mark the region as CLOSING.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    env.getAssignmentManager().markRegionAsClosing(regionNode);<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>    // Add the close region operation the the server dispatch queue.<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    if (!addToRemoteDispatcher(env, regionNode.getRegionLocation())) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      // If addToRemoteDispatcher fails, it calls the callback #remoteCallFailed.<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>    // Return true to keep the procedure running.<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    return true;<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 void finishTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      throws IOException {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    AssignmentManager am = env.getAssignmentManager();<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    RegionInfo regionInfo = getRegionInfo();<a name="line.212"></a>
+<span class="sourceLineNo">196</span>    // if we haven't started the operation yet, we can abort<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    if (aborted.get() &amp;&amp; regionNode.isInState(State.OPEN)) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      setAbortFailure(getClass().getSimpleName(), "abort requested");<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>    // Mark the region as CLOSING.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    env.getAssignmentManager().markRegionAsClosing(regionNode);<a name="line.203"></a>
+<span class="sourceLineNo">204</span><a name="line.204"></a>
+<span class="sourceLineNo">205</span>    // Add the close region operation the the server dispatch queue.<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    if (!addToRemoteDispatcher(env, regionNode.getRegionLocation())) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      // If addToRemoteDispatcher fails, it calls the callback #remoteCallFailed.<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>    // Return true to keep the procedure running.<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    return true;<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>    if (!removeAfterUnassigning) {<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      am.markRegionAsClosed(regionNode);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    } else {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      // Remove from in-memory states<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      am.getRegionStates().deleteRegion(regionInfo);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      env.getMasterServices().getServerManager().removeRegion(regionInfo);<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      FavoredNodesManager fnm = env.getMasterServices().getFavoredNodesManager();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      if (fnm != null) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        fnm.deleteFavoredNodesForRegions(Lists.newArrayList(regionInfo));<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  @Override<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  public RemoteOperation remoteCallBuild(final MasterProcedureEnv env, final ServerName serverName) {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    assert serverName.equals(getRegionState(env).getRegionLocation());<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    return new RegionCloseOperation(this, getRegionInfo(), this.destinationServer);<a name="line.230"></a>
+<span class="sourceLineNo">214</span>  @Override<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  protected void finishTransition(final MasterProcedureEnv env, final RegionStateNode regionNode)<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      throws IOException {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    AssignmentManager am = env.getAssignmentManager();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    RegionInfo regionInfo = getRegionInfo();<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>    if (!removeAfterUnassigning) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      am.markRegionAsClosed(regionNode);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    } else {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      // Remove from in-memory states<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      am.getRegionStates().deleteRegion(regionInfo);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      env.getMasterServices().getServerManager().removeRegion(regionInfo);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      FavoredNodesManager fnm = env.getMasterServices().getFavoredNodesManager();<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      if (fnm != null) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        fnm.deleteFavoredNodesForRegions(Lists.newArrayList(regionInfo));<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>  }<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>  protected void reportTransition(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      final TransitionCode code, final long seqId) throws UnexpectedStateException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    switch (code) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      case CLOSED:<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        setTransitionState(RegionTransitionState.REGION_TRANSITION_FINISH);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        break;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      default:<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        throw new UnexpectedStateException(String.format(<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          "Received report unexpected transition state=%s for region=%s server=%s, expected CLOSED.",<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          code, regionNode.getRegionInfo(), regionNode.getRegionLocation()));<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>  @Override<a name="line.247"></a>
-<span class="sourceLineNo">248</span>  protected boolean remoteCallFailed(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      final IOException exception) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    // TODO: Is there on-going rpc to cleanup?<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    if (exception instanceof ServerCrashException) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      // This exception comes from ServerCrashProcedure AFTER log splitting.<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      // SCP found this region as a RIT. Its call into here says it is ok to let this procedure go<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      // complete. This complete will release lock on this region so subsequent action on region<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      // can succeed; e.g. the assign that follows this unassign when a move (w/o wait on SCP<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      // the assign could run w/o logs being split so data loss).<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      try {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        reportTransition(env, regionNode, TransitionCode.CLOSED, HConstants.NO_SEQNUM);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      } catch (UnexpectedStateException e) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        // Should never happen.<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        throw new RuntimeException(e);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    } else if (exception instanceof RegionServerAbortedException ||<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        exception instanceof RegionServerStoppedException ||<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        exception instanceof ServerNotRunningYetException) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      // RS is aborting, we cannot offline the region since the region may need to do WAL<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      // recovery. Until we see the RS expiration, we should retry.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      // TODO: This should be suspend like the below where we call expire on server?<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      LOG.info("Ignoring; waiting on ServerCrashProcedure", exception);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    } else if (exception instanceof NotServingRegionException) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      LOG.info("IS THIS OK? ANY LOGS TO REPLAY; ACTING AS THOUGH ALL GOOD " + regionNode,<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        exception);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_FINISH);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    } else {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      LOG.warn("Expiring server " + this + "; " + regionNode.toShortString() +<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        ", exception=" + exception);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      env.getMasterServices().getServerManager().expireServer(regionNode.getRegionLocation());<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      // Return false so this procedure stays in suspended state. It will be woken up by the<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      // ServerCrashProcedure that was scheduled when we called #expireServer above. SCP calls<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      // #handleRIT which will call this method only the exception will be a ServerCrashException<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      // this time around (See above).<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      // TODO: Add a SCP as a new subprocedure that we now come to depend on.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      return false;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    return true;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>  @Override<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    super.toStringClassDetails(sb);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    sb.append(", server=").append(this.hostingServer);<a name="line.291"></a>
+<span class="sourceLineNo">234</span>  public RemoteOperation remoteCallBuild(final MasterProcedureEnv env, final ServerName serverName) {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    assert serverName.equals(getRegionState(env).getRegionLocation());<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    return new RegionCloseOperation(this, getRegionInfo(), this.destinationServer);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  }<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>  @Override<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  protected void reportTransition(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      final TransitionCode code, final long seqId) throws UnexpectedStateException {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    switch (code) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      case CLOSED:<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        setTransitionState(RegionTransitionState.REGION_TRANSITION_FINISH);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        break;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      default:<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        throw new UnexpectedStateException(String.format(<a name="line.247"></a>
+<span class="sourceLineNo">248</span>          "Received report unexpected transition state=%s for region=%s server=%s, expected CLOSED.",<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          code, regionNode.getRegionInfo(), regionNode.getRegionLocation()));<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  @Override<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  protected boolean remoteCallFailed(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      final IOException exception) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    // TODO: Is there on-going rpc to cleanup?<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    if (exception instanceof ServerCrashException) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      // This exception comes from ServerCrashProcedure AFTER log splitting.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      // SCP found this region as a RIT. Its call into here says it is ok to let this procedure go<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      // complete. This complete will release lock on this region so subsequent action on region<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      // can succeed; e.g. the assign that follows this unassign when a move (w/o wait on SCP<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      // the assign could run w/o logs being split so data loss).<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      try {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        reportTransition(env, regionNode, TransitionCode.CLOSED, HConstants.NO_SEQNUM);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      } catch (UnexpectedStateException e) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        // Should never happen.<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        throw new RuntimeException(e);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      }<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    } else if (exception instanceof RegionServerAbortedException ||<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        exception instanceof RegionServerStoppedException ||<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        exception instanceof ServerNotRunningYetException) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      // RS is aborting, we cannot offline the region since the region may need to do WAL<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      // recovery. Until we see the RS expiration, we should retry.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      // TODO: This should be suspend like the below where we call expire on server?<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      LOG.info("Ignoring; waiting on ServerCrashProcedure", exception);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    } else if (exception instanceof NotServingRegionException) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      LOG.info("IS THIS OK? ANY LOGS TO REPLAY; ACTING AS THOUGH ALL GOOD " + regionNode,<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        exception);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      setTransitionState(RegionTransitionState.REGION_TRANSITION_FINISH);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    } else {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      LOG.warn("Expiring server " + this + "; " + regionNode.toShortString() +<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        ", exception=" + exception);<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      env.getMasterServices().getServerManager().expireServer(regionNode.getRegionLocation());<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      // Return false so this procedure stays in suspended state. It will be woken up by the<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      // ServerCrashProcedure that was scheduled when we called #expireServer above. SCP calls<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      // #handleRIT which will call this method only the exception will be a ServerCrashException<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      // this time around (See above).<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      // TODO: Add a SCP as a new subprocedure that we now come to depend on.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      return false;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    return true;<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>  @Override<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public ServerName getServer(final MasterProcedureEnv env) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    return this.hostingServer;<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>  @Override<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getUnassignProcMetrics();<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">295</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    super.toStringClassDetails(sb);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    sb.append(", server=").append(this.hostingServer);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  }<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>  @Override<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  public ServerName getServer(final MasterProcedureEnv env) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    return this.hostingServer;<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>  @Override<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getUnassignProcMetrics();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  }<a name="line.308"></a>
+<span class="sourceLineNo">309</span>}<a name="line.309"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/DelayedProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/DelayedProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/DelayedProcedure.html
index bd92c85..e16824c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/DelayedProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/DelayedProcedure.html
@@ -28,12 +28,15 @@
 <span class="sourceLineNo">020</span>import org.apache.hadoop.hbase.procedure2.util.DelayedUtil;<a name="line.20"></a>
 <span class="sourceLineNo">021</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.21"></a>
 <span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>@InterfaceAudience.Private<a name="line.23"></a>
-<span class="sourceLineNo">024</span>class DelayedProcedure extends DelayedUtil.DelayedContainerWithTimestamp&lt;Procedure&lt;?&gt;&gt; {<a name="line.24"></a>
-<span class="sourceLineNo">025</span>  public DelayedProcedure(Procedure&lt;?&gt; procedure) {<a name="line.25"></a>
-<span class="sourceLineNo">026</span>    super(procedure, procedure.getTimeoutTimestamp());<a name="line.26"></a>
-<span class="sourceLineNo">027</span>  }<a name="line.27"></a>
-<span class="sourceLineNo">028</span>}<a name="line.28"></a>
+<span class="sourceLineNo">023</span>/**<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * Vessel that carries a Procedure and a timeout.<a name="line.24"></a>
+<span class="sourceLineNo">025</span> */<a name="line.25"></a>
+<span class="sourceLineNo">026</span>@InterfaceAudience.Private<a name="line.26"></a>
+<span class="sourceLineNo">027</span>class DelayedProcedure extends DelayedUtil.DelayedContainerWithTimestamp&lt;Procedure&lt;?&gt;&gt; {<a name="line.27"></a>
+<span class="sourceLineNo">028</span>  public DelayedProcedure(Procedure&lt;?&gt; procedure) {<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    super(procedure, procedure.getTimeoutTimestamp());<a name="line.29"></a>
+<span class="sourceLineNo">030</span>  }<a name="line.30"></a>
+<span class="sourceLineNo">031</span>}<a name="line.31"></a>
 
 
 


[17/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/procedure2/Procedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/Procedure.html b/devapidocs/org/apache/hadoop/hbase/procedure2/Procedure.html
index e8277f0..5c6061c 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/Procedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/Procedure.html
@@ -119,7 +119,7 @@ var activeTableTab = "activeTableTab";
 <br>
 <pre>@InterfaceAudience.Private
  @InterfaceStability.Evolving
-public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.90">Procedure</a>&lt;TEnvironment&gt;
+public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.95">Procedure</a>&lt;TEnvironment&gt;
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/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;TEnvironment&gt;&gt;</pre>
 <div class="block">Base Procedure class responsible for Procedure Metadata;
@@ -158,12 +158,17 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
  during the execute() step. In case of failure and restart, rollback() may be
  called multiple times, so again the code must be idempotent.
 
- <p>Procedure can be made respect a locking regime. It has acqure/release methods as
+ <p>Procedure can be made respect a locking regime. It has acquire/release methods as
  well as an <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasLock-TEnvironment-"><code>hasLock(Object)</code></a>. The lock implementation is up to the implementor.
  If an entity needs to be locked for the life of a procedure -- not just the calls to
  execute -- then implementations should say so with the <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#holdLock-TEnvironment-"><code>holdLock(Object)</code></a>
  method.
 
+ <p>Procedures can be suspended or put in wait state with a callback that gets executed on
+ Procedure-specified timeout. See <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setTimeout-int-"><code>setTimeout(int)</code></a>}, and
+ <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setTimeoutFailure-TEnvironment-"><code>setTimeoutFailure(Object)</code></a>. See TestProcedureEvents and the
+ TestTimeoutEventProcedure class for an example usage.</p>
+
  <p>There are hooks for collecting metrics on submit of the procedure and on finish.
  See <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#updateMetricsOnSubmit-TEnvironment-"><code>updateMetricsOnSubmit(Object)</code></a> and
  <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#updateMetricsOnFinish-TEnvironment-long-boolean-"><code>updateMetricsOnFinish(Object, long, boolean)</code></a>.</div>
@@ -756,7 +761,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.91">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.96">LOG</a></pre>
 </li>
 </ul>
 <a name="NO_PROC_ID">
@@ -765,7 +770,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>NO_PROC_ID</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.92">NO_PROC_ID</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.97">NO_PROC_ID</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.procedure2.Procedure.NO_PROC_ID">Constant Field Values</a></dd>
@@ -778,7 +783,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>NO_TIMEOUT</h4>
-<pre>protected static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.93">NO_TIMEOUT</a></pre>
+<pre>protected static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.98">NO_TIMEOUT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.procedure2.Procedure.NO_TIMEOUT">Constant Field Values</a></dd>
@@ -791,7 +796,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>nonceKey</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.102">nonceKey</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.107">nonceKey</a></pre>
 </li>
 </ul>
 <a name="owner">
@@ -800,7 +805,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>owner</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.103">owner</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.108">owner</a></pre>
 </li>
 </ul>
 <a name="parentProcId">
@@ -809,7 +814,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>parentProcId</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.104">parentProcId</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.109">parentProcId</a></pre>
 </li>
 </ul>
 <a name="rootProcId">
@@ -818,7 +823,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>rootProcId</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.105">rootProcId</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.110">rootProcId</a></pre>
 </li>
 </ul>
 <a name="procId">
@@ -827,7 +832,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>procId</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.106">procId</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.111">procId</a></pre>
 </li>
 </ul>
 <a name="submittedTime">
@@ -836,7 +841,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>submittedTime</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.107">submittedTime</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.112">submittedTime</a></pre>
 </li>
 </ul>
 <a name="state">
@@ -845,7 +850,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>state</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureState <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.110">state</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureState <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.115">state</a></pre>
 </li>
 </ul>
 <a name="exception">
@@ -854,7 +859,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>exception</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureException.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureException</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.111">exception</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureException.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureException</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.116">exception</a></pre>
 </li>
 </ul>
 <a name="stackIndexes">
@@ -863,7 +868,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>stackIndexes</h4>
-<pre>private&nbsp;int[] <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.112">stackIndexes</a></pre>
+<pre>private&nbsp;int[] <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.117">stackIndexes</a></pre>
 </li>
 </ul>
 <a name="childrenLatch">
@@ -872,7 +877,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>childrenLatch</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.113">childrenLatch</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.118">childrenLatch</a></pre>
 </li>
 </ul>
 <a name="timeout">
@@ -881,7 +886,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>timeout</h4>
-<pre>private volatile&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.115">timeout</a></pre>
+<pre>private volatile&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.120">timeout</a></pre>
 </li>
 </ul>
 <a name="lastUpdate">
@@ -890,7 +895,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>lastUpdate</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.116">lastUpdate</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.121">lastUpdate</a></pre>
 </li>
 </ul>
 <a name="result">
@@ -899,7 +904,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockListLast">
 <li class="blockList">
 <h4>result</h4>
-<pre>private volatile&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.118">result</a></pre>
+<pre>private volatile&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.123">result</a></pre>
 </li>
 </ul>
 </li>
@@ -916,7 +921,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockListLast">
 <li class="blockList">
 <h4>Procedure</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.90">Procedure</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.95">Procedure</a>()</pre>
 </li>
 </ul>
 </li>
@@ -935,7 +940,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>execute</h4>
-<pre>protected abstract&nbsp;<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/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&gt;[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.132">execute</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)
+<pre>protected abstract&nbsp;<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/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&gt;[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.137">execute</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)
                                               throws <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</a>,
                                                      <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a>,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -964,7 +969,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>rollback</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.146">rollback</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.151">rollback</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">The code to undo what was done by the execute() code.
@@ -990,7 +995,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>abort</h4>
-<pre>protected abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.160">abort</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
+<pre>protected abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.165">abort</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
 <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
  is to have an AtomicBoolean set in the abort() method and then the execute()
@@ -1008,7 +1013,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>serializeStateData</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.168">serializeStateData</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.173">serializeStateData</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">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
@@ -1027,7 +1032,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>deserializeStateData</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.176">deserializeStateData</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.181">deserializeStateData</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Called on store load to allow the user to decode the previously serialized
  state.</div>
@@ -1047,7 +1052,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <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/procedure2/Procedure.html#line.203">acquireLock</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</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/procedure2/Procedure.html#line.208">acquireLock</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
 <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>execute(Object)</code></a>.
@@ -1083,7 +1088,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>releaseLock</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.210">releaseLock</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.215">releaseLock</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
 <div class="block">The user should override this method, and release lock if necessary.</div>
 </li>
 </ul>
@@ -1095,7 +1100,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>holdLock</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.221">holdLock</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.226">holdLock</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
 <div class="block">Used to keep the procedure lock even when the procedure is yielding or suspended.
  Must implement <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasLock-TEnvironment-"><code>hasLock(Object)</code></a> if you want to hold the lock for life
  of the Procedure.</div>
@@ -1115,7 +1120,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>hasLock</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.233">hasLock</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.238">hasLock</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
 <div class="block">This is used in conjunction with <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#holdLock-TEnvironment-"><code>holdLock(Object)</code></a>. If <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#holdLock-TEnvironment-"><code>holdLock(Object)</code></a>
  returns true, the procedure executor will call acquireLock() once and thereafter
  not call <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#releaseLock-TEnvironment-"><code>releaseLock(Object)</code></a> until the Procedure is done (Normally, it calls
@@ -1136,7 +1141,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>beforeReplay</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.243">beforeReplay</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.248">beforeReplay</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
 <div class="block">Called when the procedure is loaded for replay.
  The procedure implementor may use this method to perform some quick
  operation before replay.
@@ -1151,7 +1156,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>afterReplay</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.251">afterReplay</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.256">afterReplay</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
 <div class="block">Called when the procedure is ready to be added to the queue after
  the loading/replay operation.</div>
 </li>
@@ -1164,7 +1169,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>completionCleanup</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.261">completionCleanup</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.266">completionCleanup</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
 <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,
@@ -1179,7 +1184,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>isYieldAfterExecutionStep</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.273">isYieldAfterExecutionStep</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.278">isYieldAfterExecutionStep</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
 <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
  give other procedures a chance to run.</div>
@@ -1200,7 +1205,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldWaitClientAck</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.286">shouldWaitClientAck</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.291">shouldWaitClientAck</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
 <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
  by requesting that the result is removed from the executor.
@@ -1222,7 +1227,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>getProcedureMetrics</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.296">getProcedureMetrics</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</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/procedure2/Procedure.html#line.301">getProcedureMetrics</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
 <div class="block">Override this method to provide procedure specific counters for submitted count, failed
  count and time histogram.</div>
 <dl>
@@ -1241,7 +1246,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>updateMetricsOnSubmit</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.306">updateMetricsOnSubmit</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.311">updateMetricsOnSubmit</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
 <div class="block">This function will be called just when procedure is submitted for execution. Override this
  method to update the metrics at the beginning of the procedure. The default implementation
  updates submitted counter if <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcedureMetrics-TEnvironment-"><code>getProcedureMetrics(Object)</code></a> returns non-null
@@ -1256,7 +1261,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>updateMetricsOnFinish</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.333">updateMetricsOnFinish</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.338">updateMetricsOnFinish</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env,
                                      long&nbsp;runtime,
                                      boolean&nbsp;success)</pre>
 <div class="block">This function will be called just after procedure execution is finished. Override this method
@@ -1282,7 +1287,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.354">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.359">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -1295,7 +1300,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringSimpleSB</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.364">toStringSimpleSB</a>()</pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.369">toStringSimpleSB</a>()</pre>
 <div class="block">Build the StringBuilder for the simple form of
  procedure string.</div>
 <dl>
@@ -1310,7 +1315,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringDetails</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.401">toStringDetails</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.406">toStringDetails</a>()</pre>
 <div class="block">Extend the toString() information with more procedure
  details</div>
 </li>
@@ -1321,7 +1326,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringClass</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.420">toStringClass</a>()</pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.425">toStringClass</a>()</pre>
 </li>
 </ul>
 <a name="toStringState-java.lang.StringBuilder-">
@@ -1330,7 +1335,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringState</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.431">toStringState</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;builder)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.436">toStringState</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;builder)</pre>
 <div class="block">Called from <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toString--"><code>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>
 <dl>
@@ -1345,7 +1350,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringClassDetails</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.440">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;builder)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.445">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;builder)</pre>
 <div class="block">Extend the toString() information with the procedure details
  e.g. className and parameters</div>
 <dl>
@@ -1360,7 +1365,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>getProcId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.451">getProcId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.456">getProcId</a>()</pre>
 </li>
 </ul>
 <a name="hasParent--">
@@ -1369,7 +1374,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>hasParent</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.455">hasParent</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.460">hasParent</a>()</pre>
 </li>
 </ul>
 <a name="getParentProcId--">
@@ -1378,7 +1383,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>getParentProcId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.459">getParentProcId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.464">getParentProcId</a>()</pre>
 </li>
 </ul>
 <a name="getRootProcId--">
@@ -1387,7 +1392,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>getRootProcId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.463">getRootProcId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.468">getRootProcId</a>()</pre>
 </li>
 </ul>
 <a name="getProcName--">
@@ -1396,7 +1401,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>getProcName</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.467">getProcName</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.472">getProcName</a>()</pre>
 </li>
 </ul>
 <a name="getNonceKey--">
@@ -1405,7 +1410,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonceKey</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.471">getNonceKey</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.476">getNonceKey</a>()</pre>
 </li>
 </ul>
 <a name="getSubmittedTime--">
@@ -1414,7 +1419,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>getSubmittedTime</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.475">getSubmittedTime</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.480">getSubmittedTime</a>()</pre>
 </li>
 </ul>
 <a name="getOwner--">
@@ -1423,7 +1428,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>getOwner</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.479">getOwner</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.484">getOwner</a>()</pre>
 </li>
 </ul>
 <a name="hasOwner--">
@@ -1432,7 +1437,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>hasOwner</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.483">hasOwner</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.488">hasOwner</a>()</pre>
 </li>
 </ul>
 <a name="setProcId-long-">
@@ -1442,7 +1447,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <li class="blockList">
 <h4>setProcId</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.492">setProcId</a>(long&nbsp;procId)</pre>
+protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.497">setProcId</a>(long&nbsp;procId)</pre>
 <div class="block">Called by the ProcedureExecutor to assign the ID to the newly created procedure.</div>
 </li>
 </ul>
@@ -1453,7 +1458,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>setParentProcId</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.502">setParentProcId</a>(long&nbsp;parentProcId)</pre>
+protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.507">setParentProcId</a>(long&nbsp;parentProcId)</pre>
 <div class="block">Called by the ProcedureExecutor to assign the parent to the newly created procedure.</div>
 </li>
 </ul>
@@ -1464,7 +1469,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>setRootProcId</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.507">setRootProcId</a>(long&nbsp;rootProcId)</pre>
+protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.512">setRootProcId</a>(long&nbsp;rootProcId)</pre>
 </li>
 </ul>
 <a name="setNonceKey-org.apache.hadoop.hbase.util.NonceKey-">
@@ -1474,7 +1479,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>setNonceKey</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.516">setNonceKey</a>(<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a>&nbsp;nonceKey)</pre>
+protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.521">setNonceKey</a>(<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a>&nbsp;nonceKey)</pre>
 <div class="block">Called by the ProcedureExecutor to set the value to the newly created procedure.</div>
 </li>
 </ul>
@@ -1485,7 +1490,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>setOwner</h4>
 <pre>@InterfaceAudience.Private
-public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.522">setOwner</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;owner)</pre>
+public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.527">setOwner</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;owner)</pre>
 </li>
 </ul>
 <a name="setOwner-org.apache.hadoop.hbase.security.User-">
@@ -1494,7 +1499,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/p
 <ul class="blockList">
 <li class="blockList">
 <h4>setOwner</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.526">setOwner</a>(<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;owner)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.531">setOwner</a>(<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;owner)</pre>
 </li>
 </ul>
 <a name="setSubmittedTime-long-">
@@ -1504,7 +1509,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/p
 <li class="blockList">
 <h4>setSubmittedTime</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.536">setSubmittedTime</a>(long&nbsp;submittedTime)</pre>
+protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.541">setSubmittedTime</a>(long&nbsp;submittedTime)</pre>
 <div class="block">Called on store load to initialize the Procedure internals after
  the creation/deserialization.</div>
 </li>
@@ -1515,7 +1520,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setTimeout</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.546">setTimeout</a>(int&nbsp;timeout)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.551">setTimeout</a>(int&nbsp;timeout)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>timeout</code> - timeout interval in msec</dd>
@@ -1528,7 +1533,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>hasTimeout</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.550">hasTimeout</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.555">hasTimeout</a>()</pre>
 </li>
 </ul>
 <a name="getTimeout--">
@@ -1537,7 +1542,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getTimeout</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.557">getTimeout</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.562">getTimeout</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the timeout in msec</dd>
@@ -1551,7 +1556,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>setLastUpdate</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.566">setLastUpdate</a>(long&nbsp;lastUpdate)</pre>
+protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.571">setLastUpdate</a>(long&nbsp;lastUpdate)</pre>
 <div class="block">Called on store load to initialize the Procedure internals after
  the creation/deserialization.</div>
 </li>
@@ -1563,7 +1568,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>updateTimestamp</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.574">updateTimestamp</a>()</pre>
+protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.579">updateTimestamp</a>()</pre>
 <div class="block">Called by ProcedureExecutor after each time a procedure step is executed.</div>
 </li>
 </ul>
@@ -1573,7 +1578,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastUpdate</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.578">getLastUpdate</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.583">getLastUpdate</a>()</pre>
 </li>
 </ul>
 <a name="getTimeoutTimestamp--">
@@ -1583,7 +1588,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>getTimeoutTimestamp</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.589">getTimeoutTimestamp</a>()</pre>
+protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.594">getTimeoutTimestamp</a>()</pre>
 <div class="block">Timeout of the next timeout.
  Called by the ProcedureExecutor if the procedure has timeout set and
  the procedure is in the waiting queue.</div>
@@ -1599,7 +1604,7 @@ protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>elapsedTime</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.599">elapsedTime</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.604">elapsedTime</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the time elapsed between the last update and the start time of the procedure.</dd>
@@ -1612,7 +1617,7 @@ protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getResult</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.606">getResult</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.611">getResult</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the serialized result if any, otherwise null</dd>
@@ -1625,7 +1630,7 @@ protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setResult</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.614">setResult</a>(byte[]&nbsp;result)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.619">setResult</a>(byte[]&nbsp;result)</pre>
 <div class="block">The procedure may leave a "result" on completion.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1639,7 +1644,7 @@ protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isRunnable</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.630">isRunnable</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.635">isRunnable</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true if the procedure is in a RUNNABLE state.</dd>
@@ -1652,7 +1657,7 @@ protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isInitializing</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.634">isInitializing</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.639">isInitializing</a>()</pre>
 </li>
 </ul>
 <a name="isFailed--">
@@ -1661,7 +1666,7 @@ protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isFailed</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.641">isFailed</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.646">isFailed</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true if the procedure has failed. It may or may not have rolled back.</dd>
@@ -1674,7 +1679,7 @@ protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isSuccess</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.648">isSuccess</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.653">isSuccess</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true if the procedure is finished successfully.</dd>
@@ -1687,7 +1692,7 @@ protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isFinished</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.656">isFinished</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.661">isFinished</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true if the procedure is finished. The Procedure may be completed successfully or
@@ -1701,7 +1706,7 @@ protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isWaiting</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.663">isWaiting</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.668">isWaiting</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true if the procedure is waiting for a child to finish or for an external event.</dd>
@@ -1715,7 +1720,7 @@ protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>setState</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.676">setState</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureState&nbsp;state)</pre>
+protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.681">setState</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureState&nbsp;state)</pre>
 </li>
 </ul>
 <a name="getState--">
@@ -1725,7 +1730,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>getState</h4>
 <pre>@InterfaceAudience.Private
-public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureState&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.682">getState</a>()</pre>
+public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureState&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.687">getState</a>()</pre>
 </li>
 </ul>
 <a name="setFailure-java.lang.String-java.lang.Throwable-">
@@ -1734,7 +1739,7 @@ public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.Pr
 <ul class="blockList">
 <li class="blockList">
 <h4>setFailure</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.686">setFailure</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;source,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.691">setFailure</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;source,
                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;cause)</pre>
 </li>
 </ul>
@@ -1744,7 +1749,7 @@ public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.Pr
 <ul class="blockList">
 <li class="blockList">
 <h4>setFailure</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.690">setFailure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureException.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureException</a>&nbsp;exception)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.695">setFailure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureException.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureException</a>&nbsp;exception)</pre>
 </li>
 </ul>
 <a name="setAbortFailure-java.lang.String-java.lang.String-">
@@ -1753,7 +1758,7 @@ public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.Pr
 <ul class="blockList">
 <li class="blockList">
 <h4>setAbortFailure</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.697">setAbortFailure</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;source,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.702">setAbortFailure</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;source,
                                <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg)</pre>
 </li>
 </ul>
@@ -1765,7 +1770,7 @@ public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.Pr
 <ul class="blockList">
 <li class="blockList">
 <h4>setTimeoutFailure</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.706">setTimeoutFailure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.711">setTimeoutFailure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
 <div class="block">Called by the ProcedureExecutor when the timeout set by setTimeout() is expired.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1780,7 +1785,7 @@ public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.Pr
 <ul class="blockList">
 <li class="blockList">
 <h4>hasException</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.716">hasException</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.721">hasException</a>()</pre>
 </li>
 </ul>
 <a name="getException--">
@@ -1789,7 +1794,7 @@ public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.Pr
 <ul class="blockList">
 <li class="blockList">
 <h4>getException</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureException.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureException</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.720">getException</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureException.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureException</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.725">getException</a>()</pre>
 </li>
 </ul>
 <a name="setChildrenLatch-int-">
@@ -1799,7 +1804,7 @@ public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.Pr
 <li class="blockList">
 <h4>setChildrenLatch</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.728">setChildrenLatch</a>(int&nbsp;numChildren)</pre>
+protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.733">setChildrenLatch</a>(int&nbsp;numChildren)</pre>
 <div class="block">Called by the ProcedureExecutor on procedure-load to restore the latch state</div>
 </li>
 </ul>
@@ -1810,7 +1815,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>incChildrenLatch</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.740">incChildrenLatch</a>()</pre>
+protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.745">incChildrenLatch</a>()</pre>
 <div class="block">Called by the ProcedureExecutor on procedure-load to restore the latch state</div>
 </li>
 </ul>
@@ -1821,7 +1826,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>childrenCountDown</h4>
 <pre>@InterfaceAudience.Private
-private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.752">childrenCountDown</a>()</pre>
+private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.757">childrenCountDown</a>()</pre>
 <div class="block">Called by the ProcedureExecutor to notify that one of the sub-procedures has completed.</div>
 </li>
 </ul>
@@ -1831,7 +1836,7 @@ private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>tryRunnable</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.766">tryRunnable</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.771">tryRunnable</a>()</pre>
 <div class="block">Try to set this procedure into RUNNABLE state.
  Succeeds if all subprocedures/children are done.</div>
 <dl>
@@ -1847,7 +1852,7 @@ private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <li class="blockList">
 <h4>hasChildren</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.774">hasChildren</a>()</pre>
+protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.779">hasChildren</a>()</pre>
 </li>
 </ul>
 <a name="getChildrenLatch--">
@@ -1857,7 +1862,7 @@ protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <li class="blockList">
 <h4>getChildrenLatch</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.779">getChildrenLatch</a>()</pre>
+protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.784">getChildrenLatch</a>()</pre>
 </li>
 </ul>
 <a name="addStackIndex-int-">
@@ -1867,7 +1872,7 @@ protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase
 <li class="blockList">
 <h4>addStackIndex</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.788">addStackIndex</a>(int&nbsp;index)</pre>
+protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.793">addStackIndex</a>(int&nbsp;index)</pre>
 <div class="block">Called by the RootProcedureState on procedure execution.
  Each procedure store its stack-index positions.</div>
 </li>
@@ -1879,7 +1884,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>removeStackIndex</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.799">removeStackIndex</a>()</pre>
+protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.804">removeStackIndex</a>()</pre>
 </li>
 </ul>
 <a name="setStackIndexes-java.util.List-">
@@ -1889,7 +1894,7 @@ protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <li class="blockList">
 <h4>setStackIndexes</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.814">setStackIndexes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;stackIndexes)</pre>
+protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.819">setStackIndexes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;stackIndexes)</pre>
 <div class="block">Called on store load to initialize the Procedure internals after
  the creation/deserialization.</div>
 </li>
@@ -1901,7 +1906,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>wasExecuted</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.822">wasExecuted</a>()</pre>
+protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.827">wasExecuted</a>()</pre>
 </li>
 </ul>
 <a name="getStackIndexes--">
@@ -1911,7 +1916,7 @@ protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <li class="blockList">
 <h4>getStackIndexes</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;int[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.827">getStackIndexes</a>()</pre>
+protected&nbsp;int[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.832">getStackIndexes</a>()</pre>
 </li>
 </ul>
 <a name="doExecute-java.lang.Object-">
@@ -1923,7 +1928,7 @@ protected&nbsp;int[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hba
 <li class="blockList">
 <h4>doExecute</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;<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/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&gt;[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.841">doExecute</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)
+protected&nbsp;<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/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&gt;[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.846">doExecute</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)
                                                                   throws <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</a>,
                                                                          <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a>,
                                                                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -1946,7 +1951,7 @@ protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Proced
 <li class="blockList">
 <h4>doRollback</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.855">doRollback</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)
+protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.860">doRollback</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Internal method called by the ProcedureExecutor that starts the user-level code rollback().</div>
@@ -1966,7 +1971,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>doAcquireLock</h4>
 <pre>@InterfaceAudience.Private
-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/procedure2/Procedure.html#line.869">doAcquireLock</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</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/procedure2/Procedure.html#line.874">doAcquireLock</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
 <div class="block">Internal method called by the ProcedureExecutor that starts the user-level code acquireLock().</div>
 </li>
 </ul>
@@ -1979,7 +1984,7 @@ protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Proced
 <li class="blockList">
 <h4>doReleaseLock</h4>
 <pre>@InterfaceAudience.Private
-protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.877">doReleaseLock</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
+protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.882">doReleaseLock</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&nbsp;env)</pre>
 <div class="block">Internal method called by the ProcedureExecutor that starts the user-level code releaseLock().</div>
 </li>
 </ul>
@@ -1989,7 +1994,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.882">compareTo</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/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&gt;&nbsp;other)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.887">compareTo</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/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&gt;&nbsp;other)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true#compareTo-T-" title="class or interface in java.lang">compareTo</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="type parameter in Procedure">TEnvironment</a>&gt;&gt;</code></dd>
@@ -2002,7 +2007,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getProcIdHashCode</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.894">getProcIdHashCode</a>(long&nbsp;procId)</pre>
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.899">getProcIdHashCode</a>(long&nbsp;procId)</pre>
 <div class="block">Get an hashcode for the specified Procedure ID</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -2017,7 +2022,7 @@ protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>getRootProcedureId</h4>
 <pre>@InterfaceAudience.Private
-protected static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.908">getRootProcedureId</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&gt;&nbsp;procedures,
+protected static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.913">getRootProcedureId</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&gt;&nbsp;procedures,
                                                                     <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;proc)</pre>
 </li>
 </ul>
@@ -2027,7 +2032,7 @@ protected static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/la
 <ul class="blockListLast">
 <li class="blockList">
 <h4>haveSameParent</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.922">haveSameParent</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;a,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/Procedure.html#line.927">haveSameParent</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;a,
                                      <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;b)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/procedure2/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/package-summary.html b/devapidocs/org/apache/hadoop/hbase/procedure2/package-summary.html
index e0245d9..e7ac6dc 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-summary.html
@@ -151,7 +151,9 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/procedure2/DelayedProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">DelayedProcedure</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Vessel that carries a Procedure and a timeout.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.html" title="class in org.apache.hadoop.hbase.procedure2">InlineChore</a></td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/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 5942b5c..08f786d 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -212,10 +212,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/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/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/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/procedure2/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/package-use.html b/devapidocs/org/apache/hadoop/hbase/procedure2/package-use.html
index 775f6eb..d4f23ce 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-use.html
@@ -482,7 +482,9 @@
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/procedure2/class-use/BadProcedureException.html#org.apache.hadoop.hbase.procedure2">BadProcedureException</a>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/procedure2/class-use/DelayedProcedure.html#org.apache.hadoop.hbase.procedure2">DelayedProcedure</a>&nbsp;</td>
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/procedure2/class-use/DelayedProcedure.html#org.apache.hadoop.hbase.procedure2">DelayedProcedure</a>
+<div class="block">Vessel that carries a Procedure and a timeout.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/procedure2/class-use/InlineChore.html#org.apache.hadoop.hbase.procedure2">InlineChore</a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedContainer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedContainer.html b/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedContainer.html
index a3d710d..dbdd840 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedContainer.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/DelayedUtil.DelayedContainer.html
@@ -108,7 +108,9 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>(package private) class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/DelayedProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">DelayedProcedure</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/DelayedProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">DelayedProcedure</a></span></code>
+<div class="block">Vessel that carries a Procedure and a timeout.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected class&nbsp;</code></td>


[10/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html
index 19e4a1b..fa83152 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html
@@ -36,400 +36,469 @@
 <span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.master.procedure.TableProcedureInterface;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteOperation;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.slf4j.Logger;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.slf4j.LoggerFactory;<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteOperation;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.39"></a>
-<span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;<a name="line.42"></a>
+<span class="sourceLineNo">040</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.slf4j.Logger;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.slf4j.LoggerFactory;<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> * Base class for the Assign and Unassign Procedure.<a name="line.45"></a>
-<span class="sourceLineNo">046</span> *<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * Locking:<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * Takes exclusive lock on the region being assigned/unassigned. Thus, there can only be one<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * RegionTransitionProcedure per region running at a time (see MasterProcedureScheduler).<a name="line.49"></a>
-<span class="sourceLineNo">050</span> *<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * &lt;p&gt;This procedure is asynchronous and responds to external events.<a name="line.51"></a>
-<span class="sourceLineNo">052</span> * The AssignmentManager will notify this procedure when the RS completes<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * the operation and reports the transitioned state<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * (see the Assign and Unassign class for more detail).&lt;/p&gt;<a name="line.54"></a>
+<span class="sourceLineNo">044</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>/**<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * Base class for the Assign and Unassign Procedure.<a name="line.50"></a>
+<span class="sourceLineNo">051</span> *<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * Locking:<a name="line.52"></a>
+<span class="sourceLineNo">053</span> * Takes exclusive lock on the region being assigned/unassigned. Thus, there can only be one<a name="line.53"></a>
+<span class="sourceLineNo">054</span> * RegionTransitionProcedure per region running at a time (see MasterProcedureScheduler).<a name="line.54"></a>
 <span class="sourceLineNo">055</span> *<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * &lt;p&gt;Procedures move from the REGION_TRANSITION_QUEUE state when they are<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * first submitted, to the REGION_TRANSITION_DISPATCH state when the request<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * to remote server is sent and the Procedure is suspended waiting on external<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * event to be woken again. Once the external event is triggered, Procedure<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * moves to the REGION_TRANSITION_FINISH state.&lt;/p&gt;<a name="line.60"></a>
-<span class="sourceLineNo">061</span> *<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * &lt;p&gt;NOTE: {@link AssignProcedure} and {@link UnassignProcedure} should not be thought of<a name="line.62"></a>
-<span class="sourceLineNo">063</span> * as being asymmetric, at least currently.<a name="line.63"></a>
-<span class="sourceLineNo">064</span> * &lt;ul&gt;<a name="line.64"></a>
-<span class="sourceLineNo">065</span> * &lt;li&gt;{@link AssignProcedure} moves through all the above described states and implements methods<a name="line.65"></a>
-<span class="sourceLineNo">066</span> * associated with each while {@link UnassignProcedure} starts at state<a name="line.66"></a>
-<span class="sourceLineNo">067</span> * REGION_TRANSITION_DISPATCH and state REGION_TRANSITION_QUEUE is not supported.&lt;/li&gt;<a name="line.67"></a>
-<span class="sourceLineNo">068</span> *<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * &lt;li&gt;When any step in {@link AssignProcedure} fails, failure handler<a name="line.69"></a>
-<span class="sourceLineNo">070</span> * AssignProcedure#handleFailure(MasterProcedureEnv, RegionStateNode) re-attempts the<a name="line.70"></a>
-<span class="sourceLineNo">071</span> * assignment by setting the procedure state to REGION_TRANSITION_QUEUE and forces<a name="line.71"></a>
-<span class="sourceLineNo">072</span> * assignment to a different target server by setting {@link AssignProcedure#forceNewPlan}. When<a name="line.72"></a>
-<span class="sourceLineNo">073</span> * the number of attempts reaches threshold configuration 'hbase.assignment.maximum.attempts',<a name="line.73"></a>
-<span class="sourceLineNo">074</span> * the procedure is aborted. For {@link UnassignProcedure}, similar re-attempts are<a name="line.74"></a>
-<span class="sourceLineNo">075</span> * intentionally not implemented. It is a 'one shot' procedure. See its class doc for how it<a name="line.75"></a>
-<span class="sourceLineNo">076</span> * handles failure.<a name="line.76"></a>
-<span class="sourceLineNo">077</span> * &lt;/li&gt;<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * &lt;/ul&gt;<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * &lt;/p&gt;<a name="line.79"></a>
-<span class="sourceLineNo">080</span> *<a name="line.80"></a>
-<span class="sourceLineNo">081</span> * &lt;p&gt;TODO: Considering it is a priority doing all we can to get make a region available as soon as possible,<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * re-attempting with any target makes sense if specified target fails in case of<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * {@link AssignProcedure}. For {@link UnassignProcedure}, our concern is preventing data loss<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * on failed unassign. See class doc for explanation.<a name="line.84"></a>
-<span class="sourceLineNo">085</span> */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>@InterfaceAudience.Private<a name="line.86"></a>
-<span class="sourceLineNo">087</span>public abstract class RegionTransitionProcedure<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    extends Procedure&lt;MasterProcedureEnv&gt;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    implements TableProcedureInterface,<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      RemoteProcedure&lt;MasterProcedureEnv, ServerName&gt; {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private static final Logger LOG = LoggerFactory.getLogger(RegionTransitionProcedure.class);<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  protected final AtomicBoolean aborted = new AtomicBoolean(false);<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private RegionTransitionState transitionState = RegionTransitionState.REGION_TRANSITION_QUEUE;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  private RegionInfo regionInfo;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private volatile boolean lock = false;<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>  // Required by the Procedure framework to create the procedure on replay<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  public RegionTransitionProcedure() {}<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>  public RegionTransitionProcedure(final RegionInfo regionInfo) {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    this.regionInfo = regionInfo;<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>  @VisibleForTesting<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  public RegionInfo getRegionInfo() {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    return regionInfo;<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>  protected void setRegionInfo(final RegionInfo regionInfo) {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    // Setter is for deserialization.<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    this.regionInfo = regionInfo;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  }<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>  @Override<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public TableName getTableName() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    RegionInfo hri = getRegionInfo();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    return hri != null? hri.getTable(): null;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public boolean isMeta() {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    return TableName.isMetaTableName(getTableName());<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
+<span class="sourceLineNo">056</span> * &lt;p&gt;This procedure is asynchronous and responds to external events.<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * The AssignmentManager will notify this procedure when the RS completes<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * the operation and reports the transitioned state<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * (see the Assign and Unassign class for more detail).&lt;/p&gt;<a name="line.59"></a>
+<span class="sourceLineNo">060</span> *<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * &lt;p&gt;Procedures move from the REGION_TRANSITION_QUEUE state when they are<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * first submitted, to the REGION_TRANSITION_DISPATCH state when the request<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * to remote server is sent and the Procedure is suspended waiting on external<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * event to be woken again. Once the external event is triggered, Procedure<a name="line.64"></a>
+<span class="sourceLineNo">065</span> * moves to the REGION_TRANSITION_FINISH state.&lt;/p&gt;<a name="line.65"></a>
+<span class="sourceLineNo">066</span> *<a name="line.66"></a>
+<span class="sourceLineNo">067</span> * &lt;p&gt;NOTE: {@link AssignProcedure} and {@link UnassignProcedure} should not be thought of<a name="line.67"></a>
+<span class="sourceLineNo">068</span> * as being asymmetric, at least currently.<a name="line.68"></a>
+<span class="sourceLineNo">069</span> * &lt;ul&gt;<a name="line.69"></a>
+<span class="sourceLineNo">070</span> * &lt;li&gt;{@link AssignProcedure} moves through all the above described states and implements methods<a name="line.70"></a>
+<span class="sourceLineNo">071</span> * associated with each while {@link UnassignProcedure} starts at state<a name="line.71"></a>
+<span class="sourceLineNo">072</span> * REGION_TRANSITION_DISPATCH and state REGION_TRANSITION_QUEUE is not supported.&lt;/li&gt;<a name="line.72"></a>
+<span class="sourceLineNo">073</span> *<a name="line.73"></a>
+<span class="sourceLineNo">074</span> * &lt;li&gt;When any step in {@link AssignProcedure} fails, failure handler<a name="line.74"></a>
+<span class="sourceLineNo">075</span> * AssignProcedure#handleFailure(MasterProcedureEnv, RegionStateNode) re-attempts the<a name="line.75"></a>
+<span class="sourceLineNo">076</span> * assignment by setting the procedure state to REGION_TRANSITION_QUEUE and forces<a name="line.76"></a>
+<span class="sourceLineNo">077</span> * assignment to a different target server by setting {@link AssignProcedure#forceNewPlan}. When<a name="line.77"></a>
+<span class="sourceLineNo">078</span> * the number of attempts reaches threshold configuration 'hbase.assignment.maximum.attempts',<a name="line.78"></a>
+<span class="sourceLineNo">079</span> * the procedure is aborted. For {@link UnassignProcedure}, similar re-attempts are<a name="line.79"></a>
+<span class="sourceLineNo">080</span> * intentionally not implemented. It is a 'one shot' procedure. See its class doc for how it<a name="line.80"></a>
+<span class="sourceLineNo">081</span> * handles failure.<a name="line.81"></a>
+<span class="sourceLineNo">082</span> * &lt;/li&gt;<a name="line.82"></a>
+<span class="sourceLineNo">083</span> * &lt;li&gt;If we find a region in an 'unexpected' state, we'll complain and retry with backoff forever.<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * The 'unexpected' state needs to be fixed either by another running Procedure or by operator<a name="line.84"></a>
+<span class="sourceLineNo">085</span> * intervention (Regions in 'unexpected' state indicates bug or unexpected transition type).<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * For this to work, subclasses need to persist the 'attempt' counter kept in this class when<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * they do serializeStateData and restore it inside their deserializeStateData, just as they do<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * for {@link #regionInfo}.<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * &lt;/li&gt;<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * &lt;/ul&gt;<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * &lt;/p&gt;<a name="line.91"></a>
+<span class="sourceLineNo">092</span> *<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * &lt;p&gt;TODO: Considering it is a priority doing all we can to get make a region available as soon as<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * possible, re-attempting with any target makes sense if specified target fails in case of<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * {@link AssignProcedure}. For {@link UnassignProcedure}, our concern is preventing data loss<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * on failed unassign. See class doc for explanation.<a name="line.96"></a>
+<span class="sourceLineNo">097</span> */<a name="line.97"></a>
+<span class="sourceLineNo">098</span>@InterfaceAudience.Private<a name="line.98"></a>
+<span class="sourceLineNo">099</span>public abstract class RegionTransitionProcedure<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    extends Procedure&lt;MasterProcedureEnv&gt;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    implements TableProcedureInterface,<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      RemoteProcedure&lt;MasterProcedureEnv, ServerName&gt; {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  private static final Logger LOG = LoggerFactory.getLogger(RegionTransitionProcedure.class);<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>  protected final AtomicBoolean aborted = new AtomicBoolean(false);<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  private RegionTransitionState transitionState = RegionTransitionState.REGION_TRANSITION_QUEUE;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * This data member must be persisted. Expectation is that it is done by subclasses in their<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * {@link #serializeStateData(ProcedureStateSerializer)} call, restoring {@link #regionInfo}<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * in their {@link #deserializeStateData(ProcedureStateSerializer)} method.<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private RegionInfo regionInfo;<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>   * Like {@link #regionInfo}, the expectation is that subclasses persist the value of this<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * data member. It is used doing backoff when Procedure gets stuck.<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   */<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  private int attempt;<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>  private volatile boolean lock = false;<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  // Required by the Procedure framework to create the procedure on replay<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  public RegionTransitionProcedure() {}<a name="line.124"></a>
 <span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  @Override<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public void toStringClassDetails(final StringBuilder sb) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    sb.append(getClass().getSimpleName());<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    sb.append(" table=");<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    sb.append(getTableName());<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    sb.append(", region=");<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    sb.append(getRegionInfo() == null? null: getRegionInfo().getEncodedName());<a name="line.132"></a>
+<span class="sourceLineNo">126</span>  public RegionTransitionProcedure(final RegionInfo regionInfo) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    this.regionInfo = regionInfo;<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>  @VisibleForTesting<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  public RegionInfo getRegionInfo() {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    return regionInfo;<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>  public RegionStateNode getRegionState(final MasterProcedureEnv env) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    return env.getAssignmentManager().getRegionStates().getOrCreateRegionStateNode(getRegionInfo());<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>  void setTransitionState(final RegionTransitionState state) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    this.transitionState = state;<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>  RegionTransitionState getTransitionState() {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    return transitionState;<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>  protected abstract boolean startTransition(MasterProcedureEnv env, RegionStateNode regionNode)<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    throws IOException, ProcedureSuspendedException;<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>   * Called when the Procedure is in the REGION_TRANSITION_DISPATCH state.<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * In here we do the RPC call to OPEN/CLOSE the region. The suspending of<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   * the thread so it sleeps until it gets update that the OPEN/CLOSE has<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * succeeded is complicated. Read the implementations to learn more.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   */<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  protected abstract boolean updateTransition(MasterProcedureEnv env, RegionStateNode regionNode)<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    throws IOException, ProcedureSuspendedException;<a name="line.157"></a>
+<span class="sourceLineNo">135</span>  /**<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   * This setter is for subclasses to call in their<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * {@link #deserializeStateData(ProcedureStateSerializer)} method. Expectation is that<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   * subclasses will persist `regioninfo` in their<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * {@link #serializeStateData(ProcedureStateSerializer)} method and then restore `regionInfo` on<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * deserialization by calling.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   */<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  protected void setRegionInfo(final RegionInfo regionInfo) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    this.regionInfo = regionInfo;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  /**<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * This setter is for subclasses to call in their<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * {@link #deserializeStateData(ProcedureStateSerializer)} method.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * @see #setRegionInfo(RegionInfo)<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  protected void setAttempt(int attempt) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    this.attempt = attempt;<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>  protected int getAttempt() {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    return this.attempt;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  }<a name="line.157"></a>
 <span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  protected abstract void finishTransition(MasterProcedureEnv env, RegionStateNode regionNode)<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    throws IOException, ProcedureSuspendedException;<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  protected abstract void reportTransition(MasterProcedureEnv env,<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      RegionStateNode regionNode, TransitionCode code, long seqId) throws UnexpectedStateException;<a name="line.163"></a>
+<span class="sourceLineNo">159</span>  @Override<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  public TableName getTableName() {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    RegionInfo hri = getRegionInfo();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    return hri != null? hri.getTable(): 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 abstract RemoteOperation remoteCallBuild(MasterProcedureEnv env, ServerName serverName);<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>   * @return True if processing of fail is complete; the procedure will be woken from its suspend<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * and we'll go back to running through procedure steps:<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * otherwise if false we leave the procedure in suspended state.<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   */<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  protected abstract boolean remoteCallFailed(MasterProcedureEnv env,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      RegionStateNode regionNode, IOException exception);<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>  public void remoteCallFailed(final MasterProcedureEnv env,<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      final ServerName serverName, final IOException exception) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    final RegionStateNode regionNode = getRegionState(env);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    String msg = exception.getMessage() == null? exception.getClass().getSimpleName():<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      exception.getMessage();<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    LOG.warn("Remote call failed " + this + "; " + regionNode.toShortString() +<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      "; exception=" + msg);<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    if (remoteCallFailed(env, regionNode, exception)) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      // NOTE: This call to wakeEvent puts this Procedure back on the scheduler.<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      // Thereafter, another Worker can be in here so DO NOT MESS WITH STATE beyond<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      // this method. Just get out of this current processing quickly.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      regionNode.getProcedureEvent().wake(env.getProcedureScheduler());<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    // else leave the procedure in suspended state; it is waiting on another call to this callback<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
+<span class="sourceLineNo">165</span>  public boolean isMeta() {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    return TableName.isMetaTableName(getTableName());<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  }<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>  @Override<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  public void toStringClassDetails(final StringBuilder sb) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    sb.append(getClass().getSimpleName());<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    sb.append(" table=");<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    sb.append(getTableName());<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    sb.append(", region=");<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    sb.append(getRegionInfo() == null? null: getRegionInfo().getEncodedName());<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>  public RegionStateNode getRegionState(final MasterProcedureEnv env) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    return env.getAssignmentManager().getRegionStates().getOrCreateRegionStateNode(getRegionInfo());<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  }<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>  void setTransitionState(final RegionTransitionState state) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    this.transitionState = 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>  RegionTransitionState getTransitionState() {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    return transitionState;<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>  protected abstract boolean startTransition(MasterProcedureEnv env, RegionStateNode regionNode)<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    throws IOException, ProcedureSuspendedException;<a name="line.191"></a>
 <span class="sourceLineNo">192</span><a name="line.192"></a>
 <span class="sourceLineNo">193</span>  /**<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * Be careful! At the end of this method, the procedure has either succeeded<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * and this procedure has been set into a suspended state OR, we failed and<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * this procedure has been put back on the scheduler ready for another worker<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * to pick it up. In both cases, we need to exit the current Worker processing<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   * immediately!<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   * @return True if we successfully dispatched the call and false if we failed;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * if failed, we need to roll back any setup done for the dispatch.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   */<a name="line.201"></a>
-<span class="sourceLineNo">202</span>  protected boolean addToRemoteDispatcher(final MasterProcedureEnv env,<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      final ServerName targetServer) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    assert targetServer == null || targetServer.equals(getRegionState(env).getRegionLocation()):<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      "targetServer=" + targetServer + " getRegionLocation=" +<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        getRegionState(env).getRegionLocation(); // TODO<a name="line.206"></a>
+<span class="sourceLineNo">194</span>   * Called when the Procedure is in the REGION_TRANSITION_DISPATCH state.<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * In here we do the RPC call to OPEN/CLOSE the region. The suspending of<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * the thread so it sleeps until it gets update that the OPEN/CLOSE has<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * succeeded is complicated. Read the implementations to learn more.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  protected abstract boolean updateTransition(MasterProcedureEnv env, RegionStateNode regionNode)<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    throws IOException, ProcedureSuspendedException;<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>  protected abstract void finishTransition(MasterProcedureEnv env, RegionStateNode regionNode)<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    throws IOException, ProcedureSuspendedException;<a name="line.203"></a>
+<span class="sourceLineNo">204</span><a name="line.204"></a>
+<span class="sourceLineNo">205</span>  protected abstract void reportTransition(MasterProcedureEnv env,<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      RegionStateNode regionNode, TransitionCode code, long seqId) throws UnexpectedStateException;<a name="line.206"></a>
 <span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>    LOG.info("Dispatch " + this + "; " + getRegionState(env).toShortString());<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span>    // Put this procedure into suspended mode to wait on report of state change<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    // from remote regionserver. Means Procedure associated ProcedureEvent is marked not 'ready'.<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    getRegionState(env).getProcedureEvent().suspend();<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>    // Tricky because the below call to addOperationToNode can fail. If it fails, we need to<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    // backtrack on stuff like the 'suspend' done above -- tricky as the 'wake' requests us -- and<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    // ditto up in the caller; it needs to undo state changes. Inside in remoteCallFailed, it does<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    // wake to undo the above suspend.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    if (!env.getRemoteDispatcher().addOperationToNode(targetServer, this)) {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      remoteCallFailed(env, targetServer,<a name="line.219"></a>
-<span class="sourceLineNo">220</span>          new FailedRemoteDispatchException(this + " to " + targetServer));<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>    return true;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>  protected void reportTransition(final MasterProcedureEnv env, final ServerName serverName,<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      final TransitionCode code, final long seqId) throws UnexpectedStateException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    final RegionStateNode regionNode = getRegionState(env);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    if (LOG.isDebugEnabled()) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      LOG.debug("Received report " + code + " seqId=" + seqId + ", " +<a name="line.230"></a>
-<span class="sourceLineNo">231</span>            this + "; " + regionNode.toShortString());<a name="line.231"></a>
+<span class="sourceLineNo">208</span>  @Override<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  public abstract RemoteOperation remoteCallBuild(MasterProcedureEnv env, ServerName serverName);<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>   * @return True if processing of fail is complete; the procedure will be woken from its suspend<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   * and we'll go back to running through procedure steps:<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * otherwise if false we leave the procedure in suspended state.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   */<a name="line.215"></a>
+<span class="sourceLineNo">216</span>  protected abstract boolean remoteCallFailed(MasterProcedureEnv env,<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      RegionStateNode regionNode, IOException exception);<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>  @Override<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public void remoteCallFailed(final MasterProcedureEnv env,<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      final ServerName serverName, final IOException exception) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    final RegionStateNode regionNode = getRegionState(env);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    String msg = exception.getMessage() == null? exception.getClass().getSimpleName():<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      exception.getMessage();<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    LOG.warn("Remote call failed " + this + "; " + regionNode.toShortString() +<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      "; exception=" + msg);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    if (remoteCallFailed(env, regionNode, exception)) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      // NOTE: This call to wakeEvent puts this Procedure back on the scheduler.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      // Thereafter, another Worker can be in here so DO NOT MESS WITH STATE beyond<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      // this method. Just get out of this current processing quickly.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      regionNode.getProcedureEvent().wake(env.getProcedureScheduler());<a name="line.231"></a>
 <span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    if (!serverName.equals(regionNode.getRegionLocation())) {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      if (isMeta() &amp;&amp; regionNode.getRegionLocation() == null) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        regionNode.setRegionLocation(serverName);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      } else {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        throw new UnexpectedStateException(String.format(<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          "Unexpected state=%s from server=%s; expected server=%s; %s; %s",<a name="line.238"></a>
-<span class="sourceLineNo">239</span>          code, serverName, regionNode.getRegionLocation(),<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          this, regionNode.toShortString()));<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      }<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>    reportTransition(env, regionNode, code, seqId);<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
-<span class="sourceLineNo">246</span>    // NOTE: This call adds this procedure back on the scheduler.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    // This makes it so this procedure can run again. Another worker will take<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    // processing to the next stage. At an extreme, the other worker may run in<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    // parallel so DO  NOT CHANGE any state hereafter! This should be last thing<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    // done in this processing step.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    regionNode.getProcedureEvent().wake(env.getProcedureScheduler());<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>  protected boolean isServerOnline(final MasterProcedureEnv env, final RegionStateNode regionNode) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    return isServerOnline(env, regionNode.getRegionLocation());<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>  protected boolean isServerOnline(final MasterProcedureEnv env, final ServerName serverName) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    return env.getMasterServices().getServerManager().isServerOnline(serverName);<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>  @Override<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  protected void toStringState(StringBuilder builder) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    super.toStringState(builder);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    RegionTransitionState ts = this.transitionState;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    if (!isFinished() &amp;&amp; ts != null) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      builder.append(":").append(ts);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    }<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  }<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>  @Override<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  protected Procedure[] execute(final MasterProcedureEnv env) throws ProcedureSuspendedException {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    final AssignmentManager am = env.getAssignmentManager();<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    final RegionStateNode regionNode = getRegionState(env);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    if (!am.addRegionInTransition(regionNode, this)) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      String msg = String.format(<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        "There is already another procedure running on this region this=%s owner=%s",<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        this, regionNode.getProcedure());<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      LOG.warn(msg + " " + this + "; " + regionNode.toShortString());<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      setAbortFailure(getClass().getSimpleName(), msg);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      return null;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    try {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      boolean retry;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      do {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        retry = false;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        switch (transitionState) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>          case REGION_TRANSITION_QUEUE:<a name="line.288"></a>
-<span class="sourceLineNo">289</span>            // 1. push into the AM queue for balancer policy<a name="line.289"></a>
-<span class="sourceLineNo">290</span>            if (!startTransition(env, regionNode)) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>              // The operation figured it is done or it aborted; check getException()<a name="line.291"></a>
-<span class="sourceLineNo">292</span>              am.removeRegionInTransition(getRegionState(env), this);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>              return null;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>            }<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            transitionState = RegionTransitionState.REGION_TRANSITION_DISPATCH;<a name="line.295"></a>
-<span class="sourceLineNo">296</span>            if (regionNode.getProcedureEvent().suspendIfNotReady(this)) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              // Why this suspend? Because we want to ensure Store happens before proceed?<a name="line.297"></a>
-<span class="sourceLineNo">298</span>              throw new ProcedureSuspendedException();<a name="line.298"></a>
-<span class="sourceLineNo">299</span>            }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>            break;<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>          case REGION_TRANSITION_DISPATCH:<a name="line.302"></a>
-<span class="sourceLineNo">303</span>            // 2. send the request to the target server<a name="line.303"></a>
-<span class="sourceLineNo">304</span>            if (!updateTransition(env, regionNode)) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>              // The operation figured it is done or it aborted; check getException()<a name="line.305"></a>
-<span class="sourceLineNo">306</span>              am.removeRegionInTransition(regionNode, this);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>              return null;<a name="line.307"></a>
-<span class="sourceLineNo">308</span>            }<a name="line.308"></a>
-<span class="sourceLineNo">309</span>            if (transitionState != RegionTransitionState.REGION_TRANSITION_DISPATCH) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>              retry = true;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>              break;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>            }<a name="line.312"></a>
-<span class="sourceLineNo">313</span>            if (regionNode.getProcedureEvent().suspendIfNotReady(this)) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>              throw new ProcedureSuspendedException();<a name="line.314"></a>
-<span class="sourceLineNo">315</span>            }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>            break;<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>          case REGION_TRANSITION_FINISH:<a name="line.318"></a>
-<span class="sourceLineNo">319</span>            // 3. wait assignment response. completion/failure<a name="line.319"></a>
-<span class="sourceLineNo">320</span>            LOG.debug("Finishing {}; {}", this, regionNode.toShortString());<a name="line.320"></a>
-<span class="sourceLineNo">321</span>            finishTransition(env, regionNode);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>            am.removeRegionInTransition(regionNode, this);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>            return null;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>        }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      } while (retry);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    } catch (IOException e) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      LOG.warn("Retryable error trying to transition: " +<a name="line.327"></a>
-<span class="sourceLineNo">328</span>          this + "; " + regionNode.toShortString(), e);<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>    return new Procedure[] {this};<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  }<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  @Override<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  protected void rollback(final MasterProcedureEnv env) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    if (isRollbackSupported(transitionState)) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      // Nothing done up to this point. abort safely.<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      // This should happen when something like disableTable() is triggered.<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      env.getAssignmentManager().removeRegionInTransition(getRegionState(env), this);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      return;<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>    // There is no rollback for assignment unless we cancel the operation by<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    // dropping/disabling the table.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    throw new UnsupportedOperationException("Unhandled state " + transitionState +<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        "; there is no rollback for assignment unless we cancel the operation by " +<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        "dropping/disabling the table");<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>  protected abstract boolean isRollbackSupported(final RegionTransitionState state);<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>  protected boolean abort(final MasterProcedureEnv env) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    if (isRollbackSupported(transitionState)) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      aborted.set(true);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      return true;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    return false;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
+<span class="sourceLineNo">233</span>    // else leave the procedure in suspended state; it is waiting on another call to this callback<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>   * Be careful! At the end of this method, the procedure has either succeeded<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   * and this procedure has been set into a suspended state OR, we failed and<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * this procedure has been put back on the scheduler ready for another worker<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * to pick it up. In both cases, we need to exit the current Worker processing<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   * immediately!<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * @return True if we successfully dispatched the call and false if we failed;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * if failed, we need to roll back any setup done for the dispatch.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  protected boolean addToRemoteDispatcher(final MasterProcedureEnv env,<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      final ServerName targetServer) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    assert targetServer == null || targetServer.equals(getRegionState(env).getRegionLocation()):<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      "targetServer=" + targetServer + " getRegionLocation=" +<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        getRegionState(env).getRegionLocation(); // TODO<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>    LOG.info("Dispatch " + this + "; " + getRegionState(env).toShortString());<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>    // Put this procedure into suspended mode to wait on report of state change<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    // from remote regionserver. Means Procedure associated ProcedureEvent is marked not 'ready'.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    getRegionState(env).getProcedureEvent().suspend();<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    // Tricky because the below call to addOperationToNode can fail. If it fails, we need to<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    // backtrack on stuff like the 'suspend' done above -- tricky as the 'wake' requests us -- and<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    // ditto up in the caller; it needs to undo state changes. Inside in remoteCallFailed, it does<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    // wake to undo the above suspend.<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    if (!env.getRemoteDispatcher().addOperationToNode(targetServer, this)) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      remoteCallFailed(env, targetServer,<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          new FailedRemoteDispatchException(this + " to " + targetServer));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      return false;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    return true;<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>  protected void reportTransition(final MasterProcedureEnv env, final ServerName serverName,<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      final TransitionCode code, final long seqId) throws UnexpectedStateException {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    final RegionStateNode regionNode = getRegionState(env);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    if (LOG.isDebugEnabled()) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      LOG.debug("Received report " + code + " seqId=" + seqId + ", " +<a name="line.273"></a>
+<span class="sourceLineNo">274</span>            this + "; " + regionNode.toShortString());<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    if (!serverName.equals(regionNode.getRegionLocation())) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      if (isMeta() &amp;&amp; regionNode.getRegionLocation() == null) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        regionNode.setRegionLocation(serverName);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      } else {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        throw new UnexpectedStateException(String.format(<a name="line.280"></a>
+<span class="sourceLineNo">281</span>          "Unexpected state=%s from server=%s; expected server=%s; %s; %s",<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          code, serverName, regionNode.getRegionLocation(),<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          this, regionNode.toShortString()));<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">287</span>    reportTransition(env, regionNode, code, seqId);<a name="line.287"></a>
+<span class="sourceLineNo">288</span><a name="line.288"></a>
+<span class="sourceLineNo">289</span>    // NOTE: This call adds this procedure back on the scheduler.<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    // This makes it so this procedure can run again. Another worker will take<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    // processing to the next stage. At an extreme, the other worker may run in<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    // parallel so DO  NOT CHANGE any state hereafter! This should be last thing<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    // done in this processing step.<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    regionNode.getProcedureEvent().wake(env.getProcedureScheduler());<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>  protected boolean isServerOnline(final MasterProcedureEnv env, final RegionStateNode regionNode) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    return isServerOnline(env, regionNode.getRegionLocation());<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>  protected boolean isServerOnline(final MasterProcedureEnv env, final ServerName serverName) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    return env.getMasterServices().getServerManager().isServerOnline(serverName);<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>  @Override<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  protected void toStringState(StringBuilder builder) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    super.toStringState(builder);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    RegionTransitionState ts = this.transitionState;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    if (!isFinished() &amp;&amp; ts != null) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      builder.append(":").append(ts);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  }<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  @Override<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  protected Procedure[] execute(final MasterProcedureEnv env) throws ProcedureSuspendedException {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    final AssignmentManager am = env.getAssignmentManager();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    final RegionStateNode regionNode = getRegionState(env);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    if (!am.addRegionInTransition(regionNode, this)) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      String msg = String.format(<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        "There is already another procedure running on this region this=%s owner=%s",<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        this, regionNode.getProcedure());<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      LOG.warn(msg + " " + this + "; " + regionNode.toShortString());<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      setAbortFailure(getClass().getSimpleName(), msg);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      return null;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    try {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      boolean retry;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      do {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        retry = false;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        switch (transitionState) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>          case REGION_TRANSITION_QUEUE:<a name="line.331"></a>
+<span class="sourceLineNo">332</span>            // 1. push into the AM queue for balancer policy<a name="line.332"></a>
+<span class="sourceLineNo">333</span>            if (!startTransition(env, regionNode)) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>              // The operation figured it is done or it aborted; check getException()<a name="line.334"></a>
+<span class="sourceLineNo">335</span>              am.removeRegionInTransition(getRegionState(env), this);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>              return null;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>            }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>            transitionState = RegionTransitionState.REGION_TRANSITION_DISPATCH;<a name="line.338"></a>
+<span class="sourceLineNo">339</span>            if (regionNode.getProcedureEvent().suspendIfNotReady(this)) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>              // Why this suspend? Because we want to ensure Store happens before proceed?<a name="line.340"></a>
+<span class="sourceLineNo">341</span>              throw new ProcedureSuspendedException();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>            }<a name="line.342"></a>
+<span class="sourceLineNo">343</span>            break;<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>          case REGION_TRANSITION_DISPATCH:<a name="line.345"></a>
+<span class="sourceLineNo">346</span>            // 2. send the request to the target server<a name="line.346"></a>
+<span class="sourceLineNo">347</span>            if (!updateTransition(env, regionNode)) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>              // The operation figured it is done or it aborted; check getException()<a name="line.348"></a>
+<span class="sourceLineNo">349</span>              am.removeRegionInTransition(regionNode, this);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>              return null;<a name="line.350"></a>
+<span class="sourceLineNo">351</span>            }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>            if (transitionState != RegionTransitionState.REGION_TRANSITION_DISPATCH) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>              retry = true;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>              break;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>            }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>            if (regionNode.getProcedureEvent().suspendIfNotReady(this)) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>              throw new ProcedureSuspendedException();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>            }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>            break;<a name="line.359"></a>
 <span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  @Override<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  protected LockState acquireLock(final MasterProcedureEnv env) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    // Unless we are assigning meta, wait for meta to be available and loaded.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    if (!isMeta() &amp;&amp; (env.waitFailoverCleanup(this) ||<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        env.getAssignmentManager().waitMetaInitialized(this, getRegionInfo()))) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      return LockState.LOCK_EVENT_WAIT;<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>    // TODO: Revisit this and move it to the executor<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    if (env.getProcedureScheduler().waitRegion(this, getRegionInfo())) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      try {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        LOG.debug(LockState.LOCK_EVENT_WAIT + " pid=" + getProcId() + " " +<a name="line.372"></a>
-<span class="sourceLineNo">373</span>          env.getProcedureScheduler().dumpLocks());<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      } catch (IOException e) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        // TODO Auto-generated catch block<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        e.printStackTrace();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      }<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      return LockState.LOCK_EVENT_WAIT;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    }<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    this.lock = true;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    return LockState.LOCK_ACQUIRED;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
+<span class="sourceLineNo">361</span>          case REGION_TRANSITION_FINISH:<a name="line.361"></a>
+<span class="sourceLineNo">362</span>            // 3. wait assignment response. completion/failure<a name="line.362"></a>
+<span class="sourceLineNo">363</span>            LOG.debug("Finishing {}; {}", this, regionNode.toShortString());<a name="line.363"></a>
+<span class="sourceLineNo">364</span>            finishTransition(env, regionNode);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>            am.removeRegionInTransition(regionNode, this);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>            return null;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        }<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      } while (retry);<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      // If here, success so clear out the attempt counter so we start fresh each time we get stuck.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      this.attempt = 0;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    } catch (IOException e) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      long backoff = getBackoffTime(this.attempt++);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      LOG.warn("Failed transition, suspend {}secs {}; {}; waiting on rectified condition fixed " +<a name="line.373"></a>
+<span class="sourceLineNo">374</span>              "by other Procedure or operator intervention", backoff / 1000, this,<a name="line.374"></a>
+<span class="sourceLineNo">375</span>          regionNode.toShortString(), e);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      getRegionState(env).getProcedureEvent().suspend();<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      if (getRegionState(env).getProcedureEvent().suspendIfNotReady(this)) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        setTimeout(Math.toIntExact(backoff));<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        setState(ProcedureProtos.ProcedureState.WAITING_TIMEOUT);<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        throw new ProcedureSuspendedException();<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      }<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    }<a name="line.382"></a>
 <span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  @Override<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  protected void releaseLock(final MasterProcedureEnv env) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    env.getProcedureScheduler().wakeRegion(this, getRegionInfo());<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    lock = false;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  }<a name="line.388"></a>
-<span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>  @Override<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  protected boolean holdLock(final MasterProcedureEnv env) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    return true;<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>  @Override<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  protected boolean hasLock(final MasterProcedureEnv env) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    return lock;<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>  protected boolean shouldWaitClientAck(MasterProcedureEnv env) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    // The operation is triggered internally on the server<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    // the client does not know about this procedure.<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    return false;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  }<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  /**<a name="line.407"></a>
-<span class="sourceLineNo">408</span>   * Used by ServerCrashProcedure to see if this Assign/Unassign needs processing.<a name="line.408"></a>
-<span class="sourceLineNo">409</span>   * @return ServerName the Assign or Unassign is going against.<a name="line.409"></a>
-<span class="sourceLineNo">410</span>   */<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  public abstract ServerName getServer(final MasterProcedureEnv env);<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 void remoteOperationCompleted(MasterProcedureEnv env) {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    // should not be called for region operation until we modified the open/close region procedure<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    throw new UnsupportedOperationException();<a name="line.416"></a>
+<span class="sourceLineNo">384</span>    return new Procedure[] {this};<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>  private long getBackoffTime(int attempts) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    long backoffTime = (long)(1000 * Math.pow(2, attempts));<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    long maxBackoffTime = 60 * 60 * 1000; // An hour. Hard-coded for for now.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    return backoffTime &lt; maxBackoffTime? backoffTime: maxBackoffTime;<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>  /**<a name="line.393"></a>
+<span class="sourceLineNo">394</span>   * At end of timeout, wake ourselves up so we run again.<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 synchronized boolean setTimeoutFailure(MasterProcedureEnv env) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    setState(ProcedureProtos.ProcedureState.RUNNABLE);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    getRegionState(env).getProcedureEvent().wake(env.getProcedureScheduler());<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    return false; // 'false' means that this procedure handled the timeout<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 void rollback(final MasterProcedureEnv env) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    if (isRollbackSupported(transitionState)) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      // Nothing done up to this point. abort safely.<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      // This should happen when something like disableTable() is triggered.<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      env.getAssignmentManager().removeRegionInTransition(getRegionState(env), this);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      return;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    }<a name="line.410"></a>
+<span class="sourceLineNo">411</span><a name="line.411"></a>
+<span class="sourceLineNo">412</span>    // There is no rollback for assignment unless we cancel the operation by<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    // dropping/disabling the table.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    throw new UnsupportedOperationException("Unhandled state " + transitionState +<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        "; there is no rollback for assignment unless we cancel the operation by " +<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        "dropping/disabling the table");<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>  @Override<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  public void remoteOperationFailed(MasterProcedureEnv env, RemoteProcedureException error) {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    // should not be called for region operation until we modified the open/close region procedure<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    throw new UnsupportedOperationException();<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">419</span>  protected abstract boolean isRollbackSupported(final RegionTransitionState state);<a name="line.419"></a>
+<span class="sourceLineNo">420</span><a name="line.420"></a>
+<span class="sourceLineNo">421</span>  @Override<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  protected boolean abort(final MasterProcedureEnv env) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    if (isRollbackSupported(transitionState)) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      aborted.set(true);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      return true;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    return false;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>  @Override<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  protected LockState acquireLock(final MasterProcedureEnv env) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    // Unless we are assigning meta, wait for meta to be available and loaded.<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    if (!isMeta() &amp;&amp; (env.waitFailoverCleanup(this) ||<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        env.getAssignmentManager().waitMetaInitialized(this, getRegionInfo()))) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      return LockState.LOCK_EVENT_WAIT;<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    }<a name="line.436"></a>
+<span class="sourceLineNo">437</span><a name="line.437"></a>
+<span class="sourceLineNo">438</span>    // TODO: Revisit this and move it to the executor<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    if (env.getProcedureScheduler().waitRegion(this, getRegionInfo())) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      try {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>        LOG.debug(LockState.LOCK_EVENT_WAIT + " pid=" + getProcId() + " " +<a name="line.441"></a>
+<span class="sourceLineNo">442</span>          env.getProcedureScheduler().dumpLocks());<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      } catch (IOException e) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        // TODO Auto-generated catch block<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        e.printStackTrace();<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      return LockState.LOCK_EVENT_WAIT;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    }<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    this.lock = true;<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    return LockState.LOCK_ACQUIRED;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  }<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>  @Override<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  protected void releaseLock(final MasterProcedureEnv env) {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    env.getProcedureScheduler().wakeRegion(this, getRegionInfo());<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    lock = false;<a name="line.456"></a>
+<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
+<span class="sourceLineNo">458</span><a name="line.458"></a>
+<span class="sourceLineNo">459</span>  @Override<a name="line.459"></a>
+<span class="sourceLineNo">460</span>  protected boolean holdLock(final MasterProcedureEnv env) {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    return true;<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>  @Override<a name="line.464"></a>
+<span class="sourceLineNo">465</span>  protected boolean hasLock(final MasterProcedureEnv env) {<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    return lock;<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>  @Override<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  protected boolean shouldWaitClientAck(MasterProcedureEnv env) {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    // The operation is triggered internally on the server<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    // the client does not know about this procedure.<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    return false;<a name="line.473"></a>
+<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>  /**<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * Used by ServerCrashProcedure to see if this Assign/Unassign needs processing.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   * @return ServerName the Assign or Unassign is going against.<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   */<a name="line.479"></a>
+<span class="sourceLineNo">480</span>  public abstract ServerName getServer(final MasterProcedureEnv env);<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>  @Override<a name="line.482"></a>
+<span class="sourceLineNo">483</span>  public void remoteOperationCompleted(MasterProcedureEnv env) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    // should not be called for region operation until we modified the open/close region procedure<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    throw new UnsupportedOperationException();<a name="line.485"></a>
+<span class="sourceLineNo">486</span>  }<a name="line.486"></a>
+<span class="sourceLineNo">487</span><a name="line.487"></a>
+<span class="sourceLineNo">488</span>  @Override<a name="line.488"></a>
+<span class="sourceLineNo">489</span>  public void remoteOperationFailed(MasterProcedureEnv env, RemoteProcedureException error) {<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    // should not be called for region operation until we modified the open/close region procedure<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    throw new UnsupportedOperationException();<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>
 
 
 


[07/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/Procedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/Procedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/Procedure.html
index c8a3f1e..ed25b40 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/Procedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/Procedure.html
@@ -83,854 +83,859 @@
 <span class="sourceLineNo">075</span> * during the execute() step. In case of failure and restart, rollback() may be<a name="line.75"></a>
 <span class="sourceLineNo">076</span> * called multiple times, so again the code must be idempotent.<a name="line.76"></a>
 <span class="sourceLineNo">077</span> *<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * &lt;p&gt;Procedure can be made respect a locking regime. It has acqure/release methods as<a name="line.78"></a>
+<span class="sourceLineNo">078</span> * &lt;p&gt;Procedure can be made respect a locking regime. It has acquire/release methods as<a name="line.78"></a>
 <span class="sourceLineNo">079</span> * well as an {@link #hasLock(Object)}. The lock implementation is up to the implementor.<a name="line.79"></a>
 <span class="sourceLineNo">080</span> * If an entity needs to be locked for the life of a procedure -- not just the calls to<a name="line.80"></a>
 <span class="sourceLineNo">081</span> * execute -- then implementations should say so with the {@link #holdLock(Object)}<a name="line.81"></a>
 <span class="sourceLineNo">082</span> * method.<a name="line.82"></a>
 <span class="sourceLineNo">083</span> *<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * &lt;p&gt;There are hooks for collecting metrics on submit of the procedure and on finish.<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * See {@link #updateMetricsOnSubmit(Object)} and<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * {@link #updateMetricsOnFinish(Object, long, boolean)}.<a name="line.86"></a>
-<span class="sourceLineNo">087</span> */<a name="line.87"></a>
-<span class="sourceLineNo">088</span>@InterfaceAudience.Private<a name="line.88"></a>
-<span class="sourceLineNo">089</span>@InterfaceStability.Evolving<a name="line.89"></a>
-<span class="sourceLineNo">090</span>public abstract class Procedure&lt;TEnvironment&gt; implements Comparable&lt;Procedure&lt;TEnvironment&gt;&gt; {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private static final Logger LOG = LoggerFactory.getLogger(Procedure.class);<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  public static final long NO_PROC_ID = -1;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  protected static final int NO_TIMEOUT = -1;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  public enum LockState {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    LOCK_ACQUIRED,       // Lock acquired and ready to execute<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    LOCK_YIELD_WAIT,     // Lock not acquired, framework needs to yield<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    LOCK_EVENT_WAIT,     // Lock not acquired, an event will yield the procedure<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>  // Unchanged after initialization<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  private NonceKey nonceKey = null;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  private String owner = null;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private long parentProcId = NO_PROC_ID;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private long rootProcId = NO_PROC_ID;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  private long procId = NO_PROC_ID;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  private long submittedTime;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  // Runtime state, updated every operation<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  private ProcedureState state = ProcedureState.INITIALIZING;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private RemoteProcedureException exception = null;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private int[] stackIndexes = null;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  private int childrenLatch = 0;<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>  private volatile int timeout = NO_TIMEOUT;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  private volatile long lastUpdate;<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private volatile byte[] result = null;<a name="line.118"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;Procedures can be suspended or put in wait state with a callback that gets executed on<a name="line.84"></a>
+<span class="sourceLineNo">085</span> * Procedure-specified timeout. See {@link #setTimeout(int)}}, and<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * {@link #setTimeoutFailure(Object)}. See TestProcedureEvents and the<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * TestTimeoutEventProcedure class for an example usage.&lt;/p&gt;<a name="line.87"></a>
+<span class="sourceLineNo">088</span> *<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * &lt;p&gt;There are hooks for collecting metrics on submit of the procedure and on finish.<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * See {@link #updateMetricsOnSubmit(Object)} and<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * {@link #updateMetricsOnFinish(Object, long, boolean)}.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> */<a name="line.92"></a>
+<span class="sourceLineNo">093</span>@InterfaceAudience.Private<a name="line.93"></a>
+<span class="sourceLineNo">094</span>@InterfaceStability.Evolving<a name="line.94"></a>
+<span class="sourceLineNo">095</span>public abstract class Procedure&lt;TEnvironment&gt; implements Comparable&lt;Procedure&lt;TEnvironment&gt;&gt; {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private static final Logger LOG = LoggerFactory.getLogger(Procedure.class);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public static final long NO_PROC_ID = -1;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  protected static final int NO_TIMEOUT = -1;<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public enum LockState {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    LOCK_ACQUIRED,       // Lock acquired and ready to execute<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    LOCK_YIELD_WAIT,     // Lock not acquired, framework needs to yield<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    LOCK_EVENT_WAIT,     // Lock not acquired, an event will yield the procedure<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>  // Unchanged after initialization<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  private NonceKey nonceKey = null;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private String owner = null;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  private long parentProcId = NO_PROC_ID;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private long rootProcId = NO_PROC_ID;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private long procId = NO_PROC_ID;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  private long submittedTime;<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>  // Runtime state, updated every operation<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private ProcedureState state = ProcedureState.INITIALIZING;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private RemoteProcedureException exception = null;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private int[] stackIndexes = null;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private int childrenLatch = 0;<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>   * The main code of the procedure. It must be idempotent since execute()<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   * may be called multiple times in case of machine failure in the middle<a name="line.122"></a>
-<span class="sourceLineNo">123</span>   * of the execution.<a name="line.123"></a>
-<span class="sourceLineNo">124</span>   * @param env the environment passed to the ProcedureExecutor<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   * @return a set of sub-procedures to run or ourselves if there is more work to do or null if the<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * procedure is done.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * @throws ProcedureYieldException the procedure will be added back to the queue and retried later.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   * @throws InterruptedException the procedure will be added back to the queue and retried later.<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * @throws ProcedureSuspendedException Signal to the executor that Procedure has suspended itself and<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * has set itself up waiting for an external event to wake it back up again.<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  protected abstract Procedure&lt;TEnvironment&gt;[] execute(TEnvironment env)<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    throws ProcedureYieldException, ProcedureSuspendedException, InterruptedException;<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>   * The code to undo what was done by the execute() code.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * It is called when the procedure or one of the sub-procedures failed or an<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * abort was requested. It should cleanup all the resources created by<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * the execute() call. The implementation must be idempotent since rollback()<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * may be called multiple time in case of machine failure in the middle<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * of the execution.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * @param env the environment passed to the ProcedureExecutor<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * @throws IOException temporary failure, the rollback will retry later<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @throws InterruptedException the procedure will be added back to the queue and retried later<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  protected abstract void rollback(TEnvironment env)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    throws IOException, InterruptedException;<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>   * The abort() call is asynchronous and each procedure must decide how to deal<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * with it, if they want to be abortable. The simplest implementation<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * is to have an AtomicBoolean set in the abort() method and then the execute()<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   * will check if the abort flag is set or not.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * abort() may be called multiple times from the client, so the implementation<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * must be idempotent.<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   *<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * &lt;p&gt;NOTE: abort() is not like Thread.interrupt(). It is just a notification<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   * that allows the procedure implementor abort.<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   */<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  protected abstract boolean abort(TEnvironment env);<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>   * The user-level code of the procedure may have some state to<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * persist (e.g. input arguments or current position in the processing state) to<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * be able to resume on failure.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param serializer stores the serializable state<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  protected abstract void serializeStateData(final ProcedureStateSerializer serializer)<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    throws IOException;<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  /**<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * Called on store load to allow the user to decode the previously serialized<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * state.<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param serializer contains the serialized state<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   */<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  protected abstract void deserializeStateData(final ProcedureStateSerializer serializer)<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    throws IOException;<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>   * The user should override this method if they need a lock on an Entity.<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * A lock can be anything, and it is up to the implementor. The Procedure<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   * Framework will call this method just before it invokes {@link #execute(Object)}.<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * It calls {@link #releaseLock(Object)} after the call to execute.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   *<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * &lt;p&gt;If you need to hold the lock for the life of the Procedure -- i.e. you do not<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * want any other Procedure interfering while this Procedure is running, see<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * {@link #holdLock(Object)}.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   *<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * &lt;p&gt;Example: in our Master we can execute request in parallel for different tables.<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * We can create t1 and create t2 and these creates can be executed at the same time.<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * Anything else on t1/t2 is queued waiting that specific table create to happen.<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   *<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * &lt;p&gt;There are 3 LockState:<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * &lt;ul&gt;&lt;li&gt;LOCK_ACQUIRED should be returned when the proc has the lock and the proc is<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * ready to execute.&lt;/li&gt;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * &lt;li&gt;LOCK_YIELD_WAIT should be returned when the proc has not the lock and the framework<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * should take care of readding the procedure back to the runnable set for retry&lt;/li&gt;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   * &lt;li&gt;LOCK_EVENT_WAIT should be returned when the proc has not the lock and someone will<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   * take care of readding the procedure back to the runnable set when the lock is available.<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * &lt;/li&gt;&lt;/ul&gt;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * @return the lock state as described above.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   */<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  protected LockState acquireLock(final TEnvironment env) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    return LockState.LOCK_ACQUIRED;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>  /**<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   * The user should override this method, and release lock if necessary.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  protected void releaseLock(final TEnvironment env) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    // no-op<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>   * Used to keep the procedure lock even when the procedure is yielding or suspended.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * Must implement {@link #hasLock(Object)} if you want to hold the lock for life<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * of the Procedure.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * @see #hasLock(Object)<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @return true if the procedure should hold on the lock until completionCleanup()<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  protected boolean holdLock(final TEnvironment env) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    return false;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * This is used in conjunction with {@link #holdLock(Object)}. If {@link #holdLock(Object)}<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * returns true, the procedure executor will call acquireLock() once and thereafter<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * not call {@link #releaseLock(Object)} until the Procedure is done (Normally, it calls<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * release/acquire around each invocation of {@link #execute(Object)}.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @see #holdLock(Object)<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * @return true if the procedure has the lock, false otherwise.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   */<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  protected boolean hasLock(final TEnvironment env) {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return false;<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>   * Called when the procedure is loaded for replay.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * The procedure implementor may use this method to perform some quick<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   * operation before replay.<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * e.g. failing the procedure if the state on replay may be unknown.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   */<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  protected void beforeReplay(final TEnvironment env) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    // no-op<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>  /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   * Called when the procedure is ready to be added to the queue after<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   * the loading/replay operation.<a name="line.249"></a>
-<span class="sourceLineNo">250</span>   */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  protected void afterReplay(final TEnvironment env) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    // no-op<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  }<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>  /**<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   * Called when the procedure is marked as completed (success or rollback).<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * The procedure implementor may use this method to cleanup in-memory states.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   * This operation will not be retried on failure. If a procedure took a lock,<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   * it will have been released when this method runs.<a name="line.259"></a>
-<span class="sourceLineNo">260</span>   */<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  protected void completionCleanup(final TEnvironment env) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    // no-op<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>   * By default, the procedure framework/executor will try to run procedures start to finish.<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * Return true to make the executor yield between each execution step to<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   * give other procedures a chance to run.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>   * @param env the environment passed to the ProcedureExecutor<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * @return Return true if the executor should yield on completion of an execution step.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   *         Defaults to return false.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   */<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  protected boolean isYieldAfterExecutionStep(final TEnvironment env) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    return false;<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>   * By default, the executor will keep the procedure result around util<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * the eviction TTL is expired. The client can cut down the waiting time<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * by requesting that the result is removed from the executor.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * In case of system started procedure, we can force the executor to auto-ack.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   * @param env the environment passed to the ProcedureExecutor<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * @return true if the executor should wait the client ack for the result.<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   *         Defaults to return true.<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   */<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  protected boolean shouldWaitClientAck(final TEnvironment env) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    return true;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>  /**<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * Override this method to provide procedure specific counters for submitted count, failed<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * count and time histogram.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   * @param env The environment passed to the procedure executor<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * @return Container object for procedure related metric<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  protected ProcedureMetrics getProcedureMetrics(final TEnvironment env) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    return null;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  }<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>  /**<a name="line.300"></a>
-<span class="sourceLineNo">301</span>   * This function will be called just when procedure is submitted for execution. Override this<a name="line.301"></a>
-<span class="sourceLineNo">302</span>   * method to update the metrics at the beginning of the procedure. The default implementation<a name="line.302"></a>
-<span class="sourceLineNo">303</span>   * updates submitted counter if {@link #getProcedureMetrics(Object)} returns non-null<a name="line.303"></a>
-<span class="sourceLineNo">304</span>   * {@link ProcedureMetrics}.<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   */<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  protected void updateMetricsOnSubmit(final TEnvironment env) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    ProcedureMetrics metrics = getProcedureMetrics(env);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    if (metrics == null) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      return;<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>    Counter submittedCounter = metrics.getSubmittedCounter();<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    if (submittedCounter != null) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      submittedCounter.increment();<a name="line.314"></a>
+<span class="sourceLineNo">120</span>  private volatile int timeout = NO_TIMEOUT;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  private volatile long lastUpdate;<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  private volatile byte[] result = null;<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>   * The main code of the procedure. It must be idempotent since execute()<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   * may be called multiple times in case of machine failure in the middle<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   * of the execution.<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * @param env the environment passed to the ProcedureExecutor<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @return a set of sub-procedures to run or ourselves if there is more work to do or null if the<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * procedure is done.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * @throws ProcedureYieldException the procedure will be added back to the queue and retried later.<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * @throws InterruptedException the procedure will be added back to the queue and retried later.<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   * @throws ProcedureSuspendedException Signal to the executor that Procedure has suspended itself and<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   * has set itself up waiting for an external event to wake it back up again.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   */<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  protected abstract Procedure&lt;TEnvironment&gt;[] execute(TEnvironment env)<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    throws ProcedureYieldException, ProcedureSuspendedException, InterruptedException;<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>   * The code to undo what was done by the execute() code.<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   * It is called when the procedure or one of the sub-procedures failed or an<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * abort was requested. It should cleanup all the resources created by<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * the execute() call. The implementation must be idempotent since rollback()<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * may be called multiple time in case of machine failure in the middle<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   * of the execution.<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * @param env the environment passed to the ProcedureExecutor<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * @throws IOException temporary failure, the rollback will retry later<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * @throws InterruptedException the procedure will be added back to the queue and retried later<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  protected abstract void rollback(TEnvironment env)<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    throws IOException, InterruptedException;<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>   * The abort() call is asynchronous and each procedure must decide how to deal<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * with it, if they want to be abortable. The simplest implementation<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   * is to have an AtomicBoolean set in the abort() method and then the execute()<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * will check if the abort flag is set or not.<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * abort() may be called multiple times from the client, so the implementation<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   * must be idempotent.<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   *<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   * &lt;p&gt;NOTE: abort() is not like Thread.interrupt(). It is just a notification<a name="line.162"></a>
+<span class="sourceLineNo">163</span>   * that allows the procedure implementor abort.<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   */<a name="line.164"></a>
+<span class="sourceLineNo">165</span>  protected abstract boolean abort(TEnvironment env);<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>   * The user-level code of the procedure may have some state to<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * persist (e.g. input arguments or current position in the processing state) to<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * be able to resume on failure.<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * @param serializer stores the serializable state<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  protected abstract void serializeStateData(final ProcedureStateSerializer serializer)<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    throws IOException;<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span>  /**<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   * Called on store load to allow the user to decode the previously serialized<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * state.<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   * @param serializer contains the serialized state<a name="line.179"></a>
+<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  protected abstract void deserializeStateData(final ProcedureStateSerializer serializer)<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    throws IOException;<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>   * The user should override this method if they need a lock on an Entity.<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * A lock can be anything, and it is up to the implementor. The Procedure<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * Framework will call this method just before it invokes {@link #execute(Object)}.<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * It calls {@link #releaseLock(Object)} after the call to execute.<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   *<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * &lt;p&gt;If you need to hold the lock for the life of the Procedure -- i.e. you do not<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * want any other Procedure interfering while this Procedure is running, see<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * {@link #holdLock(Object)}.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   *<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * &lt;p&gt;Example: in our Master we can execute request in parallel for different tables.<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * We can create t1 and create t2 and these creates can be executed at the same time.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * Anything else on t1/t2 is queued waiting that specific table create to happen.<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   *<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * &lt;p&gt;There are 3 LockState:<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * &lt;ul&gt;&lt;li&gt;LOCK_ACQUIRED should be returned when the proc has the lock and the proc is<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * ready to execute.&lt;/li&gt;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * &lt;li&gt;LOCK_YIELD_WAIT should be returned when the proc has not the lock and the framework<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   * should take care of readding the procedure back to the runnable set for retry&lt;/li&gt;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   * &lt;li&gt;LOCK_EVENT_WAIT should be returned when the proc has not the lock and someone will<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   * take care of readding the procedure back to the runnable set when the lock is available.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * &lt;/li&gt;&lt;/ul&gt;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   * @return the lock state as described above.<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   */<a name="line.207"></a>
+<span class="sourceLineNo">208</span>  protected LockState acquireLock(final TEnvironment env) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    return LockState.LOCK_ACQUIRED;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  }<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>  /**<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   * The user should override this method, and release lock if necessary.<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   */<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  protected void releaseLock(final TEnvironment env) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    // no-op<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  }<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>  /**<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   * Used to keep the procedure lock even when the procedure is yielding or suspended.<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   * Must implement {@link #hasLock(Object)} if you want to hold the lock for life<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   * of the Procedure.<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * @see #hasLock(Object)<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @return true if the procedure should hold on the lock until completionCleanup()<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   */<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  protected boolean holdLock(final TEnvironment env) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    return false;<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>   * This is used in conjunction with {@link #holdLock(Object)}. If {@link #holdLock(Object)}<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * returns true, the procedure executor will call acquireLock() once and thereafter<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * not call {@link #releaseLock(Object)} until the Procedure is done (Normally, it calls<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * release/acquire around each invocation of {@link #execute(Object)}.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @see #holdLock(Object)<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   * @return true if the procedure has the lock, false otherwise.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   */<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  protected boolean hasLock(final TEnvironment env) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return false;<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>   * Called when the procedure is loaded for replay.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * The procedure implementor may use this method to perform some quick<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * operation before replay.<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   * e.g. failing the procedure if the state on replay may be unknown.<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   */<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  protected void beforeReplay(final TEnvironment env) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    // no-op<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>  /**<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   * Called when the procedure is ready to be added to the queue after<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * the loading/replay operation.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   */<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  protected void afterReplay(final TEnvironment env) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    // no-op<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>   * Called when the procedure is marked as completed (success or rollback).<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * The procedure implementor may use this method to cleanup in-memory states.<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * This operation will not be retried on failure. If a procedure took a lock,<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   * it will have been released when this method runs.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>   */<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  protected void completionCleanup(final TEnvironment env) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    // no-op<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  }<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>  /**<a name="line.270"></a>
+<span class="sourceLineNo">271</span>   * By default, the procedure framework/executor will try to run procedures start to finish.<a name="line.271"></a>
+<span class="sourceLineNo">272</span>   * Return true to make the executor yield between each execution step to<a name="line.272"></a>
+<span class="sourceLineNo">273</span>   * give other procedures a chance to run.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>   * @param env the environment passed to the ProcedureExecutor<a name="line.274"></a>
+<span class="sourceLineNo">275</span>   * @return Return true if the executor should yield on completion of an execution step.<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   *         Defaults to return false.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>   */<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  protected boolean isYieldAfterExecutionStep(final TEnvironment env) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    return false;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  /**<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * By default, the executor will keep the procedure result around util<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * the eviction TTL is expired. The client can cut down the waiting time<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   * by requesting that the result is removed from the executor.<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * In case of system started procedure, we can force the executor to auto-ack.<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * @param env the environment passed to the ProcedureExecutor<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * @return true if the executor should wait the client ack for the result.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   *         Defaults to return true.<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   */<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  protected boolean shouldWaitClientAck(final TEnvironment env) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    return true;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  /**<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * Override this method to provide procedure specific counters for submitted count, failed<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * count and time histogram.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * @param env The environment passed to the procedure executor<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * @return Container object for procedure related metric<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   */<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  protected ProcedureMetrics getProcedureMetrics(final TEnvironment env) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    return null;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>  /**<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   * This function will be called just when procedure is submitted for execution. Override this<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   * method to update the metrics at the beginning of the procedure. The default implementation<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   * updates submitted counter if {@link #getProcedureMetrics(Object)} returns non-null<a name="line.308"></a>
+<span class="sourceLineNo">309</span>   * {@link ProcedureMetrics}.<a name="line.309"></a>
+<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  protected void updateMetricsOnSubmit(final TEnvironment env) {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    ProcedureMetrics metrics = getProcedureMetrics(env);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    if (metrics == null) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      return;<a name="line.314"></a>
 <span class="sourceLineNo">315</span>    }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  }<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  /**<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * This function will be called just after procedure execution is finished. Override this method<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * to update metrics at the end of the procedure. If {@link #getProcedureMetrics(Object)}<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * returns non-null {@link ProcedureMetrics}, the default implementation adds runtime of a<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   * procedure to a time histogram for successfully completed procedures. Increments failed<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   * counter for failed procedures.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>   *<a name="line.324"></a>
-<span class="sourceLineNo">325</span>   * TODO: As any of the sub-procedures on failure rolls back all procedures in the stack,<a name="line.325"></a>
-<span class="sourceLineNo">326</span>   * including successfully finished siblings, this function may get called twice in certain<a name="line.326"></a>
-<span class="sourceLineNo">327</span>   * cases for certain procedures. Explore further if this can be called once.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   *<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   * @param env The environment passed to the procedure executor<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * @param runtime Runtime of the procedure in milliseconds<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @param success true if procedure is completed successfully<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   */<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  protected void updateMetricsOnFinish(final TEnvironment env, final long runtime,<a name="line.333"></a>
-<span class="sourceLineNo">334</span>                                       boolean success) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    ProcedureMetrics metrics = getProcedureMetrics(env);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    if (metrics == null) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      return;<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>    if (success) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      Histogram timeHisto = metrics.getTimeHisto();<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      if (timeHisto != null) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        timeHisto.update(runtime);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    } else {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      Counter failedCounter = metrics.getFailedCounter();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      if (failedCounter != null) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        failedCounter.increment();<a name="line.348"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>    Counter submittedCounter = metrics.getSubmittedCounter();<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    if (submittedCounter != null) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      submittedCounter.increment();<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    }<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  /**<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   * This function will be called just after procedure execution is finished. Override this method<a name="line.324"></a>
+<span class="sourceLineNo">325</span>   * to update metrics at the end of the procedure. If {@link #getProcedureMetrics(Object)}<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   * returns non-null {@link ProcedureMetrics}, the default implementation adds runtime of a<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * procedure to a time histogram for successfully completed procedures. Increments failed<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * counter for failed procedures.<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   *<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * TODO: As any of the sub-procedures on failure rolls back all procedures in the stack,<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   * including successfully finished siblings, this function may get called twice in certain<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   * cases for certain procedures. Explore further if this can be called once.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   *<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   * @param env The environment passed to the procedure executor<a name="line.334"></a>
+<span class="sourceLineNo">335</span>   * @param runtime Runtime of the procedure in milliseconds<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * @param success true if procedure is completed successfully<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  protected void updateMetricsOnFinish(final TEnvironment env, final long runtime,<a name="line.338"></a>
+<span class="sourceLineNo">339</span>                                       boolean success) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    ProcedureMetrics metrics = getProcedureMetrics(env);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    if (metrics == null) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      return;<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>    if (success) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      Histogram timeHisto = metrics.getTimeHisto();<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      if (timeHisto != null) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        timeHisto.update(runtime);<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>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  @Override<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  public String toString() {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    // Return the simple String presentation of the procedure.<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    return toStringSimpleSB().toString();<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>  /**<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   * Build the StringBuilder for the simple form of<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   * procedure string.<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * @return the StringBuilder<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   */<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  protected StringBuilder toStringSimpleSB() {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    final StringBuilder sb = new StringBuilder();<a name="line.365"></a>
-<span class="sourceLineNo">366</span><a name="line.366"></a>
-<span class="sourceLineNo">367</span>    sb.append("pid=");<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    sb.append(getProcId());<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>    if (hasParent()) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      sb.append(", ppid=");<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      sb.append(getParentProcId());<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
+<span class="sourceLineNo">350</span>    } else {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      Counter failedCounter = metrics.getFailedCounter();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      if (failedCounter != null) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        failedCounter.increment();<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 String toString() {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    // Return the simple String presentation of the procedure.<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    return toStringSimpleSB().toString();<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  /**<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * Build the StringBuilder for the simple form of<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * procedure string.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   * @return the StringBuilder<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   */<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  protected StringBuilder toStringSimpleSB() {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    final StringBuilder sb = new StringBuilder();<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    sb.append("pid=");<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    sb.append(getProcId());<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>     * TODO<a name="line.376"></a>
-<span class="sourceLineNo">377</span>     * Enable later when this is being used.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>     * Currently owner not used.<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    if (hasOwner()) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      sb.append(", owner=");<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      sb.append(getOwner());<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    }*/<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    sb.append(", state="); // pState for Procedure State as opposed to any other kind.<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    toStringState(sb);<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>    if (hasException()) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      sb.append(", exception=" + getException());<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>    sb.append("; ");<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    toStringClassDetails(sb);<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    return sb;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  /**<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * Extend the toString() information with more procedure<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * details<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   */<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  public String toStringDetails() {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    final StringBuilder sb = toStringSimpleSB();<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>    sb.append(" submittedTime=");<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    sb.append(getSubmittedTime());<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>    sb.append(", lastUpdate=");<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    sb.append(getLastUpdate());<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>    final int[] stackIndices = getStackIndexes();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    if (stackIndices != null) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      sb.append("\n");<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      sb.append("stackIndexes=");<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      sb.append(Arrays.toString(stackIndices));<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>    return sb.toString();<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>  protected String toStringClass() {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    StringBuilder sb = new StringBuilder();<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    toStringClassDetails(sb);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    return sb.toString();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  /**<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * Called from {@link #toString()} when interpolating {@link Procedure} State.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * Allows decorating generic Procedure State with Procedure particulars.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param builder Append current {@link ProcedureState}<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  protected void toStringState(StringBuilder builder) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    builder.append(getState());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  }<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /**<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * Extend the toString() information with the procedure details<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * e.g. className and parameters<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param builder the string builder to use to append the proc specific information<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   */<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  protected void toStringClassDetails(StringBuilder builder) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    builder.append(getClass().getName());<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  }<a name="line.442"></a>
-<span class="sourceLineNo">443</span><a name="line.443"></a>
-<span class="sourceLineNo">444</span>  // ==========================================================================<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  //  Those fields are unchanged after initialization.<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  //<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  //  Each procedure will get created from the user or during<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  //  ProcedureExecutor.start() during the load() phase and then submitted<a name="line.448"></a>
-<span class="sourceLineNo">449</span>  //  to the executor. these fields will never be changed after initialization<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  // ==========================================================================<a name="line.450"></a>
-<span class="sourceLineNo">451</span>  public long getProcId() {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    return procId;<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>  public boolean hasParent() {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    return parentProcId != NO_PROC_ID;<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public long getParentProcId() {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    return parentProcId;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  public long getRootProcId() {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    return rootProcId;<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>  public String getProcName() {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    return toStringClass();<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>  public NonceKey getNonceKey() {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return nonceKey;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  public long getSubmittedTime() {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    return submittedTime;<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public String getOwner() {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    return owner;<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>  public boolean hasOwner() {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    return owner != null;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  }<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>  /**<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * Called by the ProcedureExecutor to assign the ID to the newly created procedure.<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  @VisibleForTesting<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  @InterfaceAudience.Private<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  protected void setProcId(final long procId) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.procId = procId;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    this.submittedTime = EnvironmentEdgeManager.currentTime();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    setState(ProcedureState.RUNNABLE);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>  /**<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * Called by the ProcedureExecutor to assign the parent to the newly created procedure.<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  @InterfaceAudience.Private<a name="line.501"></a>
-<span class="sourceLineNo">502</span>  protected void setParentProcId(final long parentProcId) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    this.parentProcId = parentProcId;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  }<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
+<span class="sourceLineNo">375</span>    if (hasParent()) {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      sb.append(", ppid=");<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      sb.append(getParentProcId());<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    }<a name="line.378"></a>
+<span class="sourceLineNo">379</span><a name="line.379"></a>
+<span class="sourceLineNo">380</span>    /**<a name="line.380"></a>
+<span class="sourceLineNo">381</span>     * TODO<a name="line.381"></a>
+<span class="sourceLineNo">382</span>     * Enable later when this is being used.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>     * Currently owner not used.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    if (hasOwner()) {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      sb.append(", owner=");<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      sb.append(getOwner());<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>    sb.append(", state="); // pState for Procedure State as opposed to any other kind.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    toStringState(sb);<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>    if (hasException()) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      sb.append(", exception=" + getException());<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>    sb.append("; ");<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    toStringClassDetails(sb);<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>    return sb;<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>   * Extend the toString() information with more procedure<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * details<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  public String toStringDetails() {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    final StringBuilder sb = toStringSimpleSB();<a name="line.407"></a>
+<span class="sourceLineNo">408</span><a name="line.408"></a>
+<span class="sourceLineNo">409</span>    sb.append(" submittedTime=");<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    sb.append(getSubmittedTime());<a name="line.410"></a>
+<span class="sourceLineNo">411</span><a name="line.411"></a>
+<span class="sourceLineNo">412</span>    sb.append(", lastUpdate=");<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    sb.append(getLastUpdate());<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>    final int[] stackIndices = getStackIndexes();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    if (stackIndices != null) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      sb.append("\n");<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      sb.append("stackIndexes=");<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      sb.append(Arrays.toString(stackIndices));<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>    return sb.toString();<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>  protected String toStringClass() {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    StringBuilder sb = new StringBuilder();<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    toStringClassDetails(sb);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    return sb.toString();<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>  /**<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * Called from {@link #toString()} when interpolating {@link Procedure} State.<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * Allows decorating generic Procedure State with Procedure particulars.<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * @param builder Append current {@link ProcedureState}<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   */<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  protected void toStringState(StringBuilder builder) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    builder.append(getState());<a name="line.437"></a>
+<span class="sourceLineNo">438</span>  }<a name="line.438"></a>
+<span class="sourceLineNo">439</span><a name="line.439"></a>
+<span class="sourceLineNo">440</span>  /**<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   * Extend the toString() information with the procedure details<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   * e.g. className and parameters<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   * @param builder the string builder to use to append the proc specific information<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   */<a name="line.444"></a>
+<span class="sourceLineNo">445</span>  protected void toStringClassDetails(StringBuilder builder) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    builder.append(getClass().getName());<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>  //  Those fields are unchanged after initialization.<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  //<a name="line.451"></a>
+<span class="sourceLineNo">452</span>  //  Each procedure will get created from the user or during<a name="line.452"></a>
+<span class="sourceLineNo">453</span>  //  ProcedureExecutor.start() during the load() phase and then submitted<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  //  to the executor. these fields will never be changed after initialization<a name="line.454"></a>
+<span class="sourceLineNo">455</span>  // ==========================================================================<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  public long getProcId() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    return procId;<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>  public boolean hasParent() {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    return parentProcId != NO_PROC_ID;<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>  public long getParentProcId() {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    return parentProcId;<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>  public long getRootProcId() {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    return rootProcId;<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  public String getProcName() {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    return toStringClass();<a name="line.473"></a>
+<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>  public NonceKey getNonceKey() {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    return nonceKey;<a name="line.477"></a>
+<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
+<span class="sourceLineNo">479</span><a name="line.479"></a>
+<span class="sourceLineNo">480</span>  public long getSubmittedTime() {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    return submittedTime;<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>  public String getOwner() {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    return owner;<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>  public boolean hasOwner() {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    return owner != null;<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>   * Called by the ProcedureExecutor to assign the ID to the newly created procedure.<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   */<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  @VisibleForTesting<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  @InterfaceAudience.Private<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  protected void setProcId(final long procId) {<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    this.procId = procId;<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    this.submittedTime = EnvironmentEdgeManager.currentTime();<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    setState(ProcedureState.RUNNABLE);<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>  /**<a name="line.503"></a>
+<span class="sourceLineNo">504</span>   * Called by the ProcedureExecutor to assign the parent to the newly created procedure.<a name="line.504"></a>
+<span class="sourceLineNo">505</span>   */<a name="line.505"></a>
 <span class="sourceLineNo">506</span>  @InterfaceAudience.Private<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  protected void setRootProcId(final long rootProcId) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    this.rootProcId = rootProcId;<a name="line.508"></a>
+<span class="sourceLineNo">507</span>  protected void setParentProcId(final long parentProcId) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    this.parentProcId = parentProcId;<a name="line.508"></a>
 <span class="sourceLineNo">509</span>  }<a name="line.509"></a>
 <span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  /**<a name="line.511"></a>
-<span class="sourceLineNo">512</span>   * Called by the ProcedureExecutor to set the value to the newly created procedure.<a name="line.512"></a>
-<span class="sourceLineNo">513</span>   */<a name="line.513"></a>
-<span class="sourceLineNo">514</span>  @VisibleForTesting<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  @InterfaceAudience.Private<a name="line.515"></a>
-<span class="sourceLineNo">516</span>  protected void setNonceKey(final NonceKey nonceKey) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    this.nonceKey = nonceKey;<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>  @VisibleForTesting<a name="line.520"></a>
-<span class="sourceLineNo">521</span>  @InterfaceAudience.Private<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  public void setOwner(final String owner) {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    this.owner = StringUtils.isEmpty(owner) ? null : owner;<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>  public void setOwner(final User owner) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    assert owner != null : "expected owner to be not null";<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    setOwner(owner.getShortName());<a name="line.528"></a>
+<span class="sourceLineNo">511</span>  @InterfaceAudience.Private<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  protected void setRootProcId(final long rootProcId) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    this.rootProcId = rootProcId;<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 name="line.516"></a>
+<span class="sourceLineNo">517</span>   * Called by the ProcedureExecutor to set the value to the newly created procedure.<a name="line.517"></a>
+<span class="sourceLineNo">518</span>   */<a name="line.518"></a>
+<span class="sourceLineNo">519</span>  @VisibleForTesting<a name="line.519"></a>
+<span class="sourceLineNo">520</span>  @InterfaceAudience.Private<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  protected void setNonceKey(final NonceKey nonceKey) {<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    this.nonceKey = nonceKey;<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
+<span class="sourceLineNo">524</span><a name="line.524"></a>
+<span class="sourceLineNo">525</span>  @VisibleForTesting<a name="line.525"></a>
+<span class="sourceLineNo">526</span>  @InterfaceAudience.Private<a name="line.526"></a>
+<span class="sourceLineNo">527</span>  public void setOwner(final String owner) {<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    this.owner = StringUtils.isEmpty(owner) ? null : owner;<a name="line.528"></a>
 <span class="sourceLineNo">529</span>  }<a name="line.529"></a>
 <span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>  /**<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * Called on store load to initialize the Procedure internals after<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * the creation/deserialization.<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   */<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  @InterfaceAudience.Private<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  protected void setSubmittedTime(final long submittedTime) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    this.submittedTime = submittedTime;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>  }<a name="line.538"></a>
-<span class="sourceLineNo">539</span><a name="line.539"></a>
-<span class="sourceLineNo">540</span>  // ==========================================================================<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  //  runtime state - timeout related<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>   * @param timeout timeout interval in msec<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   */<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  protected void setTimeout(final int timeout) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    this.timeout = timeout;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>  }<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>  public boolean hasTimeout() {<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    return timeout != NO_TIMEOUT;<a name="line.551"></a>
-<span class="sourceLineNo">552</span>  }<a name="line.552"></a>
-<span class="sourceLineNo">553</span><a name="line.5

<TRUNCATED>

[05/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html
index dcc1cc1..6be6b66 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html
@@ -32,157 +32,173 @@
 <span class="sourceLineNo">024</span>import org.slf4j.Logger;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.slf4j.LoggerFactory;<a name="line.25"></a>
 <span class="sourceLineNo">026</span><a name="line.26"></a>
-<span class="sourceLineNo">027</span>@InterfaceAudience.Private<a name="line.27"></a>
-<span class="sourceLineNo">028</span>public class RetryCounter {<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>  /**<a name="line.30"></a>
-<span class="sourceLineNo">031</span>   *  Configuration for a retry counter<a name="line.31"></a>
-<span class="sourceLineNo">032</span>   */<a name="line.32"></a>
-<span class="sourceLineNo">033</span>  public static class RetryConfig {<a name="line.33"></a>
-<span class="sourceLineNo">034</span>    private int maxAttempts;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>    private long sleepInterval;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>    private long maxSleepTime;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>    private TimeUnit timeUnit;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>    private BackoffPolicy backoffPolicy;<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>    private static final BackoffPolicy DEFAULT_BACKOFF_POLICY = new ExponentialBackoffPolicy();<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>    public RetryConfig() {<a name="line.42"></a>
-<span class="sourceLineNo">043</span>      maxAttempts    = 1;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>      sleepInterval = 1000;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>      maxSleepTime  = -1;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>      timeUnit = TimeUnit.MILLISECONDS;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>      backoffPolicy = DEFAULT_BACKOFF_POLICY;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    }<a name="line.48"></a>
+<span class="sourceLineNo">027</span>/**<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * Operation retry accounting.<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * Use to calculate wait period, {@link #getBackoffTimeAndIncrementAttempts()}}, or for performing<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * wait, {@link #sleepUntilNextRetry()}, in accordance with a {@link RetryConfig}, initial<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * settings, and a Retry Policy, (See org.apache.hadoop.io.retry.RetryPolicy).<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * Like &lt;a href=https://github.com/rholder/guava-retrying&gt;guava-retrying&lt;/a&gt;.<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @since 0.92.0<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see RetryCounterFactory<a name="line.34"></a>
+<span class="sourceLineNo">035</span> */<a name="line.35"></a>
+<span class="sourceLineNo">036</span>@InterfaceAudience.Private<a name="line.36"></a>
+<span class="sourceLineNo">037</span>public class RetryCounter {<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  /**<a name="line.38"></a>
+<span class="sourceLineNo">039</span>   *  Configuration for a retry counter<a name="line.39"></a>
+<span class="sourceLineNo">040</span>   */<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  public static class RetryConfig {<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    private int maxAttempts;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    private long sleepInterval;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>    private long maxSleepTime;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>    private TimeUnit timeUnit;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>    private BackoffPolicy backoffPolicy;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>    private static final BackoffPolicy DEFAULT_BACKOFF_POLICY = new ExponentialBackoffPolicy();<a name="line.48"></a>
 <span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>    public RetryConfig(int maxAttempts, long sleepInterval, long maxSleepTime,<a name="line.50"></a>
-<span class="sourceLineNo">051</span>        TimeUnit timeUnit, BackoffPolicy backoffPolicy) {<a name="line.51"></a>
-<span class="sourceLineNo">052</span>      this.maxAttempts = maxAttempts;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>      this.sleepInterval = sleepInterval;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>      this.maxSleepTime = maxSleepTime;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>      this.timeUnit = timeUnit;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>      this.backoffPolicy = backoffPolicy;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    }<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>    public RetryConfig setBackoffPolicy(BackoffPolicy backoffPolicy) {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>      this.backoffPolicy = backoffPolicy;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      return this;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    }<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>    public RetryConfig setMaxAttempts(int maxAttempts) {<a name="line.64"></a>
-<span class="sourceLineNo">065</span>      this.maxAttempts = maxAttempts;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      return this;<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>    public RetryConfig setMaxSleepTime(long maxSleepTime) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      this.maxSleepTime = maxSleepTime;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      return this;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    }<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>    public RetryConfig setSleepInterval(long sleepInterval) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      this.sleepInterval = sleepInterval;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      return this;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    }<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public RetryConfig setTimeUnit(TimeUnit timeUnit) {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      this.timeUnit = timeUnit;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return this;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public int getMaxAttempts() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      return maxAttempts;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    public long getMaxSleepTime() {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      return maxSleepTime;<a name="line.89"></a>
+<span class="sourceLineNo">050</span>    public RetryConfig() {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>      maxAttempts    = 1;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>      sleepInterval = 1000;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>      maxSleepTime  = -1;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>      timeUnit = TimeUnit.MILLISECONDS;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>      backoffPolicy = DEFAULT_BACKOFF_POLICY;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    }<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>    public RetryConfig(int maxAttempts, long sleepInterval, long maxSleepTime,<a name="line.58"></a>
+<span class="sourceLineNo">059</span>        TimeUnit timeUnit, BackoffPolicy backoffPolicy) {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      this.maxAttempts = maxAttempts;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      this.sleepInterval = sleepInterval;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>      this.maxSleepTime = maxSleepTime;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>      this.timeUnit = timeUnit;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>      this.backoffPolicy = backoffPolicy;<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>    public RetryConfig setBackoffPolicy(BackoffPolicy backoffPolicy) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      this.backoffPolicy = backoffPolicy;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      return this;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    }<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>    public RetryConfig setMaxAttempts(int maxAttempts) {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      this.maxAttempts = maxAttempts;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      return this;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    }<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>    public RetryConfig setMaxSleepTime(long maxSleepTime) {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      this.maxSleepTime = maxSleepTime;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      return this;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>    public RetryConfig setSleepInterval(long sleepInterval) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      this.sleepInterval = sleepInterval;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      return this;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    }<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>    public RetryConfig setTimeUnit(TimeUnit timeUnit) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      this.timeUnit = timeUnit;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      return this;<a name="line.89"></a>
 <span class="sourceLineNo">090</span>    }<a name="line.90"></a>
 <span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    public long getSleepInterval() {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      return sleepInterval;<a name="line.93"></a>
+<span class="sourceLineNo">092</span>    public int getMaxAttempts() {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      return maxAttempts;<a name="line.93"></a>
 <span class="sourceLineNo">094</span>    }<a name="line.94"></a>
 <span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public TimeUnit getTimeUnit() {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      return timeUnit;<a name="line.97"></a>
+<span class="sourceLineNo">096</span>    public long getMaxSleepTime() {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      return maxSleepTime;<a name="line.97"></a>
 <span class="sourceLineNo">098</span>    }<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>    public BackoffPolicy getBackoffPolicy() {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      return backoffPolicy;<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    public long getSleepInterval() {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      return sleepInterval;<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>   * Policy for calculating sleeping intervals between retry attempts<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  public static class BackoffPolicy {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      return config.getSleepInterval();<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>  public static class ExponentialBackoffPolicy extends BackoffPolicy {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    @Override<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      long backoffTime = (long) (config.getSleepInterval() * Math.pow(2, attempts));<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      return backoffTime;<a name="line.118"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>    public TimeUnit getTimeUnit() {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      return timeUnit;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>    public BackoffPolicy getBackoffPolicy() {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      return backoffPolicy;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    }<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * Policy for calculating sleeping intervals between retry attempts<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public static class BackoffPolicy {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      return config.getSleepInterval();<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    }<a name="line.119"></a>
 <span class="sourceLineNo">120</span>  }<a name="line.120"></a>
 <span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static class ExponentialBackoffPolicyWithLimit extends ExponentialBackoffPolicy {<a name="line.122"></a>
+<span class="sourceLineNo">122</span>  public static class ExponentialBackoffPolicy extends BackoffPolicy {<a name="line.122"></a>
 <span class="sourceLineNo">123</span>    @Override<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      long backoffTime = super.getBackoffTime(config, attempts);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      return config.getMaxSleepTime() &gt; 0 ? Math.min(backoffTime, config.getMaxSleepTime()) : backoffTime;<a name="line.126"></a>
+<span class="sourceLineNo">125</span>      long backoffTime = (long) (config.getSleepInterval() * Math.pow(2, attempts));<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      return backoffTime;<a name="line.126"></a>
 <span class="sourceLineNo">127</span>    }<a name="line.127"></a>
 <span class="sourceLineNo">128</span>  }<a name="line.128"></a>
 <span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static final Logger LOG = LoggerFactory.getLogger(RetryCounter.class);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private RetryConfig retryConfig;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private int attempts;<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  public RetryCounter(int maxAttempts, long sleepInterval, TimeUnit timeUnit) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    this(new RetryConfig(maxAttempts, sleepInterval, -1, timeUnit, new ExponentialBackoffPolicy()));<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>  public RetryCounter(RetryConfig retryConfig) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    this.attempts = 0;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    this.retryConfig = retryConfig;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  public int getMaxAttempts() {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    return retryConfig.getMaxAttempts();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  }<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>  /**<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * Sleep for a back off time as supplied by the backoff policy, and increases the attempts<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @throws InterruptedException<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   */<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public void sleepUntilNextRetry() throws InterruptedException {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    int attempts = getAttemptTimes();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    long sleepTime = retryConfig.backoffPolicy.getBackoffTime(retryConfig, attempts);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    if (LOG.isTraceEnabled()) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      LOG.trace("Sleeping " + sleepTime + "ms before retry #" + attempts + "...");<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    retryConfig.getTimeUnit().sleep(sleepTime);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    useRetry();<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 boolean shouldRetry() {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return attempts &lt; retryConfig.getMaxAttempts();<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public void useRetry() {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    attempts++;<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>  public boolean isRetry() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    return attempts &gt; 0;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public int getAttemptTimes() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    return attempts;<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">130</span>  public static class ExponentialBackoffPolicyWithLimit extends ExponentialBackoffPolicy {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    @Override<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      long backoffTime = super.getBackoffTime(config, attempts);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      return config.getMaxSleepTime() &gt; 0 ? Math.min(backoffTime, config.getMaxSleepTime()) : backoffTime;<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>  private static final Logger LOG = LoggerFactory.getLogger(RetryCounter.class);<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private RetryConfig retryConfig;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private int attempts;<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  public RetryCounter(int maxAttempts, long sleepInterval, TimeUnit timeUnit) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    this(new RetryConfig(maxAttempts, sleepInterval, -1, timeUnit, new ExponentialBackoffPolicy()));<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 RetryCounter(RetryConfig retryConfig) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    this.attempts = 0;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    this.retryConfig = retryConfig;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public int getMaxAttempts() {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    return retryConfig.getMaxAttempts();<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>   * Sleep for a back off time as supplied by the backoff policy, and increases the attempts<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * @throws InterruptedException<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   */<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  public void sleepUntilNextRetry() throws InterruptedException {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    int attempts = getAttemptTimes();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    long sleepTime = getBackoffTime();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    LOG.trace("Sleeping {} ms before retry #{}...", sleepTime, attempts);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    retryConfig.getTimeUnit().sleep(sleepTime);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    useRetry();<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>  public boolean shouldRetry() {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    return attempts &lt; retryConfig.getMaxAttempts();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public void useRetry() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    attempts++;<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>  public boolean isRetry() {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return attempts &gt; 0;<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>  public int getAttemptTimes() {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    return attempts;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  public long getBackoffTime() {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    return this.retryConfig.backoffPolicy.getBackoffTime(this.retryConfig, getAttemptTimes());<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>  public long getBackoffTimeAndIncrementAttempts() {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    long backoffTime = getBackoffTime();<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    useRetry();<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    return backoffTime;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>}<a name="line.193"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.html
index dcc1cc1..6be6b66 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounter.html
@@ -32,157 +32,173 @@
 <span class="sourceLineNo">024</span>import org.slf4j.Logger;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.slf4j.LoggerFactory;<a name="line.25"></a>
 <span class="sourceLineNo">026</span><a name="line.26"></a>
-<span class="sourceLineNo">027</span>@InterfaceAudience.Private<a name="line.27"></a>
-<span class="sourceLineNo">028</span>public class RetryCounter {<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>  /**<a name="line.30"></a>
-<span class="sourceLineNo">031</span>   *  Configuration for a retry counter<a name="line.31"></a>
-<span class="sourceLineNo">032</span>   */<a name="line.32"></a>
-<span class="sourceLineNo">033</span>  public static class RetryConfig {<a name="line.33"></a>
-<span class="sourceLineNo">034</span>    private int maxAttempts;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>    private long sleepInterval;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>    private long maxSleepTime;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>    private TimeUnit timeUnit;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>    private BackoffPolicy backoffPolicy;<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>    private static final BackoffPolicy DEFAULT_BACKOFF_POLICY = new ExponentialBackoffPolicy();<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>    public RetryConfig() {<a name="line.42"></a>
-<span class="sourceLineNo">043</span>      maxAttempts    = 1;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>      sleepInterval = 1000;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>      maxSleepTime  = -1;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>      timeUnit = TimeUnit.MILLISECONDS;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>      backoffPolicy = DEFAULT_BACKOFF_POLICY;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    }<a name="line.48"></a>
+<span class="sourceLineNo">027</span>/**<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * Operation retry accounting.<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * Use to calculate wait period, {@link #getBackoffTimeAndIncrementAttempts()}}, or for performing<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * wait, {@link #sleepUntilNextRetry()}, in accordance with a {@link RetryConfig}, initial<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * settings, and a Retry Policy, (See org.apache.hadoop.io.retry.RetryPolicy).<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * Like &lt;a href=https://github.com/rholder/guava-retrying&gt;guava-retrying&lt;/a&gt;.<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @since 0.92.0<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see RetryCounterFactory<a name="line.34"></a>
+<span class="sourceLineNo">035</span> */<a name="line.35"></a>
+<span class="sourceLineNo">036</span>@InterfaceAudience.Private<a name="line.36"></a>
+<span class="sourceLineNo">037</span>public class RetryCounter {<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  /**<a name="line.38"></a>
+<span class="sourceLineNo">039</span>   *  Configuration for a retry counter<a name="line.39"></a>
+<span class="sourceLineNo">040</span>   */<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  public static class RetryConfig {<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    private int maxAttempts;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    private long sleepInterval;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>    private long maxSleepTime;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>    private TimeUnit timeUnit;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>    private BackoffPolicy backoffPolicy;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>    private static final BackoffPolicy DEFAULT_BACKOFF_POLICY = new ExponentialBackoffPolicy();<a name="line.48"></a>
 <span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>    public RetryConfig(int maxAttempts, long sleepInterval, long maxSleepTime,<a name="line.50"></a>
-<span class="sourceLineNo">051</span>        TimeUnit timeUnit, BackoffPolicy backoffPolicy) {<a name="line.51"></a>
-<span class="sourceLineNo">052</span>      this.maxAttempts = maxAttempts;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>      this.sleepInterval = sleepInterval;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>      this.maxSleepTime = maxSleepTime;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>      this.timeUnit = timeUnit;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>      this.backoffPolicy = backoffPolicy;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    }<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>    public RetryConfig setBackoffPolicy(BackoffPolicy backoffPolicy) {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>      this.backoffPolicy = backoffPolicy;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      return this;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    }<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>    public RetryConfig setMaxAttempts(int maxAttempts) {<a name="line.64"></a>
-<span class="sourceLineNo">065</span>      this.maxAttempts = maxAttempts;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      return this;<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>    public RetryConfig setMaxSleepTime(long maxSleepTime) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      this.maxSleepTime = maxSleepTime;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      return this;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    }<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>    public RetryConfig setSleepInterval(long sleepInterval) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      this.sleepInterval = sleepInterval;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      return this;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    }<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public RetryConfig setTimeUnit(TimeUnit timeUnit) {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      this.timeUnit = timeUnit;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return this;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public int getMaxAttempts() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      return maxAttempts;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    public long getMaxSleepTime() {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      return maxSleepTime;<a name="line.89"></a>
+<span class="sourceLineNo">050</span>    public RetryConfig() {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>      maxAttempts    = 1;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>      sleepInterval = 1000;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>      maxSleepTime  = -1;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>      timeUnit = TimeUnit.MILLISECONDS;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>      backoffPolicy = DEFAULT_BACKOFF_POLICY;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    }<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>    public RetryConfig(int maxAttempts, long sleepInterval, long maxSleepTime,<a name="line.58"></a>
+<span class="sourceLineNo">059</span>        TimeUnit timeUnit, BackoffPolicy backoffPolicy) {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      this.maxAttempts = maxAttempts;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      this.sleepInterval = sleepInterval;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>      this.maxSleepTime = maxSleepTime;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>      this.timeUnit = timeUnit;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>      this.backoffPolicy = backoffPolicy;<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>    public RetryConfig setBackoffPolicy(BackoffPolicy backoffPolicy) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      this.backoffPolicy = backoffPolicy;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      return this;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    }<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>    public RetryConfig setMaxAttempts(int maxAttempts) {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      this.maxAttempts = maxAttempts;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      return this;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    }<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>    public RetryConfig setMaxSleepTime(long maxSleepTime) {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      this.maxSleepTime = maxSleepTime;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      return this;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>    public RetryConfig setSleepInterval(long sleepInterval) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      this.sleepInterval = sleepInterval;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      return this;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    }<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>    public RetryConfig setTimeUnit(TimeUnit timeUnit) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      this.timeUnit = timeUnit;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      return this;<a name="line.89"></a>
 <span class="sourceLineNo">090</span>    }<a name="line.90"></a>
 <span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    public long getSleepInterval() {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      return sleepInterval;<a name="line.93"></a>
+<span class="sourceLineNo">092</span>    public int getMaxAttempts() {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      return maxAttempts;<a name="line.93"></a>
 <span class="sourceLineNo">094</span>    }<a name="line.94"></a>
 <span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public TimeUnit getTimeUnit() {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      return timeUnit;<a name="line.97"></a>
+<span class="sourceLineNo">096</span>    public long getMaxSleepTime() {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      return maxSleepTime;<a name="line.97"></a>
 <span class="sourceLineNo">098</span>    }<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>    public BackoffPolicy getBackoffPolicy() {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      return backoffPolicy;<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    public long getSleepInterval() {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      return sleepInterval;<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>   * Policy for calculating sleeping intervals between retry attempts<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  public static class BackoffPolicy {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      return config.getSleepInterval();<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>  public static class ExponentialBackoffPolicy extends BackoffPolicy {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    @Override<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      long backoffTime = (long) (config.getSleepInterval() * Math.pow(2, attempts));<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      return backoffTime;<a name="line.118"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>    public TimeUnit getTimeUnit() {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      return timeUnit;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>    public BackoffPolicy getBackoffPolicy() {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      return backoffPolicy;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    }<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * Policy for calculating sleeping intervals between retry attempts<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public static class BackoffPolicy {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      return config.getSleepInterval();<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    }<a name="line.119"></a>
 <span class="sourceLineNo">120</span>  }<a name="line.120"></a>
 <span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static class ExponentialBackoffPolicyWithLimit extends ExponentialBackoffPolicy {<a name="line.122"></a>
+<span class="sourceLineNo">122</span>  public static class ExponentialBackoffPolicy extends BackoffPolicy {<a name="line.122"></a>
 <span class="sourceLineNo">123</span>    @Override<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      long backoffTime = super.getBackoffTime(config, attempts);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      return config.getMaxSleepTime() &gt; 0 ? Math.min(backoffTime, config.getMaxSleepTime()) : backoffTime;<a name="line.126"></a>
+<span class="sourceLineNo">125</span>      long backoffTime = (long) (config.getSleepInterval() * Math.pow(2, attempts));<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      return backoffTime;<a name="line.126"></a>
 <span class="sourceLineNo">127</span>    }<a name="line.127"></a>
 <span class="sourceLineNo">128</span>  }<a name="line.128"></a>
 <span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static final Logger LOG = LoggerFactory.getLogger(RetryCounter.class);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private RetryConfig retryConfig;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private int attempts;<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  public RetryCounter(int maxAttempts, long sleepInterval, TimeUnit timeUnit) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    this(new RetryConfig(maxAttempts, sleepInterval, -1, timeUnit, new ExponentialBackoffPolicy()));<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>  public RetryCounter(RetryConfig retryConfig) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    this.attempts = 0;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    this.retryConfig = retryConfig;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  public int getMaxAttempts() {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    return retryConfig.getMaxAttempts();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  }<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>  /**<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * Sleep for a back off time as supplied by the backoff policy, and increases the attempts<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @throws InterruptedException<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   */<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public void sleepUntilNextRetry() throws InterruptedException {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    int attempts = getAttemptTimes();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    long sleepTime = retryConfig.backoffPolicy.getBackoffTime(retryConfig, attempts);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    if (LOG.isTraceEnabled()) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      LOG.trace("Sleeping " + sleepTime + "ms before retry #" + attempts + "...");<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    retryConfig.getTimeUnit().sleep(sleepTime);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    useRetry();<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 boolean shouldRetry() {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return attempts &lt; retryConfig.getMaxAttempts();<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public void useRetry() {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    attempts++;<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>  public boolean isRetry() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    return attempts &gt; 0;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public int getAttemptTimes() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    return attempts;<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">130</span>  public static class ExponentialBackoffPolicyWithLimit extends ExponentialBackoffPolicy {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    @Override<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    public long getBackoffTime(RetryConfig config, int attempts) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      long backoffTime = super.getBackoffTime(config, attempts);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      return config.getMaxSleepTime() &gt; 0 ? Math.min(backoffTime, config.getMaxSleepTime()) : backoffTime;<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>  private static final Logger LOG = LoggerFactory.getLogger(RetryCounter.class);<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private RetryConfig retryConfig;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private int attempts;<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  public RetryCounter(int maxAttempts, long sleepInterval, TimeUnit timeUnit) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    this(new RetryConfig(maxAttempts, sleepInterval, -1, timeUnit, new ExponentialBackoffPolicy()));<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 RetryCounter(RetryConfig retryConfig) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    this.attempts = 0;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    this.retryConfig = retryConfig;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public int getMaxAttempts() {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    return retryConfig.getMaxAttempts();<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>   * Sleep for a back off time as supplied by the backoff policy, and increases the attempts<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * @throws InterruptedException<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   */<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  public void sleepUntilNextRetry() throws InterruptedException {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    int attempts = getAttemptTimes();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    long sleepTime = getBackoffTime();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    LOG.trace("Sleeping {} ms before retry #{}...", sleepTime, attempts);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    retryConfig.getTimeUnit().sleep(sleepTime);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    useRetry();<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>  public boolean shouldRetry() {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    return attempts &lt; retryConfig.getMaxAttempts();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public void useRetry() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    attempts++;<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>  public boolean isRetry() {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return attempts &gt; 0;<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>  public int getAttemptTimes() {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    return attempts;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  public long getBackoffTime() {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    return this.retryConfig.backoffPolicy.getBackoffTime(this.retryConfig, getAttemptTimes());<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>  public long getBackoffTimeAndIncrementAttempts() {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    long backoffTime = getBackoffTime();<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    useRetry();<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    return backoffTime;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>}<a name="line.193"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/downloads.html
----------------------------------------------------------------------
diff --git a/downloads.html b/downloads.html
new file mode 100644
index 0000000..2775b1f
--- /dev/null
+++ b/downloads.html
@@ -0,0 +1,382 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia Site Renderer 1.6 
+ | Rendered using Apache Maven Fluido Skin 1.5-HBASE
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Apache HBase &#x2013; Apache HBase Downloads</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.5-HBASE.min.js"></script>
+
+                          
+        
+<meta name="viewport" content="width=device-width, initial-scale=1.0"></meta>
+                      
+        
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap-responsive.min.css"/>
+                      
+        
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.9.1/styles/github.min.css"/>
+                      
+        
+<link rel="stylesheet" href="css/site.css"/>
+                      
+        
+<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.9.1/highlight.min.js"></script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container">
+                <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
+                  <span class="icon-bar"></span>
+                  <span class="icon-bar"></span>
+                  <span class="icon-bar"></span>
+                </a>
+                <div class="nav-collapse">
+                            
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache HBase Project <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="Overview">Overview</a>
+</li>
+                  
+                      <li>      <a href="license.html"  title="License">License</a>
+</li>
+                  
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
+</li>
+                  
+                      <li>      <a href="coc.html"  title="Code Of Conduct">Code Of Conduct</a>
+</li>
+                  
+                      <li>      <a href="http://blogs.apache.org/hbase/"  title="Blog">Blog</a>
+</li>
+                  
+                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="team-list.html"  title="Team">Team</a>
+</li>
+                  
+                      <li>      <a href="https://reviews.apache.org/"  title="ReviewBoard">ReviewBoard</a>
+</li>
+                  
+                      <li>      <a href="sponsors.html"  title="Thanks">Thanks</a>
+</li>
+                  
+                      <li>      <a href="poweredbyhbase.html"  title="Powered by HBase">Powered by HBase</a>
+</li>
+                  
+                      <li>      <a href="resources.html"  title="Other resources">Other resources</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Information <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="project-summary.html"  title="Project Summary">Project Summary</a>
+</li>
+                  
+                      <li>      <a href="dependency-info.html"  title="Dependency Information">Dependency Information</a>
+</li>
+                  
+                      <li>      <a href="team-list.html"  title="Team">Team</a>
+</li>
+                  
+                      <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                  
+                      <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                  
+                      <li>      <a href="dependency-management.html"  title="Dependency Management">Dependency Management</a>
+</li>
+                  
+                      <li>      <a href="dependencies.html"  title="Dependencies">Dependencies</a>
+</li>
+                  
+                      <li>      <a href="dependency-convergence.html"  title="Dependency Convergence">Dependency Convergence</a>
+</li>
+                  
+                      <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                  
+                      <li>      <a href="plugin-management.html"  title="Plugin Management">Plugin Management</a>
+</li>
+                  
+                      <li>      <a href="plugins.html"  title="Plugins">Plugins</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation and API <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="book.html"  target="_blank" title="Reference Guide">Reference Guide</a>
+</li>
+                  
+                      <li>      <a href="apache_hbase_reference_guide.pdf"  target="_blank" title="Reference Guide (PDF)">Reference Guide (PDF)</a>
+</li>
+                  
+                      <li>      <a href="book.html#quickstart"  target="_blank" title="Getting Started">Getting Started</a>
+</li>
+                  
+                      <li>      <a href="apidocs/index.html"  target="_blank" title="User API">User API</a>
+</li>
+                  
+                      <li>      <a href="testapidocs/index.html"  target="_blank" title="User API (Test)">User API (Test)</a>
+</li>
+                  
+                      <li>      <a href="https://hbase.apache.org/2.0/devapidocs/index.html"  target="_blank" title="Developer API">Developer API</a>
+</li>
+                  
+                      <li>      <a href="https://hbase.apache.org/2.0/testdevapidocs/index.html"  target="_blank" title="Developer API (Test)">Developer API (Test)</a>
+</li>
+                  
+                      <li>      <a href="http://abloz.com/hbase/book.html"  target="_blank" title="中文参考指南(单页)">中文参考指南(单页)</a>
+</li>
+                  
+                      <li>      <a href="book.html#faq"  target="_blank" title="FAQ">FAQ</a>
+</li>
+                  
+                      <li>      <a href="book.html#other.info"  target="_blank" title="Videos/Presentations">Videos/Presentations</a>
+</li>
+                  
+                      <li>      <a href="http://wiki.apache.org/hadoop/Hbase"  target="_blank" title="Wiki">Wiki</a>
+</li>
+                  
+                      <li>      <a href="acid-semantics.html"  target="_blank" title="ACID Semantics">ACID Semantics</a>
+</li>
+                  
+                      <li>      <a href="book.html#arch.bulk.load"  target="_blank" title="Bulk Loads">Bulk Loads</a>
+</li>
+                  
+                      <li>      <a href="metrics.html"  target="_blank" title="Metrics">Metrics</a>
+</li>
+                  
+                      <li>      <a href="book.html#replication"  target="_blank" title="Cluster replication">Cluster replication</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href=""  title="2.0 Documentation">2.0 Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="2.0/apidocs/index.html"  target="_blank" title="API">API</a>
+</li>
+                                  <li>      <a href="2.0/book.html"  target="_blank" title="Ref Guide (single-page)">Ref Guide (single-page)</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href=""  title="1.2 Documentation">1.2 Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="1.2/apidocs/index.html"  target="_blank" title="API">API</a>
+</li>
+                                  <li>      <a href="1.2/xref/index.html"  target="_blank" title="X-Ref">X-Ref</a>
+</li>
+                                  <li>      <a href="1.2/book.html"  target="_blank" title="Ref Guide (single-page)">Ref Guide (single-page)</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/"  target="_blank" title="Apache Software Foundation">Apache Software Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  target="_blank" title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  target="_blank" title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                          <div id="search-form" class="navbar-search pull-right">
+      <script type="text/javascript">
+      var cx = '000385458301414556862:sq1bb0xugjg';
+
+      (function() {
+        var gcse = document.createElement('script'); gcse.type = 'text/javascript'; gcse.async = true;
+        gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//cse.google.com/cse.js?cx=' + cx;
+        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s);
+      })();
+
+    </script>
+    <gcse:search></gcse:search>
+  </div>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                          <a href="./" id="bannerLeft">
+                                                                                                <img src=""  alt=""/>
+                </a>
+                      </div>
+        <div class="pull-right">                                <a href="./" id="bannerRight">
+                                                                                                <img src="images/hbase_logo_with_orca_large.png"  alt="Apache HBase"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+            
+                
+                    
+      
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); 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
+"AS IS" 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. -->
+  
+<div class="section">
+<h2><a name="Downloads"></a>Downloads</h2>
+  
+<p>The below table lists mirrored release artifacts and their associated hashes and signatures
+  available ONLY at apache.org. The keys used to sign releases can be found in our published
+  <a class="externalLink" href="http://www.apache.org/dist/hbase/KEYS">KEYS</a> file. See
+  <a class="externalLink" href="https://www.apache.org/dyn/closer.cgi#verify">Verify The Integrity Of The Files</a> for
+  how to verify your mirrored downloads.
+  </p>
+  
+<div class="section">
+<h2><a name="Releases"></a>Releases</h2>
+  
+<table border="0" class="table table-striped">
+    
+<tr class="a">
+      
+<th>Version</th>
+      
+<th>Release Date</th>
+      
+<th>Compatiblity Report</th>
+      
+<th>Release Notes</th>
+      
+<th>Commit</th>
+      
+<th>Download</th>
+    </tr>
+    
+<tr class="b">
+      
+<td style="test-align: left">
+        2.0.0
+      </td>
+      
+<td style="test-align: left">
+        2018/04/29
+      </td>
+      
+<td style="test-align: left">
+        <a class="externalLink" href="http://apache.org/dist/hbase/2.0.0/compatibiliity_report_1.2.6vs2.0.0.html">1.2.6 vs 2.0.0</a>
+      </td>
+      
+<td style="test-align: left">
+        <a class="externalLink" href="http://apache.org/dist/hbase/2.0.0/RELEASENOTES.md">2.0.0 Release Notes</a>
+      </td>
+      
+<td style="test-align: left">
+        <a class="externalLink" href="https://git-wip-us.apache.org/repos/asf?p=hbase.git;a=commit;h=7483b111e4da77adbfc8062b3b22cbe7c2cb91c1">7483b111e4da77adbfc8062b3b22cbe7c2cb91c1</a>
+      </td>
+      
+<td style="test-align: left">
+        <a class="externalLink" href="http://www.apache.org/dyn/closer.lua/hbase/2.0.0/hbase-2.0.0-src.tar.gz"></a> (<a class="externalLink" href="http://apache.org/dist/hbase/2.0.0/hbase-2.0.0-src.tar.gz.sha512">sha512</a> <a class="externalLink" href="http://apache.org/dist/hbase/2.0.0/hbase-2.0.0-src.tar.gz.asc">asc</a>) <br />
+        <a class="externalLink" href="http://www.apache.org/dyn/closer.lua/hbase/2.0.0/hbase-2.0.0-bin.tar.gz"></a> (<a class="externalLink" href="http://apache.org/dist/hbase/2.0.0/hbase-2.0.0-bin.tar.gz.sha512">sha512</a> <a class="externalLink" href="http://apache.org/dist/hbase/2.0.0/hbase-2.0.0-bin.tar.gz.asc">asc</a>)
+      </td>
+    </tr>
+  </table>
+  </div>
+
+
+  
+<p>If you are looking for an old release that is not present here or on the
+  mirror, check the <a class="externalLink" href="http://archive.apache.org/dist/hbase/">Apache Archive</a>.
+  </p>
+</div>
+
+
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                                      <p >Copyright &copy;                    2007&#x2013;2018
+                        <a href="https://www.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
+            </p>
+                </div>
+
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+                </div>
+    </footer>
+        </body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 50c9281..4d49d4e 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -63,7 +63,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -331,7 +331,7 @@ for more details.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 777d7a8..683626f 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -304,7 +304,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
 <h2><a name="Download"></a>Download</h2>
     
 <p>
-    Click <b><a class="externalLink" href="http://www.apache.org/dyn/closer.lua/hbase/">here</a></b> to download Apache HBase&#x2122;.
+    Click <b><a href="downloads.html">here</a></b> to download Apache HBase&#x2122;.
     </p>
     </div>
     
@@ -409,7 +409,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index bf83f44..8783c1f 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -291,7 +291,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 2770923..608a556 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -288,7 +288,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index edc79e7..85d1bab 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -491,7 +491,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index a2aa725..b26b9e5 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -341,7 +341,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 8520fcf..8b70543 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -63,7 +63,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -459,7 +459,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 32e01b3..233f7c8 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -63,7 +63,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -440,7 +440,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index 487fd4d..e11774a 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="20180428" />
+    <meta name="Date-Revision-yyyymmdd" content="20180501" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -440,7 +440,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-05-01</li>
             </p>
                 </div>
 


[11/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html
index c546fc5..a4146f7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html
@@ -45,308 +45,311 @@
 <span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.master.MasterFileSystem;<a name="line.37"></a>
 <span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.master.MasterServices;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.procedure2.util.StringUtils;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.zookeeper.KeeperException;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.slf4j.Logger;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.LoggerFactory;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>/**<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * Store Region State to hbase:meta table.<a name="line.54"></a>
-<span class="sourceLineNo">055</span> */<a name="line.55"></a>
-<span class="sourceLineNo">056</span>@InterfaceAudience.Private<a name="line.56"></a>
-<span class="sourceLineNo">057</span>public class RegionStateStore {<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  private static final Logger LOG = LoggerFactory.getLogger(RegionStateStore.class);<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private final MasterServices master;<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  public RegionStateStore(final MasterServices master) {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    this.master = master;<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>  public interface RegionStateVisitor {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    void visitRegionState(RegionInfo regionInfo, State state,<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      ServerName regionLocation, ServerName lastHost, long openSeqNum);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  public void visitMeta(final RegionStateVisitor visitor) throws IOException {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    MetaTableAccessor.fullScanRegions(master.getConnection(), new MetaTableAccessor.Visitor() {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      final boolean isDebugEnabled = LOG.isDebugEnabled();<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>      @Override<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      public boolean visit(final Result r) throws IOException {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>        if (r !=  null &amp;&amp; !r.isEmpty()) {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>          long st = 0;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>          if (LOG.isTraceEnabled()) {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>            st = System.currentTimeMillis();<a name="line.83"></a>
-<span class="sourceLineNo">084</span>          }<a name="line.84"></a>
-<span class="sourceLineNo">085</span>          visitMetaEntry(visitor, r);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>          if (LOG.isTraceEnabled()) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>            long et = System.currentTimeMillis();<a name="line.87"></a>
-<span class="sourceLineNo">088</span>            LOG.trace("[T] LOAD META PERF " + StringUtils.humanTimeDiff(et - st));<a name="line.88"></a>
-<span class="sourceLineNo">089</span>          }<a name="line.89"></a>
-<span class="sourceLineNo">090</span>        } else if (isDebugEnabled) {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>          LOG.debug("NULL result from meta - ignoring but this is strange.");<a name="line.91"></a>
-<span class="sourceLineNo">092</span>        }<a name="line.92"></a>
-<span class="sourceLineNo">093</span>        return 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>  }<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  private void visitMetaEntry(final RegionStateVisitor visitor, final Result result)<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      throws IOException {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    final RegionLocations rl = MetaTableAccessor.getRegionLocations(result);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    if (rl == null) return;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>    final HRegionLocation[] locations = rl.getRegionLocations();<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    if (locations == null) return;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>    for (int i = 0; i &lt; locations.length; ++i) {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      final HRegionLocation hrl = locations[i];<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      if (hrl == null) continue;<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>      final RegionInfo regionInfo = hrl.getRegion();<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      if (regionInfo == null) continue;<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>      final int replicaId = regionInfo.getReplicaId();<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      final State state = getRegionState(result, replicaId);<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>      final ServerName lastHost = hrl.getServerName();<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      final ServerName regionLocation = getRegionServer(result, replicaId);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      final long openSeqNum = -1;<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>      // TODO: move under trace, now is visible for debugging<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      LOG.info("Load hbase:meta entry region={}, regionState={}, lastHost={}, " +<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          "regionLocation={}", regionInfo.getEncodedName(), state, lastHost, regionLocation);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      visitor.visitRegionState(regionInfo, state, regionLocation, lastHost, openSeqNum);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public void updateRegionLocation(RegionStates.RegionStateNode regionStateNode)<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      throws IOException {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    if (regionStateNode.getRegionInfo().isMetaRegion()) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      updateMetaLocation(regionStateNode.getRegionInfo(), regionStateNode.getRegionLocation());<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    } else {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      long openSeqNum = regionStateNode.getState() == State.OPEN ?<a name="line.132"></a>
-<span class="sourceLineNo">133</span>          regionStateNode.getOpenSeqNum() : HConstants.NO_SEQNUM;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      updateUserRegionLocation(regionStateNode.getRegionInfo(), regionStateNode.getState(),<a name="line.134"></a>
-<span class="sourceLineNo">135</span>          regionStateNode.getRegionLocation(), regionStateNode.getLastHost(), openSeqNum,<a name="line.135"></a>
-<span class="sourceLineNo">136</span>          regionStateNode.getProcedure().getProcId());<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>  private void updateMetaLocation(final RegionInfo regionInfo, final ServerName serverName)<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      throws IOException {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    try {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      MetaTableLocator.setMetaLocation(master.getZooKeeper(), serverName,<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        regionInfo.getReplicaId(), State.OPEN);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    } catch (KeeperException e) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      throw new IOException(e);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    }<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private void updateUserRegionLocation(final RegionInfo regionInfo, final State state,<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      final ServerName regionLocation, final ServerName lastHost, final long openSeqNum,<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      final long pid)<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      throws IOException {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    long time = EnvironmentEdgeManager.currentTime();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    final int replicaId = regionInfo.getReplicaId();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    final Put put = new Put(MetaTableAccessor.getMetaKeyForRegion(regionInfo), time);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    MetaTableAccessor.addRegionInfo(put, regionInfo);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    final StringBuilder info =<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      new StringBuilder("pid=").append(pid).append(" updating hbase:meta row=")<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        .append(regionInfo.getEncodedName()).append(", regionState=").append(state);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    if (openSeqNum &gt;= 0) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      Preconditions.checkArgument(state == State.OPEN &amp;&amp; regionLocation != null,<a name="line.162"></a>
-<span class="sourceLineNo">163</span>          "Open region should be on a server");<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      MetaTableAccessor.addLocation(put, regionLocation, openSeqNum, replicaId);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      // only update replication barrier for default replica<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      if (regionInfo.getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID &amp;&amp;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        hasGlobalReplicationScope(regionInfo.getTable())) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        MetaTableAccessor.addReplicationBarrier(put, openSeqNum);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        info.append(", repBarrier=").append(openSeqNum);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      }<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      info.append(", openSeqNum=").append(openSeqNum);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      info.append(", regionLocation=").append(regionLocation);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    } else if (regionLocation != null &amp;&amp; !regionLocation.equals(lastHost)) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      // Ideally, if no regionLocation, write null to the hbase:meta but this will confuse clients<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      // currently; they want a server to hit. TODO: Make clients wait if no location.<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          .setRow(put.getRow())<a name="line.177"></a>
-<span class="sourceLineNo">178</span>          .setFamily(HConstants.CATALOG_FAMILY)<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          .setQualifier(getServerNameColumn(replicaId))<a name="line.179"></a>
-<span class="sourceLineNo">180</span>          .setTimestamp(put.getTimestamp())<a name="line.180"></a>
-<span class="sourceLineNo">181</span>          .setType(Cell.Type.Put)<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          .setValue(Bytes.toBytes(regionLocation.getServerName()))<a name="line.182"></a>
-<span class="sourceLineNo">183</span>          .build());<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      info.append(", regionLocation=").append(regionLocation);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        .setRow(put.getRow())<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        .setFamily(HConstants.CATALOG_FAMILY)<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        .setQualifier(getStateColumn(replicaId))<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        .setTimestamp(put.getTimestamp())<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        .setType(Cell.Type.Put)<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        .setValue(Bytes.toBytes(state.name()))<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        .build());<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    LOG.info(info.toString());<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    updateRegionLocation(regionInfo, state, put);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>  }<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  private void updateRegionLocation(RegionInfo regionInfo, State state, Put put)<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      throws IOException {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    try (Table table = master.getConnection().getTable(TableName.META_TABLE_NAME)) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      table.put(put);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    } catch (IOException e) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      // TODO: Revist!!!! Means that if a server is loaded, then we will abort our host!<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      // In tests we abort the Master!<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      String msg = String.format("FAILED persisting region=%s state=%s",<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        regionInfo.getShortNameToLog(), state);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      LOG.error(msg, e);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      master.abort(msg, e);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      throw e;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  }<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private long getOpenSeqNumForParentRegion(RegionInfo region) throws IOException {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    MasterFileSystem mfs = master.getMasterFileSystem();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    long maxSeqId =<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        WALSplitter.getMaxRegionSequenceId(mfs.getFileSystem(), mfs.getRegionDir(region));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    return maxSeqId &gt; 0 ? maxSeqId + 1 : HConstants.NO_SEQNUM;<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>  // ============================================================================================<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  //  Update Region Splitting State helpers<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  // ============================================================================================<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  public void splitRegion(RegionInfo parent, RegionInfo hriA, RegionInfo hriB,<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      ServerName serverName) throws IOException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    TableDescriptor htd = getTableDescriptor(parent.getTable());<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    long parentOpenSeqNum = HConstants.NO_SEQNUM;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    if (htd.hasGlobalReplicationScope()) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      parentOpenSeqNum = getOpenSeqNumForParentRegion(parent);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    }<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    MetaTableAccessor.splitRegion(master.getConnection(), parent, parentOpenSeqNum, hriA, hriB,<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      serverName, getRegionReplication(htd));<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>  //  Update Region Merging State helpers<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  // ============================================================================================<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  public void mergeRegions(RegionInfo child, RegionInfo hriA, RegionInfo hriB,<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      ServerName serverName) throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    TableDescriptor htd = getTableDescriptor(child.getTable());<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    long regionAOpenSeqNum = -1L;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    long regionBOpenSeqNum = -1L;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (htd.hasGlobalReplicationScope()) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      regionAOpenSeqNum = getOpenSeqNumForParentRegion(hriA);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      regionBOpenSeqNum = getOpenSeqNumForParentRegion(hriB);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    MetaTableAccessor.mergeRegions(master.getConnection(), child, hriA, regionAOpenSeqNum, hriB,<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      regionBOpenSeqNum, serverName, getRegionReplication(htd));<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>  // ============================================================================================<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  //  Delete Region State helpers<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  // ============================================================================================<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  public void deleteRegion(final RegionInfo regionInfo) throws IOException {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    deleteRegions(Collections.singletonList(regionInfo));<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>  public void deleteRegions(final List&lt;RegionInfo&gt; regions) throws IOException {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    MetaTableAccessor.deleteRegions(master.getConnection(), regions);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>  // ==========================================================================<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  //  Table Descriptors helpers<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  // ==========================================================================<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  private boolean hasGlobalReplicationScope(TableName tableName) throws IOException {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    return hasGlobalReplicationScope(getTableDescriptor(tableName));<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>  private boolean hasGlobalReplicationScope(TableDescriptor htd) {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    return htd != null ? htd.hasGlobalReplicationScope() : false;<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>  private int getRegionReplication(TableDescriptor htd) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    return htd != null ? htd.getRegionReplication() : 1;<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>  private TableDescriptor getTableDescriptor(TableName tableName) throws IOException {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return master.getTableDescriptors().get(tableName);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  // ==========================================================================<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  //  Server Name<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>  /**<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * Returns the {@link ServerName} from catalog table {@link Result}<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * where the region is transitioning. It should be the same as<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * {@link MetaTableAccessor#getServerName(Result,int)} if the server is at OPEN state.<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * @param r Result to pull the transitioning server name from<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * @return A ServerName instance or {@link MetaTableAccessor#getServerName(Result,int)}<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * if necessary fields not found or empty.<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   */<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  static ServerName getRegionServer(final Result r, int replicaId) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    final Cell cell = r.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        getServerNameColumn(replicaId));<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    if (cell == null || cell.getValueLength() == 0) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      RegionLocations locations = MetaTableAccessor.getRegionLocations(r);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      if (locations != null) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        HRegionLocation location = locations.getRegionLocation(replicaId);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        if (location != null) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          return location.getServerName();<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return null;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    return ServerName.parseServerName(Bytes.toString(cell.getValueArray(),<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      cell.getValueOffset(), cell.getValueLength()));<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>  private static byte[] getServerNameColumn(int replicaId) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    return replicaId == 0<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        ? HConstants.SERVERNAME_QUALIFIER<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        : Bytes.toBytes(HConstants.SERVERNAME_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.312"></a>
-<span class="sourceLineNo">313</span>          + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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>  //  Region State<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  // ==========================================================================<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  /**<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * Pull the region state from a catalog table {@link Result}.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   * @param r Result to pull the region state from<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   * @return the region state, or null if unknown.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  @VisibleForTesting<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  public static State getRegionState(final Result r, int replicaId) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    Cell cell = r.getColumnLatestCell(HConstants.CATALOG_FAMILY, getStateColumn(replicaId));<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    if (cell == null || cell.getValueLength() == 0) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      return null;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    return State.valueOf(Bytes.toString(cell.getValueArray(), cell.getValueOffset(),<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        cell.getValueLength()));<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>  private static byte[] getStateColumn(int replicaId) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    return replicaId == 0<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        ? HConstants.STATE_QUALIFIER<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        : Bytes.toBytes(HConstants.STATE_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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">040</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.procedure2.util.StringUtils;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.zookeeper.KeeperException;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.slf4j.Logger;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.slf4j.LoggerFactory;<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>/**<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * Store Region State to hbase:meta table.<a name="line.55"></a>
+<span class="sourceLineNo">056</span> */<a name="line.56"></a>
+<span class="sourceLineNo">057</span>@InterfaceAudience.Private<a name="line.57"></a>
+<span class="sourceLineNo">058</span>public class RegionStateStore {<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private static final Logger LOG = LoggerFactory.getLogger(RegionStateStore.class);<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private final MasterServices master;<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public RegionStateStore(final MasterServices master) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    this.master = master;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  }<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  public interface RegionStateVisitor {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    void visitRegionState(RegionInfo regionInfo, State state,<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      ServerName regionLocation, ServerName lastHost, long openSeqNum);<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  }<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  public void visitMeta(final RegionStateVisitor visitor) throws IOException {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    MetaTableAccessor.fullScanRegions(master.getConnection(), new MetaTableAccessor.Visitor() {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      final boolean isDebugEnabled = LOG.isDebugEnabled();<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>      @Override<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      public boolean visit(final Result r) throws IOException {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>        if (r !=  null &amp;&amp; !r.isEmpty()) {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>          long st = 0;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>          if (LOG.isTraceEnabled()) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>            st = System.currentTimeMillis();<a name="line.84"></a>
+<span class="sourceLineNo">085</span>          }<a name="line.85"></a>
+<span class="sourceLineNo">086</span>          visitMetaEntry(visitor, r);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>          if (LOG.isTraceEnabled()) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>            long et = System.currentTimeMillis();<a name="line.88"></a>
+<span class="sourceLineNo">089</span>            LOG.trace("[T] LOAD META PERF " + StringUtils.humanTimeDiff(et - st));<a name="line.89"></a>
+<span class="sourceLineNo">090</span>          }<a name="line.90"></a>
+<span class="sourceLineNo">091</span>        } else if (isDebugEnabled) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>          LOG.debug("NULL result from meta - ignoring but this is strange.");<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        }<a name="line.93"></a>
+<span class="sourceLineNo">094</span>        return 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><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  private void visitMetaEntry(final RegionStateVisitor visitor, final Result result)<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      throws IOException {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    final RegionLocations rl = MetaTableAccessor.getRegionLocations(result);<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    if (rl == null) return;<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>    final HRegionLocation[] locations = rl.getRegionLocations();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    if (locations == null) return;<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>    for (int i = 0; i &lt; locations.length; ++i) {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      final HRegionLocation hrl = locations[i];<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      if (hrl == null) continue;<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>      final RegionInfo regionInfo = hrl.getRegion();<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      if (regionInfo == null) continue;<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>      final int replicaId = regionInfo.getReplicaId();<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      final State state = getRegionState(result, replicaId);<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>      final ServerName lastHost = hrl.getServerName();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      final ServerName regionLocation = getRegionServer(result, replicaId);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      final long openSeqNum = -1;<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>      // TODO: move under trace, now is visible for debugging<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      LOG.info("Load hbase:meta entry region={}, regionState={}, lastHost={}, " +<a name="line.122"></a>
+<span class="sourceLineNo">123</span>          "regionLocation={}", regionInfo.getEncodedName(), state, lastHost, regionLocation);<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      visitor.visitRegionState(regionInfo, state, regionLocation, lastHost, openSeqNum);<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>  public void updateRegionLocation(RegionStates.RegionStateNode regionStateNode)<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      throws IOException {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    if (regionStateNode.getRegionInfo().isMetaRegion()) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      updateMetaLocation(regionStateNode.getRegionInfo(), regionStateNode.getRegionLocation());<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    } else {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      long openSeqNum = regionStateNode.getState() == State.OPEN ?<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          regionStateNode.getOpenSeqNum() : HConstants.NO_SEQNUM;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      updateUserRegionLocation(regionStateNode.getRegionInfo(), regionStateNode.getState(),<a name="line.135"></a>
+<span class="sourceLineNo">136</span>          regionStateNode.getRegionLocation(), regionStateNode.getLastHost(), openSeqNum,<a name="line.136"></a>
+<span class="sourceLineNo">137</span>          // The regionStateNode may have no procedure in a test scenario; allow for this.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>          regionStateNode.getProcedure() != null?<a name="line.138"></a>
+<span class="sourceLineNo">139</span>              regionStateNode.getProcedure().getProcId(): Procedure.NO_PROC_ID);<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>  private void updateMetaLocation(final RegionInfo regionInfo, final ServerName serverName)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      throws IOException {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    try {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      MetaTableLocator.setMetaLocation(master.getZooKeeper(), serverName,<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        regionInfo.getReplicaId(), State.OPEN);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    } catch (KeeperException e) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      throw new IOException(e);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private void updateUserRegionLocation(final RegionInfo regionInfo, final State state,<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      final ServerName regionLocation, final ServerName lastHost, final long openSeqNum,<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      final long pid)<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      throws IOException {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    long time = EnvironmentEdgeManager.currentTime();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    final int replicaId = regionInfo.getReplicaId();<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    final Put put = new Put(MetaTableAccessor.getMetaKeyForRegion(regionInfo), time);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    MetaTableAccessor.addRegionInfo(put, regionInfo);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    final StringBuilder info =<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      new StringBuilder("pid=").append(pid).append(" updating hbase:meta row=")<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        .append(regionInfo.getEncodedName()).append(", regionState=").append(state);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    if (openSeqNum &gt;= 0) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      Preconditions.checkArgument(state == State.OPEN &amp;&amp; regionLocation != null,<a name="line.165"></a>
+<span class="sourceLineNo">166</span>          "Open region should be on a server");<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      MetaTableAccessor.addLocation(put, regionLocation, openSeqNum, replicaId);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      // only update replication barrier for default replica<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      if (regionInfo.getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID &amp;&amp;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        hasGlobalReplicationScope(regionInfo.getTable())) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        MetaTableAccessor.addReplicationBarrier(put, openSeqNum);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        info.append(", repBarrier=").append(openSeqNum);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      }<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      info.append(", openSeqNum=").append(openSeqNum);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      info.append(", regionLocation=").append(regionLocation);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    } else if (regionLocation != null &amp;&amp; !regionLocation.equals(lastHost)) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      // Ideally, if no regionLocation, write null to the hbase:meta but this will confuse clients<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      // currently; they want a server to hit. TODO: Make clients wait if no location.<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.179"></a>
+<span class="sourceLineNo">180</span>          .setRow(put.getRow())<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          .setFamily(HConstants.CATALOG_FAMILY)<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          .setQualifier(getServerNameColumn(replicaId))<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          .setTimestamp(put.getTimestamp())<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          .setType(Cell.Type.Put)<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          .setValue(Bytes.toBytes(regionLocation.getServerName()))<a name="line.185"></a>
+<span class="sourceLineNo">186</span>          .build());<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      info.append(", regionLocation=").append(regionLocation);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        .setRow(put.getRow())<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        .setFamily(HConstants.CATALOG_FAMILY)<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        .setQualifier(getStateColumn(replicaId))<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        .setTimestamp(put.getTimestamp())<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        .setType(Cell.Type.Put)<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        .setValue(Bytes.toBytes(state.name()))<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        .build());<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    LOG.info(info.toString());<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    updateRegionLocation(regionInfo, state, put);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  }<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>  private void updateRegionLocation(RegionInfo regionInfo, State state, Put put)<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      throws IOException {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    try (Table table = master.getConnection().getTable(TableName.META_TABLE_NAME)) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      table.put(put);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    } catch (IOException e) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      // TODO: Revist!!!! Means that if a server is loaded, then we will abort our host!<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      // In tests we abort the Master!<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      String msg = String.format("FAILED persisting region=%s state=%s",<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        regionInfo.getShortNameToLog(), state);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      LOG.error(msg, e);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      master.abort(msg, e);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      throw e;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>  private long getOpenSeqNumForParentRegion(RegionInfo region) throws IOException {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    MasterFileSystem mfs = master.getMasterFileSystem();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    long maxSeqId =<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        WALSplitter.getMaxRegionSequenceId(mfs.getFileSystem(), mfs.getRegionDir(region));<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return maxSeqId &gt; 0 ? maxSeqId + 1 : HConstants.NO_SEQNUM;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  // ============================================================================================<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  //  Update Region Splitting State helpers<a name="line.224"></a>
+<span class="sourceLineNo">225</span>  // ============================================================================================<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  public void splitRegion(RegionInfo parent, RegionInfo hriA, RegionInfo hriB,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      ServerName serverName) throws IOException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    TableDescriptor htd = getTableDescriptor(parent.getTable());<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    long parentOpenSeqNum = HConstants.NO_SEQNUM;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    if (htd.hasGlobalReplicationScope()) {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      parentOpenSeqNum = getOpenSeqNumForParentRegion(parent);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    MetaTableAccessor.splitRegion(master.getConnection(), parent, parentOpenSeqNum, hriA, hriB,<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      serverName, getRegionReplication(htd));<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>  //  Update Region Merging State helpers<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  // ============================================================================================<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  public void mergeRegions(RegionInfo child, RegionInfo hriA, RegionInfo hriB,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      ServerName serverName) throws IOException {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    TableDescriptor htd = getTableDescriptor(child.getTable());<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    long regionAOpenSeqNum = -1L;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    long regionBOpenSeqNum = -1L;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    if (htd.hasGlobalReplicationScope()) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      regionAOpenSeqNum = getOpenSeqNumForParentRegion(hriA);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      regionBOpenSeqNum = getOpenSeqNumForParentRegion(hriB);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    MetaTableAccessor.mergeRegions(master.getConnection(), child, hriA, regionAOpenSeqNum, hriB,<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      regionBOpenSeqNum, serverName, getRegionReplication(htd));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  // ============================================================================================<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  //  Delete Region State helpers<a name="line.254"></a>
+<span class="sourceLineNo">255</span>  // ============================================================================================<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  public void deleteRegion(final RegionInfo regionInfo) throws IOException {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    deleteRegions(Collections.singletonList(regionInfo));<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>  public void deleteRegions(final List&lt;RegionInfo&gt; regions) throws IOException {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    MetaTableAccessor.deleteRegions(master.getConnection(), regions);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>  // ==========================================================================<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  //  Table Descriptors helpers<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  // ==========================================================================<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  private boolean hasGlobalReplicationScope(TableName tableName) throws IOException {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    return hasGlobalReplicationScope(getTableDescriptor(tableName));<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>  private boolean hasGlobalReplicationScope(TableDescriptor htd) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    return htd != null ? htd.hasGlobalReplicationScope() : false;<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>  private int getRegionReplication(TableDescriptor htd) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    return htd != null ? htd.getRegionReplication() : 1;<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>  private TableDescriptor getTableDescriptor(TableName tableName) throws IOException {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    return master.getTableDescriptors().get(tableName);<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>  // ==========================================================================<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  //  Server Name<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  // ==========================================================================<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>  /**<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * Returns the {@link ServerName} from catalog table {@link Result}<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * where the region is transitioning. It should be the same as<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * {@link MetaTableAccessor#getServerName(Result,int)} if the server is at OPEN state.<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * @param r Result to pull the transitioning server name from<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * @return A ServerName instance or {@link MetaTableAccessor#getServerName(Result,int)}<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * if necessary fields not found or empty.<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   */<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  static ServerName getRegionServer(final Result r, int replicaId) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    final Cell cell = r.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        getServerNameColumn(replicaId));<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    if (cell == null || cell.getValueLength() == 0) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      RegionLocations locations = MetaTableAccessor.getRegionLocations(r);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      if (locations != null) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        HRegionLocation location = locations.getRegionLocation(replicaId);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        if (location != null) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          return location.getServerName();<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        }<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      return null;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    return ServerName.parseServerName(Bytes.toString(cell.getValueArray(),<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      cell.getValueOffset(), cell.getValueLength()));<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>  private static byte[] getServerNameColumn(int replicaId) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    return replicaId == 0<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        ? HConstants.SERVERNAME_QUALIFIER<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        : Bytes.toBytes(HConstants.SERVERNAME_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.315"></a>
+<span class="sourceLineNo">316</span>          + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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>  //  Region State<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  // ==========================================================================<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  /**<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   * Pull the region state from a catalog table {@link Result}.<a name="line.324"></a>
+<span class="sourceLineNo">325</span>   * @param r Result to pull the region state from<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   * @return the region state, or null if unknown.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   */<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  @VisibleForTesting<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  public static State getRegionState(final Result r, int replicaId) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    Cell cell = r.getColumnLatestCell(HConstants.CATALOG_FAMILY, getStateColumn(replicaId));<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    if (cell == null || cell.getValueLength() == 0) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      return null;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    return State.valueOf(Bytes.toString(cell.getValueArray(), cell.getValueOffset(),<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        cell.getValueLength()));<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  }<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>  private static byte[] getStateColumn(int replicaId) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    return replicaId == 0<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        ? HConstants.STATE_QUALIFIER<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        : Bytes.toBytes(HConstants.STATE_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.341"></a>
+<span class="sourceLineNo">342</span>          + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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>
 
 
 


[20/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html
index 0be8737..c5fbd58 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.57">RegionStateStore</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.58">RegionStateStore</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Store Region State to hbase:meta table.</div>
 </li>
@@ -322,7 +322,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.58">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.59">LOG</a></pre>
 </li>
 </ul>
 <a name="META_REPLICA_ID_DELIMITER">
@@ -331,7 +331,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>META_REPLICA_ID_DELIMITER</h4>
-<pre>protected static final&nbsp;char <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.61">META_REPLICA_ID_DELIMITER</a></pre>
+<pre>protected static final&nbsp;char <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.62">META_REPLICA_ID_DELIMITER</a></pre>
 <div class="block">The delimiter for meta columns for replicaIds &gt; 0</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -345,7 +345,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>master</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.63">master</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.64">master</a></pre>
 </li>
 </ul>
 </li>
@@ -362,7 +362,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RegionStateStore</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.65">RegionStateStore</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a>&nbsp;master)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.66">RegionStateStore</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a>&nbsp;master)</pre>
 </li>
 </ul>
 </li>
@@ -379,7 +379,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>visitMeta</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.74">visitMeta</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html" title="interface in org.apache.hadoop.hbase.master.assignment">RegionStateStore.RegionStateVisitor</a>&nbsp;visitor)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.75">visitMeta</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html" title="interface in org.apache.hadoop.hbase.master.assignment">RegionStateStore.RegionStateVisitor</a>&nbsp;visitor)
                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -393,7 +393,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>visitMetaEntry</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.98">visitMetaEntry</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html" title="interface in org.apache.hadoop.hbase.master.assignment">RegionStateStore.RegionStateVisitor</a>&nbsp;visitor,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.99">visitMetaEntry</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html" title="interface in org.apache.hadoop.hbase.master.assignment">RegionStateStore.RegionStateVisitor</a>&nbsp;visitor,
                             <a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;result)
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -408,7 +408,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>updateRegionLocation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.127">updateRegionLocation</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;regionStateNode)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.128">updateRegionLocation</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;regionStateNode)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -422,7 +422,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>updateMetaLocation</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.140">updateMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.143">updateMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
                                 <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -437,7 +437,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>updateUserRegionLocation</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.150">updateUserRegionLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.153">updateUserRegionLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
                                       <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>&nbsp;state,
                                       <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;regionLocation,
                                       <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;lastHost,
@@ -456,7 +456,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>updateRegionLocation</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.198">updateRegionLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.201">updateRegionLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
                                   <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>&nbsp;state,
                                   <a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;put)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -472,7 +472,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getOpenSeqNumForParentRegion</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.213">getOpenSeqNumForParentRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;region)
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.216">getOpenSeqNumForParentRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;region)
                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -486,7 +486,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>splitRegion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.223">splitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;parent,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.226">splitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;parent,
                         <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hriA,
                         <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hriB,
                         <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
@@ -503,7 +503,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>mergeRegions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.237">mergeRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;child,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.240">mergeRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;child,
                          <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hriA,
                          <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hriB,
                          <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
@@ -520,7 +520,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteRegion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.253">deleteRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.256">deleteRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -534,7 +534,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteRegions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.257">deleteRegions</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;regions)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.260">deleteRegions</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;regions)
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -548,7 +548,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>hasGlobalReplicationScope</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.264">hasGlobalReplicationScope</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.267">hasGlobalReplicationScope</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -562,7 +562,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>hasGlobalReplicationScope</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.268">hasGlobalReplicationScope</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.271">hasGlobalReplicationScope</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd)</pre>
 </li>
 </ul>
 <a name="getRegionReplication-org.apache.hadoop.hbase.client.TableDescriptor-">
@@ -571,7 +571,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionReplication</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.272">getRegionReplication</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.275">getRegionReplication</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd)</pre>
 </li>
 </ul>
 <a name="getTableDescriptor-org.apache.hadoop.hbase.TableName-">
@@ -580,7 +580,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableDescriptor</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.276">getTableDescriptor</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.279">getTableDescriptor</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -594,7 +594,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionServer</h4>
-<pre>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/assignment/RegionStateStore.html#line.292">getRegionServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;r,
+<pre>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/assignment/RegionStateStore.html#line.295">getRegionServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;r,
                                   int&nbsp;replicaId)</pre>
 <div class="block">Returns the <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase"><code>ServerName</code></a> from catalog table <a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client"><code>Result</code></a>
  where the region is transitioning. It should be the same as
@@ -614,7 +614,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerNameColumn</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.309">getServerNameColumn</a>(int&nbsp;replicaId)</pre>
+<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.312">getServerNameColumn</a>(int&nbsp;replicaId)</pre>
 </li>
 </ul>
 <a name="getRegionState-org.apache.hadoop.hbase.client.Result-int-">
@@ -623,7 +623,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionState</h4>
-<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.326">getRegionState</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;r,
+<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.329">getRegionState</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;r,
                                                int&nbsp;replicaId)</pre>
 <div class="block">Pull the region state from a catalog table <a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client"><code>Result</code></a>.</div>
 <dl>
@@ -640,7 +640,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getStateColumn</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.335">getStateColumn</a>(int&nbsp;replicaId)</pre>
+<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.338">getStateColumn</a>(int&nbsp;replicaId)</pre>
 </li>
 </ul>
 </li>


[12/24] hbase-site git commit: Published site at 7790ab156eabbea4527ec8e5a1c39430398bed0c.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/40477ee9/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html
index c546fc5..a4146f7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html
@@ -45,308 +45,311 @@
 <span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.master.MasterFileSystem;<a name="line.37"></a>
 <span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.master.MasterServices;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.procedure2.util.StringUtils;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.zookeeper.KeeperException;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.slf4j.Logger;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.LoggerFactory;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>/**<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * Store Region State to hbase:meta table.<a name="line.54"></a>
-<span class="sourceLineNo">055</span> */<a name="line.55"></a>
-<span class="sourceLineNo">056</span>@InterfaceAudience.Private<a name="line.56"></a>
-<span class="sourceLineNo">057</span>public class RegionStateStore {<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  private static final Logger LOG = LoggerFactory.getLogger(RegionStateStore.class);<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private final MasterServices master;<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  public RegionStateStore(final MasterServices master) {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    this.master = master;<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>  public interface RegionStateVisitor {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    void visitRegionState(RegionInfo regionInfo, State state,<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      ServerName regionLocation, ServerName lastHost, long openSeqNum);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  public void visitMeta(final RegionStateVisitor visitor) throws IOException {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    MetaTableAccessor.fullScanRegions(master.getConnection(), new MetaTableAccessor.Visitor() {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      final boolean isDebugEnabled = LOG.isDebugEnabled();<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>      @Override<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      public boolean visit(final Result r) throws IOException {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>        if (r !=  null &amp;&amp; !r.isEmpty()) {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>          long st = 0;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>          if (LOG.isTraceEnabled()) {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>            st = System.currentTimeMillis();<a name="line.83"></a>
-<span class="sourceLineNo">084</span>          }<a name="line.84"></a>
-<span class="sourceLineNo">085</span>          visitMetaEntry(visitor, r);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>          if (LOG.isTraceEnabled()) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>            long et = System.currentTimeMillis();<a name="line.87"></a>
-<span class="sourceLineNo">088</span>            LOG.trace("[T] LOAD META PERF " + StringUtils.humanTimeDiff(et - st));<a name="line.88"></a>
-<span class="sourceLineNo">089</span>          }<a name="line.89"></a>
-<span class="sourceLineNo">090</span>        } else if (isDebugEnabled) {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>          LOG.debug("NULL result from meta - ignoring but this is strange.");<a name="line.91"></a>
-<span class="sourceLineNo">092</span>        }<a name="line.92"></a>
-<span class="sourceLineNo">093</span>        return 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>  }<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  private void visitMetaEntry(final RegionStateVisitor visitor, final Result result)<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      throws IOException {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    final RegionLocations rl = MetaTableAccessor.getRegionLocations(result);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    if (rl == null) return;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>    final HRegionLocation[] locations = rl.getRegionLocations();<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    if (locations == null) return;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>    for (int i = 0; i &lt; locations.length; ++i) {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      final HRegionLocation hrl = locations[i];<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      if (hrl == null) continue;<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>      final RegionInfo regionInfo = hrl.getRegion();<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      if (regionInfo == null) continue;<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>      final int replicaId = regionInfo.getReplicaId();<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      final State state = getRegionState(result, replicaId);<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>      final ServerName lastHost = hrl.getServerName();<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      final ServerName regionLocation = getRegionServer(result, replicaId);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      final long openSeqNum = -1;<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>      // TODO: move under trace, now is visible for debugging<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      LOG.info("Load hbase:meta entry region={}, regionState={}, lastHost={}, " +<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          "regionLocation={}", regionInfo.getEncodedName(), state, lastHost, regionLocation);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      visitor.visitRegionState(regionInfo, state, regionLocation, lastHost, openSeqNum);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public void updateRegionLocation(RegionStates.RegionStateNode regionStateNode)<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      throws IOException {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    if (regionStateNode.getRegionInfo().isMetaRegion()) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      updateMetaLocation(regionStateNode.getRegionInfo(), regionStateNode.getRegionLocation());<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    } else {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      long openSeqNum = regionStateNode.getState() == State.OPEN ?<a name="line.132"></a>
-<span class="sourceLineNo">133</span>          regionStateNode.getOpenSeqNum() : HConstants.NO_SEQNUM;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      updateUserRegionLocation(regionStateNode.getRegionInfo(), regionStateNode.getState(),<a name="line.134"></a>
-<span class="sourceLineNo">135</span>          regionStateNode.getRegionLocation(), regionStateNode.getLastHost(), openSeqNum,<a name="line.135"></a>
-<span class="sourceLineNo">136</span>          regionStateNode.getProcedure().getProcId());<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>  private void updateMetaLocation(final RegionInfo regionInfo, final ServerName serverName)<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      throws IOException {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    try {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      MetaTableLocator.setMetaLocation(master.getZooKeeper(), serverName,<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        regionInfo.getReplicaId(), State.OPEN);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    } catch (KeeperException e) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      throw new IOException(e);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    }<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private void updateUserRegionLocation(final RegionInfo regionInfo, final State state,<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      final ServerName regionLocation, final ServerName lastHost, final long openSeqNum,<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      final long pid)<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      throws IOException {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    long time = EnvironmentEdgeManager.currentTime();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    final int replicaId = regionInfo.getReplicaId();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    final Put put = new Put(MetaTableAccessor.getMetaKeyForRegion(regionInfo), time);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    MetaTableAccessor.addRegionInfo(put, regionInfo);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    final StringBuilder info =<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      new StringBuilder("pid=").append(pid).append(" updating hbase:meta row=")<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        .append(regionInfo.getEncodedName()).append(", regionState=").append(state);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    if (openSeqNum &gt;= 0) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      Preconditions.checkArgument(state == State.OPEN &amp;&amp; regionLocation != null,<a name="line.162"></a>
-<span class="sourceLineNo">163</span>          "Open region should be on a server");<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      MetaTableAccessor.addLocation(put, regionLocation, openSeqNum, replicaId);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      // only update replication barrier for default replica<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      if (regionInfo.getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID &amp;&amp;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        hasGlobalReplicationScope(regionInfo.getTable())) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        MetaTableAccessor.addReplicationBarrier(put, openSeqNum);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        info.append(", repBarrier=").append(openSeqNum);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      }<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      info.append(", openSeqNum=").append(openSeqNum);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      info.append(", regionLocation=").append(regionLocation);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    } else if (regionLocation != null &amp;&amp; !regionLocation.equals(lastHost)) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      // Ideally, if no regionLocation, write null to the hbase:meta but this will confuse clients<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      // currently; they want a server to hit. TODO: Make clients wait if no location.<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          .setRow(put.getRow())<a name="line.177"></a>
-<span class="sourceLineNo">178</span>          .setFamily(HConstants.CATALOG_FAMILY)<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          .setQualifier(getServerNameColumn(replicaId))<a name="line.179"></a>
-<span class="sourceLineNo">180</span>          .setTimestamp(put.getTimestamp())<a name="line.180"></a>
-<span class="sourceLineNo">181</span>          .setType(Cell.Type.Put)<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          .setValue(Bytes.toBytes(regionLocation.getServerName()))<a name="line.182"></a>
-<span class="sourceLineNo">183</span>          .build());<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      info.append(", regionLocation=").append(regionLocation);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        .setRow(put.getRow())<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        .setFamily(HConstants.CATALOG_FAMILY)<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        .setQualifier(getStateColumn(replicaId))<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        .setTimestamp(put.getTimestamp())<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        .setType(Cell.Type.Put)<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        .setValue(Bytes.toBytes(state.name()))<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        .build());<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    LOG.info(info.toString());<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    updateRegionLocation(regionInfo, state, put);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>  }<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  private void updateRegionLocation(RegionInfo regionInfo, State state, Put put)<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      throws IOException {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    try (Table table = master.getConnection().getTable(TableName.META_TABLE_NAME)) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      table.put(put);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    } catch (IOException e) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      // TODO: Revist!!!! Means that if a server is loaded, then we will abort our host!<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      // In tests we abort the Master!<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      String msg = String.format("FAILED persisting region=%s state=%s",<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        regionInfo.getShortNameToLog(), state);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      LOG.error(msg, e);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      master.abort(msg, e);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      throw e;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  }<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private long getOpenSeqNumForParentRegion(RegionInfo region) throws IOException {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    MasterFileSystem mfs = master.getMasterFileSystem();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    long maxSeqId =<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        WALSplitter.getMaxRegionSequenceId(mfs.getFileSystem(), mfs.getRegionDir(region));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    return maxSeqId &gt; 0 ? maxSeqId + 1 : HConstants.NO_SEQNUM;<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>  // ============================================================================================<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  //  Update Region Splitting State helpers<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  // ============================================================================================<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  public void splitRegion(RegionInfo parent, RegionInfo hriA, RegionInfo hriB,<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      ServerName serverName) throws IOException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    TableDescriptor htd = getTableDescriptor(parent.getTable());<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    long parentOpenSeqNum = HConstants.NO_SEQNUM;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    if (htd.hasGlobalReplicationScope()) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      parentOpenSeqNum = getOpenSeqNumForParentRegion(parent);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    }<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    MetaTableAccessor.splitRegion(master.getConnection(), parent, parentOpenSeqNum, hriA, hriB,<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      serverName, getRegionReplication(htd));<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>  //  Update Region Merging State helpers<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  // ============================================================================================<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  public void mergeRegions(RegionInfo child, RegionInfo hriA, RegionInfo hriB,<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      ServerName serverName) throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    TableDescriptor htd = getTableDescriptor(child.getTable());<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    long regionAOpenSeqNum = -1L;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    long regionBOpenSeqNum = -1L;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (htd.hasGlobalReplicationScope()) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      regionAOpenSeqNum = getOpenSeqNumForParentRegion(hriA);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      regionBOpenSeqNum = getOpenSeqNumForParentRegion(hriB);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    MetaTableAccessor.mergeRegions(master.getConnection(), child, hriA, regionAOpenSeqNum, hriB,<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      regionBOpenSeqNum, serverName, getRegionReplication(htd));<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>  // ============================================================================================<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  //  Delete Region State helpers<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  // ============================================================================================<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  public void deleteRegion(final RegionInfo regionInfo) throws IOException {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    deleteRegions(Collections.singletonList(regionInfo));<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>  public void deleteRegions(final List&lt;RegionInfo&gt; regions) throws IOException {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    MetaTableAccessor.deleteRegions(master.getConnection(), regions);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>  // ==========================================================================<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  //  Table Descriptors helpers<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  // ==========================================================================<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  private boolean hasGlobalReplicationScope(TableName tableName) throws IOException {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    return hasGlobalReplicationScope(getTableDescriptor(tableName));<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>  private boolean hasGlobalReplicationScope(TableDescriptor htd) {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    return htd != null ? htd.hasGlobalReplicationScope() : false;<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>  private int getRegionReplication(TableDescriptor htd) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    return htd != null ? htd.getRegionReplication() : 1;<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>  private TableDescriptor getTableDescriptor(TableName tableName) throws IOException {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return master.getTableDescriptors().get(tableName);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  // ==========================================================================<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  //  Server Name<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>  /**<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * Returns the {@link ServerName} from catalog table {@link Result}<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * where the region is transitioning. It should be the same as<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * {@link MetaTableAccessor#getServerName(Result,int)} if the server is at OPEN state.<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * @param r Result to pull the transitioning server name from<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * @return A ServerName instance or {@link MetaTableAccessor#getServerName(Result,int)}<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * if necessary fields not found or empty.<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   */<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  static ServerName getRegionServer(final Result r, int replicaId) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    final Cell cell = r.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        getServerNameColumn(replicaId));<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    if (cell == null || cell.getValueLength() == 0) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      RegionLocations locations = MetaTableAccessor.getRegionLocations(r);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      if (locations != null) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        HRegionLocation location = locations.getRegionLocation(replicaId);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        if (location != null) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          return location.getServerName();<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return null;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    return ServerName.parseServerName(Bytes.toString(cell.getValueArray(),<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      cell.getValueOffset(), cell.getValueLength()));<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>  private static byte[] getServerNameColumn(int replicaId) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    return replicaId == 0<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        ? HConstants.SERVERNAME_QUALIFIER<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        : Bytes.toBytes(HConstants.SERVERNAME_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.312"></a>
-<span class="sourceLineNo">313</span>          + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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>  //  Region State<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  // ==========================================================================<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  /**<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * Pull the region state from a catalog table {@link Result}.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   * @param r Result to pull the region state from<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   * @return the region state, or null if unknown.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  @VisibleForTesting<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  public static State getRegionState(final Result r, int replicaId) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    Cell cell = r.getColumnLatestCell(HConstants.CATALOG_FAMILY, getStateColumn(replicaId));<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    if (cell == null || cell.getValueLength() == 0) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      return null;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    return State.valueOf(Bytes.toString(cell.getValueArray(), cell.getValueOffset(),<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        cell.getValueLength()));<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>  private static byte[] getStateColumn(int replicaId) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    return replicaId == 0<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        ? HConstants.STATE_QUALIFIER<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        : Bytes.toBytes(HConstants.STATE_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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">040</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.procedure2.util.StringUtils;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.zookeeper.KeeperException;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.slf4j.Logger;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.slf4j.LoggerFactory;<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>/**<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * Store Region State to hbase:meta table.<a name="line.55"></a>
+<span class="sourceLineNo">056</span> */<a name="line.56"></a>
+<span class="sourceLineNo">057</span>@InterfaceAudience.Private<a name="line.57"></a>
+<span class="sourceLineNo">058</span>public class RegionStateStore {<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private static final Logger LOG = LoggerFactory.getLogger(RegionStateStore.class);<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private final MasterServices master;<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public RegionStateStore(final MasterServices master) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    this.master = master;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  }<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  public interface RegionStateVisitor {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    void visitRegionState(RegionInfo regionInfo, State state,<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      ServerName regionLocation, ServerName lastHost, long openSeqNum);<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  }<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  public void visitMeta(final RegionStateVisitor visitor) throws IOException {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    MetaTableAccessor.fullScanRegions(master.getConnection(), new MetaTableAccessor.Visitor() {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      final boolean isDebugEnabled = LOG.isDebugEnabled();<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>      @Override<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      public boolean visit(final Result r) throws IOException {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>        if (r !=  null &amp;&amp; !r.isEmpty()) {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>          long st = 0;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>          if (LOG.isTraceEnabled()) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>            st = System.currentTimeMillis();<a name="line.84"></a>
+<span class="sourceLineNo">085</span>          }<a name="line.85"></a>
+<span class="sourceLineNo">086</span>          visitMetaEntry(visitor, r);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>          if (LOG.isTraceEnabled()) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>            long et = System.currentTimeMillis();<a name="line.88"></a>
+<span class="sourceLineNo">089</span>            LOG.trace("[T] LOAD META PERF " + StringUtils.humanTimeDiff(et - st));<a name="line.89"></a>
+<span class="sourceLineNo">090</span>          }<a name="line.90"></a>
+<span class="sourceLineNo">091</span>        } else if (isDebugEnabled) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>          LOG.debug("NULL result from meta - ignoring but this is strange.");<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        }<a name="line.93"></a>
+<span class="sourceLineNo">094</span>        return 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><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  private void visitMetaEntry(final RegionStateVisitor visitor, final Result result)<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      throws IOException {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    final RegionLocations rl = MetaTableAccessor.getRegionLocations(result);<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    if (rl == null) return;<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>    final HRegionLocation[] locations = rl.getRegionLocations();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    if (locations == null) return;<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>    for (int i = 0; i &lt; locations.length; ++i) {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      final HRegionLocation hrl = locations[i];<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      if (hrl == null) continue;<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>      final RegionInfo regionInfo = hrl.getRegion();<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      if (regionInfo == null) continue;<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>      final int replicaId = regionInfo.getReplicaId();<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      final State state = getRegionState(result, replicaId);<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>      final ServerName lastHost = hrl.getServerName();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      final ServerName regionLocation = getRegionServer(result, replicaId);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      final long openSeqNum = -1;<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>      // TODO: move under trace, now is visible for debugging<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      LOG.info("Load hbase:meta entry region={}, regionState={}, lastHost={}, " +<a name="line.122"></a>
+<span class="sourceLineNo">123</span>          "regionLocation={}", regionInfo.getEncodedName(), state, lastHost, regionLocation);<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      visitor.visitRegionState(regionInfo, state, regionLocation, lastHost, openSeqNum);<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>  public void updateRegionLocation(RegionStates.RegionStateNode regionStateNode)<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      throws IOException {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    if (regionStateNode.getRegionInfo().isMetaRegion()) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      updateMetaLocation(regionStateNode.getRegionInfo(), regionStateNode.getRegionLocation());<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    } else {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      long openSeqNum = regionStateNode.getState() == State.OPEN ?<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          regionStateNode.getOpenSeqNum() : HConstants.NO_SEQNUM;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      updateUserRegionLocation(regionStateNode.getRegionInfo(), regionStateNode.getState(),<a name="line.135"></a>
+<span class="sourceLineNo">136</span>          regionStateNode.getRegionLocation(), regionStateNode.getLastHost(), openSeqNum,<a name="line.136"></a>
+<span class="sourceLineNo">137</span>          // The regionStateNode may have no procedure in a test scenario; allow for this.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>          regionStateNode.getProcedure() != null?<a name="line.138"></a>
+<span class="sourceLineNo">139</span>              regionStateNode.getProcedure().getProcId(): Procedure.NO_PROC_ID);<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>  private void updateMetaLocation(final RegionInfo regionInfo, final ServerName serverName)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      throws IOException {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    try {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      MetaTableLocator.setMetaLocation(master.getZooKeeper(), serverName,<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        regionInfo.getReplicaId(), State.OPEN);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    } catch (KeeperException e) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      throw new IOException(e);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private void updateUserRegionLocation(final RegionInfo regionInfo, final State state,<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      final ServerName regionLocation, final ServerName lastHost, final long openSeqNum,<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      final long pid)<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      throws IOException {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    long time = EnvironmentEdgeManager.currentTime();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    final int replicaId = regionInfo.getReplicaId();<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    final Put put = new Put(MetaTableAccessor.getMetaKeyForRegion(regionInfo), time);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    MetaTableAccessor.addRegionInfo(put, regionInfo);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    final StringBuilder info =<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      new StringBuilder("pid=").append(pid).append(" updating hbase:meta row=")<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        .append(regionInfo.getEncodedName()).append(", regionState=").append(state);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    if (openSeqNum &gt;= 0) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      Preconditions.checkArgument(state == State.OPEN &amp;&amp; regionLocation != null,<a name="line.165"></a>
+<span class="sourceLineNo">166</span>          "Open region should be on a server");<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      MetaTableAccessor.addLocation(put, regionLocation, openSeqNum, replicaId);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      // only update replication barrier for default replica<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      if (regionInfo.getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID &amp;&amp;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        hasGlobalReplicationScope(regionInfo.getTable())) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        MetaTableAccessor.addReplicationBarrier(put, openSeqNum);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        info.append(", repBarrier=").append(openSeqNum);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      }<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      info.append(", openSeqNum=").append(openSeqNum);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      info.append(", regionLocation=").append(regionLocation);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    } else if (regionLocation != null &amp;&amp; !regionLocation.equals(lastHost)) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      // Ideally, if no regionLocation, write null to the hbase:meta but this will confuse clients<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      // currently; they want a server to hit. TODO: Make clients wait if no location.<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.179"></a>
+<span class="sourceLineNo">180</span>          .setRow(put.getRow())<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          .setFamily(HConstants.CATALOG_FAMILY)<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          .setQualifier(getServerNameColumn(replicaId))<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          .setTimestamp(put.getTimestamp())<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          .setType(Cell.Type.Put)<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          .setValue(Bytes.toBytes(regionLocation.getServerName()))<a name="line.185"></a>
+<span class="sourceLineNo">186</span>          .build());<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      info.append(", regionLocation=").append(regionLocation);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        .setRow(put.getRow())<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        .setFamily(HConstants.CATALOG_FAMILY)<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        .setQualifier(getStateColumn(replicaId))<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        .setTimestamp(put.getTimestamp())<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        .setType(Cell.Type.Put)<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        .setValue(Bytes.toBytes(state.name()))<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        .build());<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    LOG.info(info.toString());<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    updateRegionLocation(regionInfo, state, put);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  }<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>  private void updateRegionLocation(RegionInfo regionInfo, State state, Put put)<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      throws IOException {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    try (Table table = master.getConnection().getTable(TableName.META_TABLE_NAME)) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      table.put(put);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    } catch (IOException e) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      // TODO: Revist!!!! Means that if a server is loaded, then we will abort our host!<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      // In tests we abort the Master!<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      String msg = String.format("FAILED persisting region=%s state=%s",<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        regionInfo.getShortNameToLog(), state);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      LOG.error(msg, e);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      master.abort(msg, e);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      throw e;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>  private long getOpenSeqNumForParentRegion(RegionInfo region) throws IOException {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    MasterFileSystem mfs = master.getMasterFileSystem();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    long maxSeqId =<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        WALSplitter.getMaxRegionSequenceId(mfs.getFileSystem(), mfs.getRegionDir(region));<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    return maxSeqId &gt; 0 ? maxSeqId + 1 : HConstants.NO_SEQNUM;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  // ============================================================================================<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  //  Update Region Splitting State helpers<a name="line.224"></a>
+<span class="sourceLineNo">225</span>  // ============================================================================================<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  public void splitRegion(RegionInfo parent, RegionInfo hriA, RegionInfo hriB,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      ServerName serverName) throws IOException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    TableDescriptor htd = getTableDescriptor(parent.getTable());<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    long parentOpenSeqNum = HConstants.NO_SEQNUM;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    if (htd.hasGlobalReplicationScope()) {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      parentOpenSeqNum = getOpenSeqNumForParentRegion(parent);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    MetaTableAccessor.splitRegion(master.getConnection(), parent, parentOpenSeqNum, hriA, hriB,<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      serverName, getRegionReplication(htd));<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>  //  Update Region Merging State helpers<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  // ============================================================================================<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  public void mergeRegions(RegionInfo child, RegionInfo hriA, RegionInfo hriB,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      ServerName serverName) throws IOException {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    TableDescriptor htd = getTableDescriptor(child.getTable());<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    long regionAOpenSeqNum = -1L;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    long regionBOpenSeqNum = -1L;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    if (htd.hasGlobalReplicationScope()) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      regionAOpenSeqNum = getOpenSeqNumForParentRegion(hriA);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      regionBOpenSeqNum = getOpenSeqNumForParentRegion(hriB);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    MetaTableAccessor.mergeRegions(master.getConnection(), child, hriA, regionAOpenSeqNum, hriB,<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      regionBOpenSeqNum, serverName, getRegionReplication(htd));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  // ============================================================================================<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  //  Delete Region State helpers<a name="line.254"></a>
+<span class="sourceLineNo">255</span>  // ============================================================================================<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  public void deleteRegion(final RegionInfo regionInfo) throws IOException {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    deleteRegions(Collections.singletonList(regionInfo));<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>  public void deleteRegions(final List&lt;RegionInfo&gt; regions) throws IOException {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    MetaTableAccessor.deleteRegions(master.getConnection(), regions);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>  // ==========================================================================<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  //  Table Descriptors helpers<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  // ==========================================================================<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  private boolean hasGlobalReplicationScope(TableName tableName) throws IOException {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    return hasGlobalReplicationScope(getTableDescriptor(tableName));<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>  private boolean hasGlobalReplicationScope(TableDescriptor htd) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    return htd != null ? htd.hasGlobalReplicationScope() : false;<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>  private int getRegionReplication(TableDescriptor htd) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    return htd != null ? htd.getRegionReplication() : 1;<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>  private TableDescriptor getTableDescriptor(TableName tableName) throws IOException {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    return master.getTableDescriptors().get(tableName);<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>  // ==========================================================================<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  //  Server Name<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  // ==========================================================================<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>  /**<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * Returns the {@link ServerName} from catalog table {@link Result}<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * where the region is transitioning. It should be the same as<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * {@link MetaTableAccessor#getServerName(Result,int)} if the server is at OPEN state.<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * @param r Result to pull the transitioning server name from<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * @return A ServerName instance or {@link MetaTableAccessor#getServerName(Result,int)}<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * if necessary fields not found or empty.<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   */<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  static ServerName getRegionServer(final Result r, int replicaId) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    final Cell cell = r.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        getServerNameColumn(replicaId));<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    if (cell == null || cell.getValueLength() == 0) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      RegionLocations locations = MetaTableAccessor.getRegionLocations(r);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      if (locations != null) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        HRegionLocation location = locations.getRegionLocation(replicaId);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        if (location != null) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          return location.getServerName();<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        }<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      return null;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    return ServerName.parseServerName(Bytes.toString(cell.getValueArray(),<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      cell.getValueOffset(), cell.getValueLength()));<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>  private static byte[] getServerNameColumn(int replicaId) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    return replicaId == 0<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        ? HConstants.SERVERNAME_QUALIFIER<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        : Bytes.toBytes(HConstants.SERVERNAME_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.315"></a>
+<span class="sourceLineNo">316</span>          + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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>  //  Region State<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  // ==========================================================================<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  /**<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   * Pull the region state from a catalog table {@link Result}.<a name="line.324"></a>
+<span class="sourceLineNo">325</span>   * @param r Result to pull the region state from<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   * @return the region state, or null if unknown.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   */<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  @VisibleForTesting<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  public static State getRegionState(final Result r, int replicaId) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    Cell cell = r.getColumnLatestCell(HConstants.CATALOG_FAMILY, getStateColumn(replicaId));<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    if (cell == null || cell.getValueLength() == 0) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      return null;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    return State.valueOf(Bytes.toString(cell.getValueArray(), cell.getValueOffset(),<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        cell.getValueLength()));<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  }<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>  private static byte[] getStateColumn(int replicaId) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    return replicaId == 0<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        ? HConstants.STATE_QUALIFIER<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        : Bytes.toBytes(HConstants.STATE_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.341"></a>
+<span class="sourceLineNo">342</span>          + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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>