You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mi...@apache.org on 2016/02/24 18:45:00 UTC

[01/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site d02dd5db7 -> 89b638a43


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html b/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
index eed4399..65d184b 100644
--- a/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
+++ b/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
@@ -36,27 +36,27 @@
 <a class="jxr_linenumber" name="26" href="#26">26</a>  
 <a class="jxr_linenumber" name="27" href="#27">27</a>  {
 <a class="jxr_linenumber" name="28" href="#28">28</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html">HRegionServer</a> regionServer;
-<a class="jxr_linenumber" name="29" href="#29">29</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String format;
-<a class="jxr_linenumber" name="30" href="#30">30</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String filter;
-<a class="jxr_linenumber" name="31" href="#31">31</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String bcv;
-<a class="jxr_linenumber" name="32" href="#32">32</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String bcn;
+<a class="jxr_linenumber" name="29" href="#29">29</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String bcv;
+<a class="jxr_linenumber" name="30" href="#30">30</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String bcn;
+<a class="jxr_linenumber" name="31" href="#31">31</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String format;
+<a class="jxr_linenumber" name="32" href="#32">32</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String filter;
 <a class="jxr_linenumber" name="33" href="#33">33</a>    <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl.ImplData p_implData)
 <a class="jxr_linenumber" name="34" href="#34">34</a>    {
-<a class="jxr_linenumber" name="35" href="#35">35</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getFormat__IsNotDefault())
+<a class="jxr_linenumber" name="35" href="#35">35</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getBcv__IsNotDefault())
 <a class="jxr_linenumber" name="36" href="#36">36</a>      {
-<a class="jxr_linenumber" name="37" href="#37">37</a>        p_implData.setFormat(<span class="jxr_string">"html"</span>);
+<a class="jxr_linenumber" name="37" href="#37">37</a>        p_implData.setBcv(<span class="jxr_string">""</span>);
 <a class="jxr_linenumber" name="38" href="#38">38</a>      }
-<a class="jxr_linenumber" name="39" href="#39">39</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getFilter__IsNotDefault())
+<a class="jxr_linenumber" name="39" href="#39">39</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getBcn__IsNotDefault())
 <a class="jxr_linenumber" name="40" href="#40">40</a>      {
-<a class="jxr_linenumber" name="41" href="#41">41</a>        p_implData.setFilter(<span class="jxr_string">"general"</span>);
+<a class="jxr_linenumber" name="41" href="#41">41</a>        p_implData.setBcn(<span class="jxr_string">""</span>);
 <a class="jxr_linenumber" name="42" href="#42">42</a>      }
-<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getBcv__IsNotDefault())
+<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getFormat__IsNotDefault())
 <a class="jxr_linenumber" name="44" href="#44">44</a>      {
-<a class="jxr_linenumber" name="45" href="#45">45</a>        p_implData.setBcv(<span class="jxr_string">""</span>);
+<a class="jxr_linenumber" name="45" href="#45">45</a>        p_implData.setFormat(<span class="jxr_string">"html"</span>);
 <a class="jxr_linenumber" name="46" href="#46">46</a>      }
-<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getBcn__IsNotDefault())
+<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getFilter__IsNotDefault())
 <a class="jxr_linenumber" name="48" href="#48">48</a>      {
-<a class="jxr_linenumber" name="49" href="#49">49</a>        p_implData.setBcn(<span class="jxr_string">""</span>);
+<a class="jxr_linenumber" name="49" href="#49">49</a>        p_implData.setFilter(<span class="jxr_string">"general"</span>);
 <a class="jxr_linenumber" name="50" href="#50">50</a>      }
 <a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">return</strong> p_implData;
 <a class="jxr_linenumber" name="52" href="#52">52</a>    }
@@ -64,10 +64,10 @@
 <a class="jxr_linenumber" name="54" href="#54">54</a>    {
 <a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">super</strong>(p_templateManager, __jamon_setOptionalArguments(p_implData));
 <a class="jxr_linenumber" name="56" href="#56">56</a>      regionServer = p_implData.getRegionServer();
-<a class="jxr_linenumber" name="57" href="#57">57</a>      format = p_implData.getFormat();
-<a class="jxr_linenumber" name="58" href="#58">58</a>      filter = p_implData.getFilter();
-<a class="jxr_linenumber" name="59" href="#59">59</a>      bcv = p_implData.getBcv();
-<a class="jxr_linenumber" name="60" href="#60">60</a>      bcn = p_implData.getBcn();
+<a class="jxr_linenumber" name="57" href="#57">57</a>      bcv = p_implData.getBcv();
+<a class="jxr_linenumber" name="58" href="#58">58</a>      bcn = p_implData.getBcn();
+<a class="jxr_linenumber" name="59" href="#59">59</a>      format = p_implData.getFormat();
+<a class="jxr_linenumber" name="60" href="#60">60</a>      filter = p_implData.getFilter();
 <a class="jxr_linenumber" name="61" href="#61">61</a>    }
 <a class="jxr_linenumber" name="62" href="#62">62</a>    
 <a class="jxr_linenumber" name="63" href="#63">63</a>    @Override <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> renderNoFlush(<strong class="jxr_keyword">final</strong> java.io.Writer jamonWriter)


[29/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/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 aad6bcd..a7adf6e 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.html
@@ -159,6 +159,14 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#conf">conf</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>protected int</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#currentQueueLimit">currentQueueLimit</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected static int</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT">DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#failedHandlerCount">failedHandlerCount</a></strong></code>&nbsp;</td>
 </tr>
@@ -259,13 +267,19 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#start(int)">start</a></strong>(int&nbsp;port)</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#resizeQueues(org.apache.hadoop.conf.Configuration)">resizeQueues</a></strong>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
+<div class="block">Update current soft limit for executor's call queues</div>
+</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#start(int)">start</a></strong>(int&nbsp;port)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#startHandlers(int)">startHandlers</a></strong>(int&nbsp;port)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#startHandlers(java.lang.String,%20int,%20java.util.List,%20int,%20int,%20int)">startHandlers</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;nameSuffix,
                           int&nbsp;numHandlers,
@@ -274,7 +288,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
                           int&nbsp;qsize,
                           int&nbsp;port)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#stop()">stop</a></strong>()</code>&nbsp;</td>
 </tr>
@@ -309,13 +323,32 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.43">LOG</a></pre>
 </li>
 </ul>
+<a name="DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT</h4>
+<pre>protected static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.45">DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT</a></pre>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.ipc.RpcExecutor.DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT">Constant Field Values</a></dd></dl>
+</li>
+</ul>
+<a name="currentQueueLimit">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>currentQueueLimit</h4>
+<pre>protected volatile&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.46">currentQueueLimit</a></pre>
+</li>
+</ul>
 <a name="activeHandlerCount">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>activeHandlerCount</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/ipc/RpcExecutor.html#line.45">activeHandlerCount</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/ipc/RpcExecutor.html#line.48">activeHandlerCount</a></pre>
 </li>
 </ul>
 <a name="handlers">
@@ -324,7 +357,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>handlers</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.46">handlers</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.49">handlers</a></pre>
 </li>
 </ul>
 <a name="handlerCount">
@@ -333,7 +366,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>handlerCount</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.47">handlerCount</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.50">handlerCount</a></pre>
 </li>
 </ul>
 <a name="name">
@@ -342,7 +375,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>name</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/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/RpcExecutor.html#line.48">name</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/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/RpcExecutor.html#line.51">name</a></pre>
 </li>
 </ul>
 <a name="failedHandlerCount">
@@ -351,7 +384,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>failedHandlerCount</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/ipc/RpcExecutor.html#line.49">failedHandlerCount</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/ipc/RpcExecutor.html#line.52">failedHandlerCount</a></pre>
 </li>
 </ul>
 <a name="running">
@@ -360,7 +393,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>running</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.51">running</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.54">running</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -369,7 +402,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>private&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.53">conf</a></pre>
+<pre>private&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.56">conf</a></pre>
 </li>
 </ul>
 <a name="abortable">
@@ -378,7 +411,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>abortable</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.54">abortable</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.57">abortable</a></pre>
 </li>
 </ul>
 <a name="ONE_QUEUE">
@@ -387,7 +420,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ONE_QUEUE</h4>
-<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor.QueueBalancer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.191">ONE_QUEUE</a></pre>
+<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor.QueueBalancer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.194">ONE_QUEUE</a></pre>
 <div class="block">All requests go to the first queue, at index 0</div>
 </li>
 </ul>
@@ -405,7 +438,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>RpcExecutor</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.56">RpcExecutor</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.59">RpcExecutor</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
            int&nbsp;handlerCount)</pre>
 </li>
 </ul>
@@ -415,7 +448,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RpcExecutor</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.62">RpcExecutor</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.65">RpcExecutor</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
            int&nbsp;handlerCount,
            org.apache.hadoop.conf.Configuration&nbsp;conf,
            <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)</pre>
@@ -435,7 +468,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>start</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.69">start</a>(int&nbsp;port)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.72">start</a>(int&nbsp;port)</pre>
 </li>
 </ul>
 <a name="stop()">
@@ -444,7 +477,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.74">stop</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.77">stop</a>()</pre>
 </li>
 </ul>
 <a name="getActiveHandlerCount()">
@@ -453,7 +486,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveHandlerCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.81">getActiveHandlerCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.84">getActiveHandlerCount</a>()</pre>
 </li>
 </ul>
 <a name="getQueueLength()">
@@ -462,7 +495,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getQueueLength</h4>
-<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.86">getQueueLength</a>()</pre>
+<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.89">getQueueLength</a>()</pre>
 <div class="block">Returns the length of the pending queue</div>
 </li>
 </ul>
@@ -472,7 +505,7 @@ extends <a href="http://docs.oracle.com/javase/7/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/RpcExecutor.html#line.89">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 abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.92">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="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Add the request to the executor queue</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -485,7 +518,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getQueues</h4>
-<pre>protected abstract&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.92">getQueues</a>()</pre>
+<pre>protected abstract&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.95">getQueues</a>()</pre>
 <div class="block">Returns the list of request queues</div>
 </li>
 </ul>
@@ -495,7 +528,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>startHandlers</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.94">startHandlers</a>(int&nbsp;port)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.97">startHandlers</a>(int&nbsp;port)</pre>
 </li>
 </ul>
 <a name="startHandlers(java.lang.String, int, java.util.List, int, int, int)">
@@ -504,7 +537,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>startHandlers</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.99">startHandlers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;nameSuffix,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.102">startHandlers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;nameSuffix,
                  int&nbsp;numHandlers,
                  <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&gt;&gt;&nbsp;callQueues,
                  int&nbsp;qindex,
@@ -518,16 +551,27 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>consumerLoop</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.120">consumerLoop</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&gt;&nbsp;myQueue)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.123">consumerLoop</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&gt;&nbsp;myQueue)</pre>
 </li>
 </ul>
 <a name="getBalancer(int)">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>getBalancer</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor.QueueBalancer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.179">getBalancer</a>(int&nbsp;queueSize)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor.QueueBalancer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.182">getBalancer</a>(int&nbsp;queueSize)</pre>
+</li>
+</ul>
+<a name="resizeQueues(org.apache.hadoop.conf.Configuration)">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>resizeQueues</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.221">resizeQueues</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<div class="block">Update current soft limit for executor's call queues</div>
+<dl><dt><span class="strong">Parameters:</span></dt><dd><code>conf</code> - updated configuration</dd></dl>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/ipc/RpcServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/RpcServer.html b/devapidocs/org/apache/hadoop/hbase/ipc/RpcServer.html
index 203f531..955ceaa 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/RpcServer.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/RpcServer.html
@@ -1211,7 +1211,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockListLast">
 <li class="blockList">
 <h4>NIO_BUFFER_LIMIT</h4>
-<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2422">NIO_BUFFER_LIMIT</a></pre>
+<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2425">NIO_BUFFER_LIMIT</a></pre>
 <div class="block">When the read or write buffer size is larger than this limit, i/o will be
  done in chunks of this size. Most RPC requests and responses would be
  be smaller.</div>
@@ -1275,7 +1275,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>initReconfigurable</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2104">initReconfigurable</a>(org.apache.hadoop.conf.Configuration&nbsp;confToLoad)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2107">initReconfigurable</a>(org.apache.hadoop.conf.Configuration&nbsp;confToLoad)</pre>
 </li>
 </ul>
 <a name="getConnection(java.nio.channels.SocketChannel, long)">
@@ -1284,7 +1284,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getConnection</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.Connection.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.Connection</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2122">getConnection</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/channels/SocketChannel.html?is-external=true" title="class or interface in java.nio.channels">SocketChannel</a>&nbsp;channel,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.Connection.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.Connection</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2125">getConnection</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/channels/SocketChannel.html?is-external=true" title="class or interface in java.nio.channels">SocketChannel</a>&nbsp;channel,
                                  long&nbsp;time)</pre>
 <div class="block">Subclasses of HBaseServer can override this to provide their own
  Connection implementations.</div>
@@ -1296,7 +1296,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>setupResponse</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2134">setupResponse</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/ByteArrayOutputStream.html?is-external=true" title="class or interface in java.io">ByteArrayOutputStream</a>&nbsp;response,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2137">setupResponse</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/ByteArrayOutputStream.html?is-external=true" title="class or interface in java.io">ByteArrayOutputStream</a>&nbsp;response,
                  <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.Call.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.Call</a>&nbsp;call,
                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;t,
                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;error)
@@ -1313,7 +1313,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>closeConnection</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2140">closeConnection</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.Connection.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.Connection</a>&nbsp;connection)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2143">closeConnection</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.Connection.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.Connection</a>&nbsp;connection)</pre>
 </li>
 </ul>
 <a name="getConf()">
@@ -1322,7 +1322,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getConf</h4>
-<pre>org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2149">getConf</a>()</pre>
+<pre>org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2152">getConf</a>()</pre>
 </li>
 </ul>
 <a name="setSocketSendBufSize(int)">
@@ -1331,7 +1331,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>setSocketSendBufSize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2157">setSocketSendBufSize</a>(int&nbsp;size)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2160">setSocketSendBufSize</a>(int&nbsp;size)</pre>
 <div class="block">Sets the socket buffer size used for responding to RPCs.</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -1345,7 +1345,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>isStarted</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2160">isStarted</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2163">isStarted</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterface.html#isStarted()">isStarted</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterface.html" title="interface in org.apache.hadoop.hbase.ipc">RpcServerInterface</a></code></dd>
@@ -1358,7 +1358,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>start</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2166">start</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2169">start</a>()</pre>
 <div class="block">Starts the service.  Must be called before any calls will be handled.</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -1372,7 +1372,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>refreshAuthManager</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2182">refreshAuthManager</a>(org.apache.hadoop.security.authorize.PolicyProvider&nbsp;pp)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2185">refreshAuthManager</a>(org.apache.hadoop.security.authorize.PolicyProvider&nbsp;pp)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterface.html#refreshAuthManager(org.apache.hadoop.security.authorize.PolicyProvider)">RpcServerInterface</a></code></strong></div>
 <div class="block">Refresh authentication manager policy.</div>
 <dl>
@@ -1387,7 +1387,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>createSecretManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenSecretManager</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2188">createSecretManager</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenSecretManager</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2191">createSecretManager</a>()</pre>
 </li>
 </ul>
 <a name="getSecretManager()">
@@ -1396,7 +1396,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getSecretManager</h4>
-<pre>public&nbsp;org.apache.hadoop.security.token.SecretManager&lt;? extends org.apache.hadoop.security.token.TokenIdentifier&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2200">getSecretManager</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.security.token.SecretManager&lt;? extends org.apache.hadoop.security.token.TokenIdentifier&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2203">getSecretManager</a>()</pre>
 </li>
 </ul>
 <a name="setSecretManager(org.apache.hadoop.security.token.SecretManager)">
@@ -1405,7 +1405,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>setSecretManager</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2205">setSecretManager</a>(org.apache.hadoop.security.token.SecretManager&lt;? extends org.apache.hadoop.security.token.TokenIdentifier&gt;&nbsp;secretManager)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2208">setSecretManager</a>(org.apache.hadoop.security.token.SecretManager&lt;? extends org.apache.hadoop.security.token.TokenIdentifier&gt;&nbsp;secretManager)</pre>
 </li>
 </ul>
 <a name="call(com.google.protobuf.BlockingService, com.google.protobuf.Descriptors.MethodDescriptor, com.google.protobuf.Message, org.apache.hadoop.hbase.CellScanner, long, org.apache.hadoop.hbase.monitoring.MonitoredRPCHandler)">
@@ -1414,7 +1414,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>call</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;com.google.protobuf.Message,<a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2215">call</a>(com.google.protobuf.BlockingService&nbsp;service,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;com.google.protobuf.Message,<a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2218">call</a>(com.google.protobuf.BlockingService&nbsp;service,
                                                  com.google.protobuf.Descriptors.MethodDescriptor&nbsp;md,
                                                  com.google.protobuf.Message&nbsp;param,
                                                  <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;cellScanner,
@@ -1437,7 +1437,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>logResponse</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2289">logResponse</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;params,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2292">logResponse</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;params,
                <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;methodName,
                <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;call,
                <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;tag,
@@ -1461,7 +1461,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2332">stop</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2335">stop</a>()</pre>
 <div class="block">Stops the service.  No new calls will be handled after this is called.</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -1475,7 +1475,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>join</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2352">join</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2355">join</a>()
           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Wait for the server to be stopped.
  Does not wait for all subthreads to finish.
@@ -1493,7 +1493,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getListenerAddress</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/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/RpcServer.html#line.2365">getListenerAddress</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/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/RpcServer.html#line.2368">getListenerAddress</a>()</pre>
 <div class="block">Return the socket (ip+port) on which the RPC server is listening to. May return null if
  the listener channel is closed.</div>
 <dl>
@@ -1509,7 +1509,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>setErrorHandler</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2377">setErrorHandler</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRPCErrorHandler.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRPCErrorHandler</a>&nbsp;handler)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2380">setErrorHandler</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRPCErrorHandler.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRPCErrorHandler</a>&nbsp;handler)</pre>
 <div class="block">Set the handler for calling out of RPC for error conditions.</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -1523,7 +1523,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getErrorHandler</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRPCErrorHandler.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRPCErrorHandler</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2382">getErrorHandler</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRPCErrorHandler.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRPCErrorHandler</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2385">getErrorHandler</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterface.html#getErrorHandler()">getErrorHandler</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterface.html" title="interface in org.apache.hadoop.hbase.ipc">RpcServerInterface</a></code></dd>
@@ -1536,7 +1536,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetrics</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServer.html" title="class in org.apache.hadoop.hbase.ipc">MetricsHBaseServer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2390">getMetrics</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServer.html" title="class in org.apache.hadoop.hbase.ipc">MetricsHBaseServer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2393">getMetrics</a>()</pre>
 <div class="block">Returns the metrics instance for reporting RPC call statistics</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -1550,7 +1550,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>addCallSize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2395">addCallSize</a>(long&nbsp;diff)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2398">addCallSize</a>(long&nbsp;diff)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterface.html#addCallSize(long)">RpcServerInterface</a></code></strong></div>
 <div class="block">Add/subtract from the current size of all outstanding calls.  Called on setup of a call to add
  call total size and then again at end of a call to remove the call size.</div>
@@ -1566,7 +1566,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>authorize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2408">authorize</a>(org.apache.hadoop.security.UserGroupInformation&nbsp;user,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2411">authorize</a>(org.apache.hadoop.security.UserGroupInformation&nbsp;user,
              org.apache.hadoop.hbase.protobuf.generated.RPCProtos.ConnectionHeader&nbsp;connection,
              <a href="http://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a>&nbsp;addr)
                throws org.apache.hadoop.security.authorize.AuthorizationException</pre>
@@ -1582,7 +1582,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>channelWrite</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2438">channelWrite</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/channels/GatheringByteChannel.html?is-external=true" title="class or interface in java.nio.channels">GatheringByteChannel</a>&nbsp;channel,
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2441">channelWrite</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/channels/GatheringByteChannel.html?is-external=true" title="class or interface in java.nio.channels">GatheringByteChannel</a>&nbsp;channel,
                 <a href="../../../../../org/apache/hadoop/hbase/ipc/BufferChain.html" title="class in org.apache.hadoop.hbase.ipc">BufferChain</a>&nbsp;bufferChain)
                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">This is a wrapper around <a href="http://docs.oracle.com/javase/7/docs/api/java/nio/channels/WritableByteChannel.html?is-external=true#write(java.nio.ByteBuffer)" title="class or interface in java.nio.channels"><code>WritableByteChannel.write(java.nio.ByteBuffer)</code></a>.
@@ -1603,7 +1603,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>channelRead</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2457">channelRead</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/channels/ReadableByteChannel.html?is-external=true" title="class or interface in java.nio.channels">ReadableByteChannel</a>&nbsp;channel,
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2460">channelRead</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/channels/ReadableByteChannel.html?is-external=true" title="class or interface in java.nio.channels">ReadableByteChannel</a>&nbsp;channel,
               <a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buffer)
                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">This is a wrapper around <a href="http://docs.oracle.com/javase/7/docs/api/java/nio/channels/ReadableByteChannel.html?is-external=true#read(java.nio.ByteBuffer)" title="class or interface in java.nio.channels"><code>ReadableByteChannel.read(java.nio.ByteBuffer)</code></a>.
@@ -1622,7 +1622,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>channelIO</h4>
-<pre>private static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2481">channelIO</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/channels/ReadableByteChannel.html?is-external=true" title="class or interface in java.nio.channels">ReadableByteChannel</a>&nbsp;readCh,
+<pre>private static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2484">channelIO</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/channels/ReadableByteChannel.html?is-external=true" title="class or interface in java.nio.channels">ReadableByteChannel</a>&nbsp;readCh,
             <a href="http://docs.oracle.com/javase/7/docs/api/java/nio/channels/WritableByteChannel.html?is-external=true" title="class or interface in java.nio.channels">WritableByteChannel</a>&nbsp;writeCh,
             <a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)
                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1642,7 +1642,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentCall</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcCallContext.html" title="interface in org.apache.hadoop.hbase.ipc">RpcCallContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2515">getCurrentCall</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcCallContext.html" title="interface in org.apache.hadoop.hbase.ipc">RpcCallContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2518">getCurrentCall</a>()</pre>
 <div class="block">Needed for features such as delayed calls.  We need to be able to store the current call
  so that we can complete it later or ask questions of what is supported by the current ongoing
  call.</div>
@@ -1655,7 +1655,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>isInRpcCallContext</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2519">isInRpcCallContext</a>()</pre>
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2522">isInRpcCallContext</a>()</pre>
 </li>
 </ul>
 <a name="getRequestUser()">
@@ -1664,7 +1664,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getRequestUser</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2528">getRequestUser</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2531">getRequestUser</a>()</pre>
 <div class="block">Returns the user credentials associated with the current RPC request or
  <code>null</code> if no credentials were provided.</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>A User</dd></dl>
@@ -1676,7 +1676,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getRequestUserName</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/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/ipc/RpcServer.html#line.2537">getRequestUserName</a>()</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/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/ipc/RpcServer.html#line.2540">getRequestUserName</a>()</pre>
 <div class="block">Returns the username for any user associated with the current RPC
  request or <code>null</code> if no user is set.</div>
 </li>
@@ -1687,7 +1687,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getRemoteAddress</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2545">getRemoteAddress</a>()</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2548">getRemoteAddress</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>Address of remote client if a request is ongoing, else null</dd></dl>
 </li>
 </ul>
@@ -1697,7 +1697,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getServiceAndInterface</h4>
-<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.BlockingServiceAndInterface.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.BlockingServiceAndInterface</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2555">getServiceAndInterface</a>(<a href="http://docs.oracle.com/javase/7/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/ipc/RpcServer.BlockingServiceAndInterface.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.BlockingServiceAndInterface</a>&gt;&nbsp;services,
+<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.BlockingServiceAndInterface.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.BlockingServiceAndInterface</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2558">getServiceAndInterface</a>(<a href="http://docs.oracle.com/javase/7/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/ipc/RpcServer.BlockingServiceAndInterface.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.BlockingServiceAndInterface</a>&gt;&nbsp;services,
                                                            <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;serviceName)</pre>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>serviceName</code> - Some arbitrary string that represents a 'service'.</dd><dd><code>services</code> - Available service instances</dd>
 <dt><span class="strong">Returns:</span></dt><dd>Matching BlockingServiceAndInterface pair</dd></dl>
@@ -1709,7 +1709,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getServiceInterface</h4>
-<pre>static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2570">getServiceInterface</a>(<a href="http://docs.oracle.com/javase/7/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/ipc/RpcServer.BlockingServiceAndInterface.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.BlockingServiceAndInterface</a>&gt;&nbsp;services,
+<pre>static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2573">getServiceInterface</a>(<a href="http://docs.oracle.com/javase/7/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/ipc/RpcServer.BlockingServiceAndInterface.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.BlockingServiceAndInterface</a>&gt;&nbsp;services,
                            <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;serviceName)</pre>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>serviceName</code> - Some arbitrary string that represents a 'service'.</dd><dd><code>services</code> - Available services and their service interfaces.</dd>
 <dt><span class="strong">Returns:</span></dt><dd>Service interface class for <code>serviceName</code></dd></dl>
@@ -1721,7 +1721,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getService</h4>
-<pre>static&nbsp;com.google.protobuf.BlockingService&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2583">getService</a>(<a href="http://docs.oracle.com/javase/7/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/ipc/RpcServer.BlockingServiceAndInterface.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.BlockingServiceAndInterface</a>&gt;&nbsp;services,
+<pre>static&nbsp;com.google.protobuf.BlockingService&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2586">getService</a>(<a href="http://docs.oracle.com/javase/7/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/ipc/RpcServer.BlockingServiceAndInterface.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.BlockingServiceAndInterface</a>&gt;&nbsp;services,
                                              <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;serviceName)</pre>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>serviceName</code> - Some arbitrary string that represents a 'service'.</dd><dd><code>services</code> - Available services and their service interfaces.</dd>
 <dt><span class="strong">Returns:</span></dt><dd>BlockingService that goes with the passed <code>serviceName</code></dd></dl>
@@ -1733,7 +1733,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getStatus</h4>
-<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredRPCHandler.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredRPCHandler</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2591">getStatus</a>()</pre>
+<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredRPCHandler.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredRPCHandler</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2594">getStatus</a>()</pre>
 </li>
 </ul>
 <a name="getRemoteIp()">
@@ -1742,7 +1742,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getRemoteIp</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2607">getRemoteIp</a>()</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2610">getRemoteIp</a>()</pre>
 <div class="block">Returns the remote side ip address when invoked inside an RPC
   Returns null incase of an error.</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>InetAddress</dd></dl>
@@ -1754,7 +1754,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>bind</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2626">bind</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html?is-external=true" title="class or interface in java.net">ServerSocket</a>&nbsp;socket,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2629">bind</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html?is-external=true" title="class or interface in java.net">ServerSocket</a>&nbsp;socket,
         <a href="http://docs.oracle.com/javase/7/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>&nbsp;address,
         int&nbsp;backlog)
                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1773,7 +1773,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getScheduler</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">RpcScheduler</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2648">getScheduler</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">RpcScheduler</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.2651">getScheduler</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterface.html#getScheduler()">getScheduler</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterface.html" title="interface in org.apache.hadoop.hbase.ipc">RpcServerInterface</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html b/devapidocs/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html
index d8a1e43..f2c4bdc 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.65">SimpleRpcScheduler.CallPriorityComparator</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.81">SimpleRpcScheduler.CallPriorityComparator</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="http://docs.oracle.com/javase/7/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/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&gt;</pre>
 <div class="block">Comparator used by the "normal callQueue" if DEADLINE_CALL_QUEUE_CONF_KEY is set to true.
@@ -214,7 +214,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Comparato
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_MAX_CALL_DELAY</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html#line.66">DEFAULT_MAX_CALL_DELAY</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html#line.82">DEFAULT_MAX_CALL_DELAY</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.CallPriorityComparator.DEFAULT_MAX_CALL_DELAY">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -224,7 +224,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Comparato
 <ul class="blockList">
 <li class="blockList">
 <h4>priority</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/PriorityFunction.html" title="interface in org.apache.hadoop.hbase.ipc">PriorityFunction</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html#line.68">priority</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/PriorityFunction.html" title="interface in org.apache.hadoop.hbase.ipc">PriorityFunction</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html#line.84">priority</a></pre>
 </li>
 </ul>
 <a name="maxDelay">
@@ -233,7 +233,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Comparato
 <ul class="blockListLast">
 <li class="blockList">
 <h4>maxDelay</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html#line.69">maxDelay</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html#line.85">maxDelay</a></pre>
 </li>
 </ul>
 </li>
@@ -250,7 +250,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Comparato
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SimpleRpcScheduler.CallPriorityComparator</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html#line.71">SimpleRpcScheduler.CallPriorityComparator</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html#line.87">SimpleRpcScheduler.CallPriorityComparator</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                          <a href="../../../../../org/apache/hadoop/hbase/ipc/PriorityFunction.html" title="interface in org.apache.hadoop.hbase.ipc">PriorityFunction</a>&nbsp;priority)</pre>
 </li>
 </ul>
@@ -268,7 +268,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Comparato
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html#line.77">compare</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&nbsp;a,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html#line.93">compare</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&nbsp;a,
           <a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&nbsp;b)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>


[16/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
index 52d47c0..b8ef76a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
@@ -67,15 +67,15 @@
 <span class="sourceLineNo">059</span>  requiredArguments = {<a name="line.59"></a>
 <span class="sourceLineNo">060</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.60"></a>
 <span class="sourceLineNo">061</span>  optionalArguments = {<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager")})<a name="line.70"></a>
+<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean")})<a name="line.70"></a>
 <span class="sourceLineNo">071</span>public class MasterStatusTmpl<a name="line.71"></a>
 <span class="sourceLineNo">072</span>  extends org.jamon.AbstractTemplateProxy<a name="line.72"></a>
 <span class="sourceLineNo">073</span>{<a name="line.73"></a>
@@ -116,159 +116,159 @@
 <span class="sourceLineNo">108</span>      return m_master;<a name="line.108"></a>
 <span class="sourceLineNo">109</span>    }<a name="line.109"></a>
 <span class="sourceLineNo">110</span>    private HMaster m_master;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    // 21, 1<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.112"></a>
+<span class="sourceLineNo">111</span>    // 28, 1<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    public void setServerManager(ServerManager serverManager)<a name="line.112"></a>
 <span class="sourceLineNo">113</span>    {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      // 21, 1<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      m_frags = frags;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      m_frags__IsNotDefault = true;<a name="line.116"></a>
+<span class="sourceLineNo">114</span>      // 28, 1<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      m_serverManager = serverManager;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      m_serverManager__IsNotDefault = true;<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.118"></a>
+<span class="sourceLineNo">118</span>    public ServerManager getServerManager()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_frags;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_serverManager;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    public boolean getFrags__IsNotDefault()<a name="line.123"></a>
+<span class="sourceLineNo">122</span>    private ServerManager m_serverManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    public boolean getServerManager__IsNotDefault()<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      return m_frags__IsNotDefault;<a name="line.125"></a>
+<span class="sourceLineNo">125</span>      return m_serverManager__IsNotDefault;<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    private boolean m_frags__IsNotDefault;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    // 25, 1<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.129"></a>
+<span class="sourceLineNo">127</span>    private boolean m_serverManager__IsNotDefault;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    // 22, 1<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.129"></a>
 <span class="sourceLineNo">130</span>    {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      // 25, 1<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.133"></a>
+<span class="sourceLineNo">131</span>      // 22, 1<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      m_metaLocation = metaLocation;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      m_metaLocation__IsNotDefault = true;<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    }<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getCatalogJanitorEnabled()<a name="line.135"></a>
+<span class="sourceLineNo">135</span>    public ServerName getMetaLocation()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_catalogJanitorEnabled;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_metaLocation;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_catalogJanitorEnabled;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.140"></a>
+<span class="sourceLineNo">139</span>    private ServerName m_metaLocation;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.140"></a>
 <span class="sourceLineNo">141</span>    {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.142"></a>
+<span class="sourceLineNo">142</span>      return m_metaLocation__IsNotDefault;<a name="line.142"></a>
 <span class="sourceLineNo">143</span>    }<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    // 26, 1<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    public void setFilter(String filter)<a name="line.146"></a>
+<span class="sourceLineNo">144</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    // 21, 1<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.146"></a>
 <span class="sourceLineNo">147</span>    {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      // 26, 1<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      m_filter = filter;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      m_filter__IsNotDefault = true;<a name="line.150"></a>
+<span class="sourceLineNo">148</span>      // 21, 1<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      m_frags = frags;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      m_frags__IsNotDefault = true;<a name="line.150"></a>
 <span class="sourceLineNo">151</span>    }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public String getFilter()<a name="line.152"></a>
+<span class="sourceLineNo">152</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.152"></a>
 <span class="sourceLineNo">153</span>    {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      return m_filter;<a name="line.154"></a>
+<span class="sourceLineNo">154</span>      return m_frags;<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    private String m_filter;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    public boolean getFilter__IsNotDefault()<a name="line.157"></a>
+<span class="sourceLineNo">156</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public boolean getFrags__IsNotDefault()<a name="line.157"></a>
 <span class="sourceLineNo">158</span>    {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      return m_filter__IsNotDefault;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>      return m_frags__IsNotDefault;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    private boolean m_filter__IsNotDefault;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // 24, 1<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.163"></a>
+<span class="sourceLineNo">161</span>    private boolean m_frags__IsNotDefault;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // 26, 1<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    public void setFilter(String filter)<a name="line.163"></a>
 <span class="sourceLineNo">164</span>    {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      // 24, 1<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      m_deadServers = deadServers;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      m_deadServers__IsNotDefault = true;<a name="line.167"></a>
+<span class="sourceLineNo">165</span>      // 26, 1<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      m_filter = filter;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      m_filter__IsNotDefault = true;<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.169"></a>
+<span class="sourceLineNo">169</span>    public String getFilter()<a name="line.169"></a>
 <span class="sourceLineNo">170</span>    {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return m_deadServers;<a name="line.171"></a>
+<span class="sourceLineNo">171</span>      return m_filter;<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public boolean getDeadServers__IsNotDefault()<a name="line.174"></a>
+<span class="sourceLineNo">173</span>    private String m_filter;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    public boolean getFilter__IsNotDefault()<a name="line.174"></a>
 <span class="sourceLineNo">175</span>    {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      return m_deadServers__IsNotDefault;<a name="line.176"></a>
+<span class="sourceLineNo">176</span>      return m_filter__IsNotDefault;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    private boolean m_deadServers__IsNotDefault;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    // 27, 1<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    public void setFormat(String format)<a name="line.180"></a>
+<span class="sourceLineNo">178</span>    private boolean m_filter__IsNotDefault;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    // 24, 1<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.180"></a>
 <span class="sourceLineNo">181</span>    {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      // 27, 1<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      m_format = format;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      m_format__IsNotDefault = true;<a name="line.184"></a>
+<span class="sourceLineNo">182</span>      // 24, 1<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      m_deadServers = deadServers;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      m_deadServers__IsNotDefault = true;<a name="line.184"></a>
 <span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    public String getFormat()<a name="line.186"></a>
+<span class="sourceLineNo">186</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.186"></a>
 <span class="sourceLineNo">187</span>    {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      return m_format;<a name="line.188"></a>
+<span class="sourceLineNo">188</span>      return m_deadServers;<a name="line.188"></a>
 <span class="sourceLineNo">189</span>    }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    private String m_format;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    public boolean getFormat__IsNotDefault()<a name="line.191"></a>
+<span class="sourceLineNo">190</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    public boolean getDeadServers__IsNotDefault()<a name="line.191"></a>
 <span class="sourceLineNo">192</span>    {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      return m_format__IsNotDefault;<a name="line.193"></a>
+<span class="sourceLineNo">193</span>      return m_deadServers__IsNotDefault;<a name="line.193"></a>
 <span class="sourceLineNo">194</span>    }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    private boolean m_format__IsNotDefault;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // 23, 1<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.197"></a>
+<span class="sourceLineNo">195</span>    private boolean m_deadServers__IsNotDefault;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // 27, 1<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    public void setFormat(String format)<a name="line.197"></a>
 <span class="sourceLineNo">198</span>    {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      // 23, 1<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      m_servers = servers;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      m_servers__IsNotDefault = true;<a name="line.201"></a>
+<span class="sourceLineNo">199</span>      // 27, 1<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      m_format = format;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      m_format__IsNotDefault = true;<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    public List&lt;ServerName&gt; getServers()<a name="line.203"></a>
+<span class="sourceLineNo">203</span>    public String getFormat()<a name="line.203"></a>
 <span class="sourceLineNo">204</span>    {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return m_servers;<a name="line.205"></a>
+<span class="sourceLineNo">205</span>      return m_format;<a name="line.205"></a>
 <span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    private List&lt;ServerName&gt; m_servers;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    public boolean getServers__IsNotDefault()<a name="line.208"></a>
+<span class="sourceLineNo">207</span>    private String m_format;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public boolean getFormat__IsNotDefault()<a name="line.208"></a>
 <span class="sourceLineNo">209</span>    {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      return m_servers__IsNotDefault;<a name="line.210"></a>
+<span class="sourceLineNo">210</span>      return m_format__IsNotDefault;<a name="line.210"></a>
 <span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    private boolean m_servers__IsNotDefault;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    // 22, 1<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.214"></a>
+<span class="sourceLineNo">212</span>    private boolean m_format__IsNotDefault;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    // 29, 1<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      // 22, 1<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      m_metaLocation = metaLocation;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      m_metaLocation__IsNotDefault = true;<a name="line.218"></a>
+<span class="sourceLineNo">216</span>      // 29, 1<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      m_assignmentManager = assignmentManager;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      m_assignmentManager__IsNotDefault = true;<a name="line.218"></a>
 <span class="sourceLineNo">219</span>    }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    public ServerName getMetaLocation()<a name="line.220"></a>
+<span class="sourceLineNo">220</span>    public AssignmentManager getAssignmentManager()<a name="line.220"></a>
 <span class="sourceLineNo">221</span>    {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return m_metaLocation;<a name="line.222"></a>
+<span class="sourceLineNo">222</span>      return m_assignmentManager;<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    private ServerName m_metaLocation;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.225"></a>
+<span class="sourceLineNo">224</span>    private AssignmentManager m_assignmentManager;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.225"></a>
 <span class="sourceLineNo">226</span>    {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return m_metaLocation__IsNotDefault;<a name="line.227"></a>
+<span class="sourceLineNo">227</span>      return m_assignmentManager__IsNotDefault;<a name="line.227"></a>
 <span class="sourceLineNo">228</span>    }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // 29, 1<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.231"></a>
+<span class="sourceLineNo">229</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    // 23, 1<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.231"></a>
 <span class="sourceLineNo">232</span>    {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      // 29, 1<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      m_assignmentManager = assignmentManager;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      m_assignmentManager__IsNotDefault = true;<a name="line.235"></a>
+<span class="sourceLineNo">233</span>      // 23, 1<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      m_servers = servers;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      m_servers__IsNotDefault = true;<a name="line.235"></a>
 <span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    public AssignmentManager getAssignmentManager()<a name="line.237"></a>
+<span class="sourceLineNo">237</span>    public List&lt;ServerName&gt; getServers()<a name="line.237"></a>
 <span class="sourceLineNo">238</span>    {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      return m_assignmentManager;<a name="line.239"></a>
+<span class="sourceLineNo">239</span>      return m_servers;<a name="line.239"></a>
 <span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    private AssignmentManager m_assignmentManager;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.242"></a>
+<span class="sourceLineNo">241</span>    private List&lt;ServerName&gt; m_servers;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public boolean getServers__IsNotDefault()<a name="line.242"></a>
 <span class="sourceLineNo">243</span>    {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return m_assignmentManager__IsNotDefault;<a name="line.244"></a>
+<span class="sourceLineNo">244</span>      return m_servers__IsNotDefault;<a name="line.244"></a>
 <span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    // 28, 1<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    public void setServerManager(ServerManager serverManager)<a name="line.248"></a>
+<span class="sourceLineNo">246</span>    private boolean m_servers__IsNotDefault;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    // 25, 1<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.248"></a>
 <span class="sourceLineNo">249</span>    {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      // 28, 1<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      m_serverManager = serverManager;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      m_serverManager__IsNotDefault = true;<a name="line.252"></a>
+<span class="sourceLineNo">250</span>      // 25, 1<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.252"></a>
 <span class="sourceLineNo">253</span>    }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    public ServerManager getServerManager()<a name="line.254"></a>
+<span class="sourceLineNo">254</span>    public boolean getCatalogJanitorEnabled()<a name="line.254"></a>
 <span class="sourceLineNo">255</span>    {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      return m_serverManager;<a name="line.256"></a>
+<span class="sourceLineNo">256</span>      return m_catalogJanitorEnabled;<a name="line.256"></a>
 <span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    private ServerManager m_serverManager;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    public boolean getServerManager__IsNotDefault()<a name="line.259"></a>
+<span class="sourceLineNo">258</span>    private boolean m_catalogJanitorEnabled;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.259"></a>
 <span class="sourceLineNo">260</span>    {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return m_serverManager__IsNotDefault;<a name="line.261"></a>
+<span class="sourceLineNo">261</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.261"></a>
 <span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private boolean m_serverManager__IsNotDefault;<a name="line.263"></a>
+<span class="sourceLineNo">263</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.263"></a>
 <span class="sourceLineNo">264</span>  }<a name="line.264"></a>
 <span class="sourceLineNo">265</span>  @Override<a name="line.265"></a>
 <span class="sourceLineNo">266</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.266"></a>
@@ -280,66 +280,66 @@
 <span class="sourceLineNo">272</span>    return (ImplData) super.getImplData();<a name="line.272"></a>
 <span class="sourceLineNo">273</span>  }<a name="line.273"></a>
 <span class="sourceLineNo">274</span>  <a name="line.274"></a>
-<span class="sourceLineNo">275</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.276"></a>
+<span class="sourceLineNo">275</span>  protected ServerManager serverManager;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.276"></a>
 <span class="sourceLineNo">277</span>  {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    (getImplData()).setFrags(p_frags);<a name="line.278"></a>
+<span class="sourceLineNo">278</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.278"></a>
 <span class="sourceLineNo">279</span>    return this;<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>  protected boolean catalogJanitorEnabled;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.283"></a>
+<span class="sourceLineNo">282</span>  protected ServerName metaLocation;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.283"></a>
 <span class="sourceLineNo">284</span>  {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.285"></a>
+<span class="sourceLineNo">285</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.285"></a>
 <span class="sourceLineNo">286</span>    return this;<a name="line.286"></a>
 <span class="sourceLineNo">287</span>  }<a name="line.287"></a>
 <span class="sourceLineNo">288</span>  <a name="line.288"></a>
-<span class="sourceLineNo">289</span>  protected String filter;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.290"></a>
+<span class="sourceLineNo">289</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.290"></a>
 <span class="sourceLineNo">291</span>  {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    (getImplData()).setFilter(p_filter);<a name="line.292"></a>
+<span class="sourceLineNo">292</span>    (getImplData()).setFrags(p_frags);<a name="line.292"></a>
 <span class="sourceLineNo">293</span>    return this;<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>  protected Set&lt;ServerName&gt; deadServers;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.297"></a>
+<span class="sourceLineNo">296</span>  protected String filter;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.297"></a>
 <span class="sourceLineNo">298</span>  {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.299"></a>
+<span class="sourceLineNo">299</span>    (getImplData()).setFilter(p_filter);<a name="line.299"></a>
 <span class="sourceLineNo">300</span>    return this;<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>  protected String format;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.304"></a>
+<span class="sourceLineNo">303</span>  protected Set&lt;ServerName&gt; deadServers;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.304"></a>
 <span class="sourceLineNo">305</span>  {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    (getImplData()).setFormat(p_format);<a name="line.306"></a>
+<span class="sourceLineNo">306</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.306"></a>
 <span class="sourceLineNo">307</span>    return this;<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>
-<span class="sourceLineNo">310</span>  protected List&lt;ServerName&gt; servers;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.311"></a>
+<span class="sourceLineNo">310</span>  protected String format;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.311"></a>
 <span class="sourceLineNo">312</span>  {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    (getImplData()).setServers(p_servers);<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    (getImplData()).setFormat(p_format);<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    return this;<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>  protected ServerName metaLocation;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.318"></a>
+<span class="sourceLineNo">317</span>  protected AssignmentManager assignmentManager;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.318"></a>
 <span class="sourceLineNo">319</span>  {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.320"></a>
+<span class="sourceLineNo">320</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.320"></a>
 <span class="sourceLineNo">321</span>    return this;<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>  protected AssignmentManager assignmentManager;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.325"></a>
+<span class="sourceLineNo">324</span>  protected List&lt;ServerName&gt; servers;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.325"></a>
 <span class="sourceLineNo">326</span>  {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.327"></a>
+<span class="sourceLineNo">327</span>    (getImplData()).setServers(p_servers);<a name="line.327"></a>
 <span class="sourceLineNo">328</span>    return this;<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>  protected ServerManager serverManager;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.332"></a>
+<span class="sourceLineNo">331</span>  protected boolean catalogJanitorEnabled;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.332"></a>
 <span class="sourceLineNo">333</span>  {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.334"></a>
+<span class="sourceLineNo">334</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.334"></a>
 <span class="sourceLineNo">335</span>    return this;<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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
index 52d47c0..b8ef76a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
@@ -67,15 +67,15 @@
 <span class="sourceLineNo">059</span>  requiredArguments = {<a name="line.59"></a>
 <span class="sourceLineNo">060</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.60"></a>
 <span class="sourceLineNo">061</span>  optionalArguments = {<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager")})<a name="line.70"></a>
+<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean")})<a name="line.70"></a>
 <span class="sourceLineNo">071</span>public class MasterStatusTmpl<a name="line.71"></a>
 <span class="sourceLineNo">072</span>  extends org.jamon.AbstractTemplateProxy<a name="line.72"></a>
 <span class="sourceLineNo">073</span>{<a name="line.73"></a>
@@ -116,159 +116,159 @@
 <span class="sourceLineNo">108</span>      return m_master;<a name="line.108"></a>
 <span class="sourceLineNo">109</span>    }<a name="line.109"></a>
 <span class="sourceLineNo">110</span>    private HMaster m_master;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    // 21, 1<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.112"></a>
+<span class="sourceLineNo">111</span>    // 28, 1<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    public void setServerManager(ServerManager serverManager)<a name="line.112"></a>
 <span class="sourceLineNo">113</span>    {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      // 21, 1<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      m_frags = frags;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      m_frags__IsNotDefault = true;<a name="line.116"></a>
+<span class="sourceLineNo">114</span>      // 28, 1<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      m_serverManager = serverManager;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      m_serverManager__IsNotDefault = true;<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.118"></a>
+<span class="sourceLineNo">118</span>    public ServerManager getServerManager()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_frags;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_serverManager;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    public boolean getFrags__IsNotDefault()<a name="line.123"></a>
+<span class="sourceLineNo">122</span>    private ServerManager m_serverManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    public boolean getServerManager__IsNotDefault()<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      return m_frags__IsNotDefault;<a name="line.125"></a>
+<span class="sourceLineNo">125</span>      return m_serverManager__IsNotDefault;<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    private boolean m_frags__IsNotDefault;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    // 25, 1<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.129"></a>
+<span class="sourceLineNo">127</span>    private boolean m_serverManager__IsNotDefault;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    // 22, 1<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.129"></a>
 <span class="sourceLineNo">130</span>    {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      // 25, 1<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.133"></a>
+<span class="sourceLineNo">131</span>      // 22, 1<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      m_metaLocation = metaLocation;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      m_metaLocation__IsNotDefault = true;<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    }<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getCatalogJanitorEnabled()<a name="line.135"></a>
+<span class="sourceLineNo">135</span>    public ServerName getMetaLocation()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_catalogJanitorEnabled;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_metaLocation;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_catalogJanitorEnabled;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.140"></a>
+<span class="sourceLineNo">139</span>    private ServerName m_metaLocation;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.140"></a>
 <span class="sourceLineNo">141</span>    {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.142"></a>
+<span class="sourceLineNo">142</span>      return m_metaLocation__IsNotDefault;<a name="line.142"></a>
 <span class="sourceLineNo">143</span>    }<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    // 26, 1<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    public void setFilter(String filter)<a name="line.146"></a>
+<span class="sourceLineNo">144</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    // 21, 1<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.146"></a>
 <span class="sourceLineNo">147</span>    {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      // 26, 1<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      m_filter = filter;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      m_filter__IsNotDefault = true;<a name="line.150"></a>
+<span class="sourceLineNo">148</span>      // 21, 1<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      m_frags = frags;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      m_frags__IsNotDefault = true;<a name="line.150"></a>
 <span class="sourceLineNo">151</span>    }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public String getFilter()<a name="line.152"></a>
+<span class="sourceLineNo">152</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.152"></a>
 <span class="sourceLineNo">153</span>    {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      return m_filter;<a name="line.154"></a>
+<span class="sourceLineNo">154</span>      return m_frags;<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    private String m_filter;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    public boolean getFilter__IsNotDefault()<a name="line.157"></a>
+<span class="sourceLineNo">156</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public boolean getFrags__IsNotDefault()<a name="line.157"></a>
 <span class="sourceLineNo">158</span>    {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      return m_filter__IsNotDefault;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>      return m_frags__IsNotDefault;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    private boolean m_filter__IsNotDefault;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // 24, 1<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.163"></a>
+<span class="sourceLineNo">161</span>    private boolean m_frags__IsNotDefault;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // 26, 1<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    public void setFilter(String filter)<a name="line.163"></a>
 <span class="sourceLineNo">164</span>    {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      // 24, 1<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      m_deadServers = deadServers;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      m_deadServers__IsNotDefault = true;<a name="line.167"></a>
+<span class="sourceLineNo">165</span>      // 26, 1<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      m_filter = filter;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      m_filter__IsNotDefault = true;<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.169"></a>
+<span class="sourceLineNo">169</span>    public String getFilter()<a name="line.169"></a>
 <span class="sourceLineNo">170</span>    {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return m_deadServers;<a name="line.171"></a>
+<span class="sourceLineNo">171</span>      return m_filter;<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public boolean getDeadServers__IsNotDefault()<a name="line.174"></a>
+<span class="sourceLineNo">173</span>    private String m_filter;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    public boolean getFilter__IsNotDefault()<a name="line.174"></a>
 <span class="sourceLineNo">175</span>    {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      return m_deadServers__IsNotDefault;<a name="line.176"></a>
+<span class="sourceLineNo">176</span>      return m_filter__IsNotDefault;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    private boolean m_deadServers__IsNotDefault;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    // 27, 1<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    public void setFormat(String format)<a name="line.180"></a>
+<span class="sourceLineNo">178</span>    private boolean m_filter__IsNotDefault;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    // 24, 1<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.180"></a>
 <span class="sourceLineNo">181</span>    {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      // 27, 1<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      m_format = format;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      m_format__IsNotDefault = true;<a name="line.184"></a>
+<span class="sourceLineNo">182</span>      // 24, 1<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      m_deadServers = deadServers;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      m_deadServers__IsNotDefault = true;<a name="line.184"></a>
 <span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    public String getFormat()<a name="line.186"></a>
+<span class="sourceLineNo">186</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.186"></a>
 <span class="sourceLineNo">187</span>    {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      return m_format;<a name="line.188"></a>
+<span class="sourceLineNo">188</span>      return m_deadServers;<a name="line.188"></a>
 <span class="sourceLineNo">189</span>    }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    private String m_format;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    public boolean getFormat__IsNotDefault()<a name="line.191"></a>
+<span class="sourceLineNo">190</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    public boolean getDeadServers__IsNotDefault()<a name="line.191"></a>
 <span class="sourceLineNo">192</span>    {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      return m_format__IsNotDefault;<a name="line.193"></a>
+<span class="sourceLineNo">193</span>      return m_deadServers__IsNotDefault;<a name="line.193"></a>
 <span class="sourceLineNo">194</span>    }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    private boolean m_format__IsNotDefault;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // 23, 1<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.197"></a>
+<span class="sourceLineNo">195</span>    private boolean m_deadServers__IsNotDefault;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // 27, 1<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    public void setFormat(String format)<a name="line.197"></a>
 <span class="sourceLineNo">198</span>    {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      // 23, 1<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      m_servers = servers;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      m_servers__IsNotDefault = true;<a name="line.201"></a>
+<span class="sourceLineNo">199</span>      // 27, 1<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      m_format = format;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      m_format__IsNotDefault = true;<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    public List&lt;ServerName&gt; getServers()<a name="line.203"></a>
+<span class="sourceLineNo">203</span>    public String getFormat()<a name="line.203"></a>
 <span class="sourceLineNo">204</span>    {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return m_servers;<a name="line.205"></a>
+<span class="sourceLineNo">205</span>      return m_format;<a name="line.205"></a>
 <span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    private List&lt;ServerName&gt; m_servers;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    public boolean getServers__IsNotDefault()<a name="line.208"></a>
+<span class="sourceLineNo">207</span>    private String m_format;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public boolean getFormat__IsNotDefault()<a name="line.208"></a>
 <span class="sourceLineNo">209</span>    {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      return m_servers__IsNotDefault;<a name="line.210"></a>
+<span class="sourceLineNo">210</span>      return m_format__IsNotDefault;<a name="line.210"></a>
 <span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    private boolean m_servers__IsNotDefault;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    // 22, 1<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.214"></a>
+<span class="sourceLineNo">212</span>    private boolean m_format__IsNotDefault;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    // 29, 1<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      // 22, 1<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      m_metaLocation = metaLocation;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      m_metaLocation__IsNotDefault = true;<a name="line.218"></a>
+<span class="sourceLineNo">216</span>      // 29, 1<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      m_assignmentManager = assignmentManager;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      m_assignmentManager__IsNotDefault = true;<a name="line.218"></a>
 <span class="sourceLineNo">219</span>    }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    public ServerName getMetaLocation()<a name="line.220"></a>
+<span class="sourceLineNo">220</span>    public AssignmentManager getAssignmentManager()<a name="line.220"></a>
 <span class="sourceLineNo">221</span>    {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return m_metaLocation;<a name="line.222"></a>
+<span class="sourceLineNo">222</span>      return m_assignmentManager;<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    private ServerName m_metaLocation;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.225"></a>
+<span class="sourceLineNo">224</span>    private AssignmentManager m_assignmentManager;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.225"></a>
 <span class="sourceLineNo">226</span>    {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return m_metaLocation__IsNotDefault;<a name="line.227"></a>
+<span class="sourceLineNo">227</span>      return m_assignmentManager__IsNotDefault;<a name="line.227"></a>
 <span class="sourceLineNo">228</span>    }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // 29, 1<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.231"></a>
+<span class="sourceLineNo">229</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    // 23, 1<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.231"></a>
 <span class="sourceLineNo">232</span>    {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      // 29, 1<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      m_assignmentManager = assignmentManager;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      m_assignmentManager__IsNotDefault = true;<a name="line.235"></a>
+<span class="sourceLineNo">233</span>      // 23, 1<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      m_servers = servers;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      m_servers__IsNotDefault = true;<a name="line.235"></a>
 <span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    public AssignmentManager getAssignmentManager()<a name="line.237"></a>
+<span class="sourceLineNo">237</span>    public List&lt;ServerName&gt; getServers()<a name="line.237"></a>
 <span class="sourceLineNo">238</span>    {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      return m_assignmentManager;<a name="line.239"></a>
+<span class="sourceLineNo">239</span>      return m_servers;<a name="line.239"></a>
 <span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    private AssignmentManager m_assignmentManager;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.242"></a>
+<span class="sourceLineNo">241</span>    private List&lt;ServerName&gt; m_servers;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public boolean getServers__IsNotDefault()<a name="line.242"></a>
 <span class="sourceLineNo">243</span>    {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return m_assignmentManager__IsNotDefault;<a name="line.244"></a>
+<span class="sourceLineNo">244</span>      return m_servers__IsNotDefault;<a name="line.244"></a>
 <span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    // 28, 1<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    public void setServerManager(ServerManager serverManager)<a name="line.248"></a>
+<span class="sourceLineNo">246</span>    private boolean m_servers__IsNotDefault;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    // 25, 1<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.248"></a>
 <span class="sourceLineNo">249</span>    {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      // 28, 1<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      m_serverManager = serverManager;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      m_serverManager__IsNotDefault = true;<a name="line.252"></a>
+<span class="sourceLineNo">250</span>      // 25, 1<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.252"></a>
 <span class="sourceLineNo">253</span>    }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    public ServerManager getServerManager()<a name="line.254"></a>
+<span class="sourceLineNo">254</span>    public boolean getCatalogJanitorEnabled()<a name="line.254"></a>
 <span class="sourceLineNo">255</span>    {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      return m_serverManager;<a name="line.256"></a>
+<span class="sourceLineNo">256</span>      return m_catalogJanitorEnabled;<a name="line.256"></a>
 <span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    private ServerManager m_serverManager;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    public boolean getServerManager__IsNotDefault()<a name="line.259"></a>
+<span class="sourceLineNo">258</span>    private boolean m_catalogJanitorEnabled;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.259"></a>
 <span class="sourceLineNo">260</span>    {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return m_serverManager__IsNotDefault;<a name="line.261"></a>
+<span class="sourceLineNo">261</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.261"></a>
 <span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private boolean m_serverManager__IsNotDefault;<a name="line.263"></a>
+<span class="sourceLineNo">263</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.263"></a>
 <span class="sourceLineNo">264</span>  }<a name="line.264"></a>
 <span class="sourceLineNo">265</span>  @Override<a name="line.265"></a>
 <span class="sourceLineNo">266</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.266"></a>
@@ -280,66 +280,66 @@
 <span class="sourceLineNo">272</span>    return (ImplData) super.getImplData();<a name="line.272"></a>
 <span class="sourceLineNo">273</span>  }<a name="line.273"></a>
 <span class="sourceLineNo">274</span>  <a name="line.274"></a>
-<span class="sourceLineNo">275</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.276"></a>
+<span class="sourceLineNo">275</span>  protected ServerManager serverManager;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.276"></a>
 <span class="sourceLineNo">277</span>  {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    (getImplData()).setFrags(p_frags);<a name="line.278"></a>
+<span class="sourceLineNo">278</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.278"></a>
 <span class="sourceLineNo">279</span>    return this;<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>  protected boolean catalogJanitorEnabled;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.283"></a>
+<span class="sourceLineNo">282</span>  protected ServerName metaLocation;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.283"></a>
 <span class="sourceLineNo">284</span>  {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.285"></a>
+<span class="sourceLineNo">285</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.285"></a>
 <span class="sourceLineNo">286</span>    return this;<a name="line.286"></a>
 <span class="sourceLineNo">287</span>  }<a name="line.287"></a>
 <span class="sourceLineNo">288</span>  <a name="line.288"></a>
-<span class="sourceLineNo">289</span>  protected String filter;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.290"></a>
+<span class="sourceLineNo">289</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.290"></a>
 <span class="sourceLineNo">291</span>  {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    (getImplData()).setFilter(p_filter);<a name="line.292"></a>
+<span class="sourceLineNo">292</span>    (getImplData()).setFrags(p_frags);<a name="line.292"></a>
 <span class="sourceLineNo">293</span>    return this;<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>  protected Set&lt;ServerName&gt; deadServers;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.297"></a>
+<span class="sourceLineNo">296</span>  protected String filter;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.297"></a>
 <span class="sourceLineNo">298</span>  {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.299"></a>
+<span class="sourceLineNo">299</span>    (getImplData()).setFilter(p_filter);<a name="line.299"></a>
 <span class="sourceLineNo">300</span>    return this;<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>  protected String format;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.304"></a>
+<span class="sourceLineNo">303</span>  protected Set&lt;ServerName&gt; deadServers;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.304"></a>
 <span class="sourceLineNo">305</span>  {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    (getImplData()).setFormat(p_format);<a name="line.306"></a>
+<span class="sourceLineNo">306</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.306"></a>
 <span class="sourceLineNo">307</span>    return this;<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>
-<span class="sourceLineNo">310</span>  protected List&lt;ServerName&gt; servers;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.311"></a>
+<span class="sourceLineNo">310</span>  protected String format;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.311"></a>
 <span class="sourceLineNo">312</span>  {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    (getImplData()).setServers(p_servers);<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    (getImplData()).setFormat(p_format);<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    return this;<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>  protected ServerName metaLocation;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.318"></a>
+<span class="sourceLineNo">317</span>  protected AssignmentManager assignmentManager;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.318"></a>
 <span class="sourceLineNo">319</span>  {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.320"></a>
+<span class="sourceLineNo">320</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.320"></a>
 <span class="sourceLineNo">321</span>    return this;<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>  protected AssignmentManager assignmentManager;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.325"></a>
+<span class="sourceLineNo">324</span>  protected List&lt;ServerName&gt; servers;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.325"></a>
 <span class="sourceLineNo">326</span>  {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.327"></a>
+<span class="sourceLineNo">327</span>    (getImplData()).setServers(p_servers);<a name="line.327"></a>
 <span class="sourceLineNo">328</span>    return this;<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>  protected ServerManager serverManager;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.332"></a>
+<span class="sourceLineNo">331</span>  protected boolean catalogJanitorEnabled;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.332"></a>
 <span class="sourceLineNo">333</span>  {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.334"></a>
+<span class="sourceLineNo">334</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.334"></a>
 <span class="sourceLineNo">335</span>    return this;<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>


[23/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Call.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Call.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Call.html
index e5d9af6..ea9ea4d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Call.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Call.html
@@ -2107,556 +2107,559 @@
 <span class="sourceLineNo">2099</span>  @Override<a name="line.2099"></a>
 <span class="sourceLineNo">2100</span>  public void onConfigurationChange(Configuration newConf) {<a name="line.2100"></a>
 <span class="sourceLineNo">2101</span>    initReconfigurable(newConf);<a name="line.2101"></a>
-<span class="sourceLineNo">2102</span>  }<a name="line.2102"></a>
-<span class="sourceLineNo">2103</span><a name="line.2103"></a>
-<span class="sourceLineNo">2104</span>  private void initReconfigurable(Configuration confToLoad) {<a name="line.2104"></a>
-<span class="sourceLineNo">2105</span>    this.allowFallbackToSimpleAuth = confToLoad.getBoolean(FALLBACK_TO_INSECURE_CLIENT_AUTH, false);<a name="line.2105"></a>
-<span class="sourceLineNo">2106</span>    if (isSecurityEnabled &amp;&amp; allowFallbackToSimpleAuth) {<a name="line.2106"></a>
-<span class="sourceLineNo">2107</span>      LOG.warn("********* WARNING! *********");<a name="line.2107"></a>
-<span class="sourceLineNo">2108</span>      LOG.warn("This server is configured to allow connections from INSECURE clients");<a name="line.2108"></a>
-<span class="sourceLineNo">2109</span>      LOG.warn("(" + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = true).");<a name="line.2109"></a>
-<span class="sourceLineNo">2110</span>      LOG.warn("While this option is enabled, client identities cannot be secured, and user");<a name="line.2110"></a>
-<span class="sourceLineNo">2111</span>      LOG.warn("impersonation is possible!");<a name="line.2111"></a>
-<span class="sourceLineNo">2112</span>      LOG.warn("For secure operation, please disable SIMPLE authentication as soon as possible,");<a name="line.2112"></a>
-<span class="sourceLineNo">2113</span>      LOG.warn("by setting " + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = false in hbase-site.xml");<a name="line.2113"></a>
-<span class="sourceLineNo">2114</span>      LOG.warn("****************************");<a name="line.2114"></a>
-<span class="sourceLineNo">2115</span>    }<a name="line.2115"></a>
-<span class="sourceLineNo">2116</span>  }<a name="line.2116"></a>
-<span class="sourceLineNo">2117</span><a name="line.2117"></a>
-<span class="sourceLineNo">2118</span>  /**<a name="line.2118"></a>
-<span class="sourceLineNo">2119</span>   * Subclasses of HBaseServer can override this to provide their own<a name="line.2119"></a>
-<span class="sourceLineNo">2120</span>   * Connection implementations.<a name="line.2120"></a>
-<span class="sourceLineNo">2121</span>   */<a name="line.2121"></a>
-<span class="sourceLineNo">2122</span>  protected Connection getConnection(SocketChannel channel, long time) {<a name="line.2122"></a>
-<span class="sourceLineNo">2123</span>    return new Connection(channel, time);<a name="line.2123"></a>
-<span class="sourceLineNo">2124</span>  }<a name="line.2124"></a>
-<span class="sourceLineNo">2125</span><a name="line.2125"></a>
-<span class="sourceLineNo">2126</span>  /**<a name="line.2126"></a>
-<span class="sourceLineNo">2127</span>   * Setup response for the RPC Call.<a name="line.2127"></a>
-<span class="sourceLineNo">2128</span>   *<a name="line.2128"></a>
-<span class="sourceLineNo">2129</span>   * @param response buffer to serialize the response into<a name="line.2129"></a>
-<span class="sourceLineNo">2130</span>   * @param call {@link Call} to which we are setting up the response<a name="line.2130"></a>
-<span class="sourceLineNo">2131</span>   * @param error error message, if the call failed<a name="line.2131"></a>
-<span class="sourceLineNo">2132</span>   * @throws IOException<a name="line.2132"></a>
-<span class="sourceLineNo">2133</span>   */<a name="line.2133"></a>
-<span class="sourceLineNo">2134</span>  private void setupResponse(ByteArrayOutputStream response, Call call, Throwable t, String error)<a name="line.2134"></a>
-<span class="sourceLineNo">2135</span>  throws IOException {<a name="line.2135"></a>
-<span class="sourceLineNo">2136</span>    if (response != null) response.reset();<a name="line.2136"></a>
-<span class="sourceLineNo">2137</span>    call.setResponse(null, null, t, error);<a name="line.2137"></a>
-<span class="sourceLineNo">2138</span>  }<a name="line.2138"></a>
-<span class="sourceLineNo">2139</span><a name="line.2139"></a>
-<span class="sourceLineNo">2140</span>  protected void closeConnection(Connection connection) {<a name="line.2140"></a>
-<span class="sourceLineNo">2141</span>    synchronized (connectionList) {<a name="line.2141"></a>
-<span class="sourceLineNo">2142</span>      if (connectionList.remove(connection)) {<a name="line.2142"></a>
-<span class="sourceLineNo">2143</span>        numConnections--;<a name="line.2143"></a>
-<span class="sourceLineNo">2144</span>      }<a name="line.2144"></a>
-<span class="sourceLineNo">2145</span>    }<a name="line.2145"></a>
-<span class="sourceLineNo">2146</span>    connection.close();<a name="line.2146"></a>
-<span class="sourceLineNo">2147</span>  }<a name="line.2147"></a>
-<span class="sourceLineNo">2148</span><a name="line.2148"></a>
-<span class="sourceLineNo">2149</span>  Configuration getConf() {<a name="line.2149"></a>
-<span class="sourceLineNo">2150</span>    return conf;<a name="line.2150"></a>
-<span class="sourceLineNo">2151</span>  }<a name="line.2151"></a>
-<span class="sourceLineNo">2152</span><a name="line.2152"></a>
-<span class="sourceLineNo">2153</span>  /** Sets the socket buffer size used for responding to RPCs.<a name="line.2153"></a>
-<span class="sourceLineNo">2154</span>   * @param size send size<a name="line.2154"></a>
-<span class="sourceLineNo">2155</span>   */<a name="line.2155"></a>
-<span class="sourceLineNo">2156</span>  @Override<a name="line.2156"></a>
-<span class="sourceLineNo">2157</span>  public void setSocketSendBufSize(int size) { this.socketSendBufferSize = size; }<a name="line.2157"></a>
-<span class="sourceLineNo">2158</span><a name="line.2158"></a>
+<span class="sourceLineNo">2102</span>    if (scheduler instanceof ConfigurationObserver) {<a name="line.2102"></a>
+<span class="sourceLineNo">2103</span>      ((ConfigurationObserver)scheduler).onConfigurationChange(newConf);<a name="line.2103"></a>
+<span class="sourceLineNo">2104</span>    }<a name="line.2104"></a>
+<span class="sourceLineNo">2105</span>  }<a name="line.2105"></a>
+<span class="sourceLineNo">2106</span><a name="line.2106"></a>
+<span class="sourceLineNo">2107</span>  private void initReconfigurable(Configuration confToLoad) {<a name="line.2107"></a>
+<span class="sourceLineNo">2108</span>    this.allowFallbackToSimpleAuth = confToLoad.getBoolean(FALLBACK_TO_INSECURE_CLIENT_AUTH, false);<a name="line.2108"></a>
+<span class="sourceLineNo">2109</span>    if (isSecurityEnabled &amp;&amp; allowFallbackToSimpleAuth) {<a name="line.2109"></a>
+<span class="sourceLineNo">2110</span>      LOG.warn("********* WARNING! *********");<a name="line.2110"></a>
+<span class="sourceLineNo">2111</span>      LOG.warn("This server is configured to allow connections from INSECURE clients");<a name="line.2111"></a>
+<span class="sourceLineNo">2112</span>      LOG.warn("(" + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = true).");<a name="line.2112"></a>
+<span class="sourceLineNo">2113</span>      LOG.warn("While this option is enabled, client identities cannot be secured, and user");<a name="line.2113"></a>
+<span class="sourceLineNo">2114</span>      LOG.warn("impersonation is possible!");<a name="line.2114"></a>
+<span class="sourceLineNo">2115</span>      LOG.warn("For secure operation, please disable SIMPLE authentication as soon as possible,");<a name="line.2115"></a>
+<span class="sourceLineNo">2116</span>      LOG.warn("by setting " + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = false in hbase-site.xml");<a name="line.2116"></a>
+<span class="sourceLineNo">2117</span>      LOG.warn("****************************");<a name="line.2117"></a>
+<span class="sourceLineNo">2118</span>    }<a name="line.2118"></a>
+<span class="sourceLineNo">2119</span>  }<a name="line.2119"></a>
+<span class="sourceLineNo">2120</span><a name="line.2120"></a>
+<span class="sourceLineNo">2121</span>  /**<a name="line.2121"></a>
+<span class="sourceLineNo">2122</span>   * Subclasses of HBaseServer can override this to provide their own<a name="line.2122"></a>
+<span class="sourceLineNo">2123</span>   * Connection implementations.<a name="line.2123"></a>
+<span class="sourceLineNo">2124</span>   */<a name="line.2124"></a>
+<span class="sourceLineNo">2125</span>  protected Connection getConnection(SocketChannel channel, long time) {<a name="line.2125"></a>
+<span class="sourceLineNo">2126</span>    return new Connection(channel, time);<a name="line.2126"></a>
+<span class="sourceLineNo">2127</span>  }<a name="line.2127"></a>
+<span class="sourceLineNo">2128</span><a name="line.2128"></a>
+<span class="sourceLineNo">2129</span>  /**<a name="line.2129"></a>
+<span class="sourceLineNo">2130</span>   * Setup response for the RPC Call.<a name="line.2130"></a>
+<span class="sourceLineNo">2131</span>   *<a name="line.2131"></a>
+<span class="sourceLineNo">2132</span>   * @param response buffer to serialize the response into<a name="line.2132"></a>
+<span class="sourceLineNo">2133</span>   * @param call {@link Call} to which we are setting up the response<a name="line.2133"></a>
+<span class="sourceLineNo">2134</span>   * @param error error message, if the call failed<a name="line.2134"></a>
+<span class="sourceLineNo">2135</span>   * @throws IOException<a name="line.2135"></a>
+<span class="sourceLineNo">2136</span>   */<a name="line.2136"></a>
+<span class="sourceLineNo">2137</span>  private void setupResponse(ByteArrayOutputStream response, Call call, Throwable t, String error)<a name="line.2137"></a>
+<span class="sourceLineNo">2138</span>  throws IOException {<a name="line.2138"></a>
+<span class="sourceLineNo">2139</span>    if (response != null) response.reset();<a name="line.2139"></a>
+<span class="sourceLineNo">2140</span>    call.setResponse(null, null, t, error);<a name="line.2140"></a>
+<span class="sourceLineNo">2141</span>  }<a name="line.2141"></a>
+<span class="sourceLineNo">2142</span><a name="line.2142"></a>
+<span class="sourceLineNo">2143</span>  protected void closeConnection(Connection connection) {<a name="line.2143"></a>
+<span class="sourceLineNo">2144</span>    synchronized (connectionList) {<a name="line.2144"></a>
+<span class="sourceLineNo">2145</span>      if (connectionList.remove(connection)) {<a name="line.2145"></a>
+<span class="sourceLineNo">2146</span>        numConnections--;<a name="line.2146"></a>
+<span class="sourceLineNo">2147</span>      }<a name="line.2147"></a>
+<span class="sourceLineNo">2148</span>    }<a name="line.2148"></a>
+<span class="sourceLineNo">2149</span>    connection.close();<a name="line.2149"></a>
+<span class="sourceLineNo">2150</span>  }<a name="line.2150"></a>
+<span class="sourceLineNo">2151</span><a name="line.2151"></a>
+<span class="sourceLineNo">2152</span>  Configuration getConf() {<a name="line.2152"></a>
+<span class="sourceLineNo">2153</span>    return conf;<a name="line.2153"></a>
+<span class="sourceLineNo">2154</span>  }<a name="line.2154"></a>
+<span class="sourceLineNo">2155</span><a name="line.2155"></a>
+<span class="sourceLineNo">2156</span>  /** Sets the socket buffer size used for responding to RPCs.<a name="line.2156"></a>
+<span class="sourceLineNo">2157</span>   * @param size send size<a name="line.2157"></a>
+<span class="sourceLineNo">2158</span>   */<a name="line.2158"></a>
 <span class="sourceLineNo">2159</span>  @Override<a name="line.2159"></a>
-<span class="sourceLineNo">2160</span>  public boolean isStarted() {<a name="line.2160"></a>
-<span class="sourceLineNo">2161</span>    return this.started;<a name="line.2161"></a>
-<span class="sourceLineNo">2162</span>  }<a name="line.2162"></a>
-<span class="sourceLineNo">2163</span><a name="line.2163"></a>
-<span class="sourceLineNo">2164</span>  /** Starts the service.  Must be called before any calls will be handled. */<a name="line.2164"></a>
-<span class="sourceLineNo">2165</span>  @Override<a name="line.2165"></a>
-<span class="sourceLineNo">2166</span>  public synchronized void start() {<a name="line.2166"></a>
-<span class="sourceLineNo">2167</span>    if (started) return;<a name="line.2167"></a>
-<span class="sourceLineNo">2168</span>    authTokenSecretMgr = createSecretManager();<a name="line.2168"></a>
-<span class="sourceLineNo">2169</span>    if (authTokenSecretMgr != null) {<a name="line.2169"></a>
-<span class="sourceLineNo">2170</span>      setSecretManager(authTokenSecretMgr);<a name="line.2170"></a>
-<span class="sourceLineNo">2171</span>      authTokenSecretMgr.start();<a name="line.2171"></a>
-<span class="sourceLineNo">2172</span>    }<a name="line.2172"></a>
-<span class="sourceLineNo">2173</span>    this.authManager = new ServiceAuthorizationManager();<a name="line.2173"></a>
-<span class="sourceLineNo">2174</span>    HBasePolicyProvider.init(conf, authManager);<a name="line.2174"></a>
-<span class="sourceLineNo">2175</span>    responder.start();<a name="line.2175"></a>
-<span class="sourceLineNo">2176</span>    listener.start();<a name="line.2176"></a>
-<span class="sourceLineNo">2177</span>    scheduler.start();<a name="line.2177"></a>
-<span class="sourceLineNo">2178</span>    started = true;<a name="line.2178"></a>
-<span class="sourceLineNo">2179</span>  }<a name="line.2179"></a>
-<span class="sourceLineNo">2180</span><a name="line.2180"></a>
-<span class="sourceLineNo">2181</span>  @Override<a name="line.2181"></a>
-<span class="sourceLineNo">2182</span>  public synchronized void refreshAuthManager(PolicyProvider pp) {<a name="line.2182"></a>
-<span class="sourceLineNo">2183</span>    // Ignore warnings that this should be accessed in a static way instead of via an instance;<a name="line.2183"></a>
-<span class="sourceLineNo">2184</span>    // it'll break if you go via static route.<a name="line.2184"></a>
-<span class="sourceLineNo">2185</span>    this.authManager.refresh(this.conf, pp);<a name="line.2185"></a>
-<span class="sourceLineNo">2186</span>  }<a name="line.2186"></a>
-<span class="sourceLineNo">2187</span><a name="line.2187"></a>
-<span class="sourceLineNo">2188</span>  private AuthenticationTokenSecretManager createSecretManager() {<a name="line.2188"></a>
-<span class="sourceLineNo">2189</span>    if (!isSecurityEnabled) return null;<a name="line.2189"></a>
-<span class="sourceLineNo">2190</span>    if (server == null) return null;<a name="line.2190"></a>
-<span class="sourceLineNo">2191</span>    Configuration conf = server.getConfiguration();<a name="line.2191"></a>
-<span class="sourceLineNo">2192</span>    long keyUpdateInterval =<a name="line.2192"></a>
-<span class="sourceLineNo">2193</span>        conf.getLong("hbase.auth.key.update.interval", 24*60*60*1000);<a name="line.2193"></a>
-<span class="sourceLineNo">2194</span>    long maxAge =<a name="line.2194"></a>
-<span class="sourceLineNo">2195</span>        conf.getLong("hbase.auth.token.max.lifetime", 7*24*60*60*1000);<a name="line.2195"></a>
-<span class="sourceLineNo">2196</span>    return new AuthenticationTokenSecretManager(conf, server.getZooKeeper(),<a name="line.2196"></a>
-<span class="sourceLineNo">2197</span>        server.getServerName().toString(), keyUpdateInterval, maxAge);<a name="line.2197"></a>
-<span class="sourceLineNo">2198</span>  }<a name="line.2198"></a>
-<span class="sourceLineNo">2199</span><a name="line.2199"></a>
-<span class="sourceLineNo">2200</span>  public SecretManager&lt;? extends TokenIdentifier&gt; getSecretManager() {<a name="line.2200"></a>
-<span class="sourceLineNo">2201</span>    return this.secretManager;<a name="line.2201"></a>
-<span class="sourceLineNo">2202</span>  }<a name="line.2202"></a>
-<span class="sourceLineNo">2203</span><a name="line.2203"></a>
-<span class="sourceLineNo">2204</span>  @SuppressWarnings("unchecked")<a name="line.2204"></a>
-<span class="sourceLineNo">2205</span>  public void setSecretManager(SecretManager&lt;? extends TokenIdentifier&gt; secretManager) {<a name="line.2205"></a>
-<span class="sourceLineNo">2206</span>    this.secretManager = (SecretManager&lt;TokenIdentifier&gt;) secretManager;<a name="line.2206"></a>
-<span class="sourceLineNo">2207</span>  }<a name="line.2207"></a>
-<span class="sourceLineNo">2208</span><a name="line.2208"></a>
-<span class="sourceLineNo">2209</span>  /**<a name="line.2209"></a>
-<span class="sourceLineNo">2210</span>   * This is a server side method, which is invoked over RPC. On success<a name="line.2210"></a>
-<span class="sourceLineNo">2211</span>   * the return response has protobuf response payload. On failure, the<a name="line.2211"></a>
-<span class="sourceLineNo">2212</span>   * exception name and the stack trace are returned in the protobuf response.<a name="line.2212"></a>
-<span class="sourceLineNo">2213</span>   */<a name="line.2213"></a>
-<span class="sourceLineNo">2214</span>  @Override<a name="line.2214"></a>
-<span class="sourceLineNo">2215</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,<a name="line.2215"></a>
-<span class="sourceLineNo">2216</span>      Message param, CellScanner cellScanner, long receiveTime, MonitoredRPCHandler status)<a name="line.2216"></a>
-<span class="sourceLineNo">2217</span>  throws IOException {<a name="line.2217"></a>
-<span class="sourceLineNo">2218</span>    try {<a name="line.2218"></a>
-<span class="sourceLineNo">2219</span>      status.setRPC(md.getName(), new Object[]{param}, receiveTime);<a name="line.2219"></a>
-<span class="sourceLineNo">2220</span>      // TODO: Review after we add in encoded data blocks.<a name="line.2220"></a>
-<span class="sourceLineNo">2221</span>      status.setRPCPacket(param);<a name="line.2221"></a>
-<span class="sourceLineNo">2222</span>      status.resume("Servicing call");<a name="line.2222"></a>
-<span class="sourceLineNo">2223</span>      //get an instance of the method arg type<a name="line.2223"></a>
-<span class="sourceLineNo">2224</span>      long startTime = System.currentTimeMillis();<a name="line.2224"></a>
-<span class="sourceLineNo">2225</span>      PayloadCarryingRpcController controller = new PayloadCarryingRpcController(cellScanner);<a name="line.2225"></a>
-<span class="sourceLineNo">2226</span>      Message result = service.callBlockingMethod(md, controller, param);<a name="line.2226"></a>
-<span class="sourceLineNo">2227</span>      long endTime = System.currentTimeMillis();<a name="line.2227"></a>
-<span class="sourceLineNo">2228</span>      int processingTime = (int) (endTime - startTime);<a name="line.2228"></a>
-<span class="sourceLineNo">2229</span>      int qTime = (int) (startTime - receiveTime);<a name="line.2229"></a>
-<span class="sourceLineNo">2230</span>      int totalTime = (int) (endTime - receiveTime);<a name="line.2230"></a>
-<span class="sourceLineNo">2231</span>      if (LOG.isTraceEnabled()) {<a name="line.2231"></a>
-<span class="sourceLineNo">2232</span>        LOG.trace(CurCall.get().toString() +<a name="line.2232"></a>
-<span class="sourceLineNo">2233</span>            ", response " + TextFormat.shortDebugString(result) +<a name="line.2233"></a>
-<span class="sourceLineNo">2234</span>            " queueTime: " + qTime +<a name="line.2234"></a>
-<span class="sourceLineNo">2235</span>            " processingTime: " + processingTime +<a name="line.2235"></a>
-<span class="sourceLineNo">2236</span>            " totalTime: " + totalTime);<a name="line.2236"></a>
-<span class="sourceLineNo">2237</span>      }<a name="line.2237"></a>
-<span class="sourceLineNo">2238</span>      long requestSize = param.getSerializedSize();<a name="line.2238"></a>
-<span class="sourceLineNo">2239</span>      long responseSize = result.getSerializedSize();<a name="line.2239"></a>
-<span class="sourceLineNo">2240</span>      metrics.dequeuedCall(qTime);<a name="line.2240"></a>
-<span class="sourceLineNo">2241</span>      metrics.processedCall(processingTime);<a name="line.2241"></a>
-<span class="sourceLineNo">2242</span>      metrics.totalCall(totalTime);<a name="line.2242"></a>
-<span class="sourceLineNo">2243</span>      metrics.receivedRequest(requestSize);<a name="line.2243"></a>
-<span class="sourceLineNo">2244</span>      metrics.sentResponse(responseSize);<a name="line.2244"></a>
-<span class="sourceLineNo">2245</span>      // log any RPC responses that are slower than the configured warn<a name="line.2245"></a>
-<span class="sourceLineNo">2246</span>      // response time or larger than configured warning size<a name="line.2246"></a>
-<span class="sourceLineNo">2247</span>      boolean tooSlow = (processingTime &gt; warnResponseTime &amp;&amp; warnResponseTime &gt; -1);<a name="line.2247"></a>
-<span class="sourceLineNo">2248</span>      boolean tooLarge = (responseSize &gt; warnResponseSize &amp;&amp; warnResponseSize &gt; -1);<a name="line.2248"></a>
-<span class="sourceLineNo">2249</span>      if (tooSlow || tooLarge) {<a name="line.2249"></a>
-<span class="sourceLineNo">2250</span>        // when tagging, we let TooLarge trump TooSmall to keep output simple<a name="line.2250"></a>
-<span class="sourceLineNo">2251</span>        // note that large responses will often also be slow.<a name="line.2251"></a>
-<span class="sourceLineNo">2252</span>        logResponse(new Object[]{param},<a name="line.2252"></a>
-<span class="sourceLineNo">2253</span>            md.getName(), md.getName() + "(" + param.getClass().getName() + ")",<a name="line.2253"></a>
-<span class="sourceLineNo">2254</span>            (tooLarge ? "TooLarge" : "TooSlow"),<a name="line.2254"></a>
-<span class="sourceLineNo">2255</span>            status.getClient(), startTime, processingTime, qTime,<a name="line.2255"></a>
-<span class="sourceLineNo">2256</span>            responseSize);<a name="line.2256"></a>
-<span class="sourceLineNo">2257</span>      }<a name="line.2257"></a>
-<span class="sourceLineNo">2258</span>      return new Pair&lt;Message, CellScanner&gt;(result, controller.cellScanner());<a name="line.2258"></a>
-<span class="sourceLineNo">2259</span>    } catch (Throwable e) {<a name="line.2259"></a>
-<span class="sourceLineNo">2260</span>      // The above callBlockingMethod will always return a SE.  Strip the SE wrapper before<a name="line.2260"></a>
-<span class="sourceLineNo">2261</span>      // putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't<a name="line.2261"></a>
-<span class="sourceLineNo">2262</span>      // need to pass it over the wire.<a name="line.2262"></a>
-<span class="sourceLineNo">2263</span>      if (e instanceof ServiceException) e = e.getCause();<a name="line.2263"></a>
-<span class="sourceLineNo">2264</span><a name="line.2264"></a>
-<span class="sourceLineNo">2265</span>      // increment the number of requests that were exceptions.<a name="line.2265"></a>
-<span class="sourceLineNo">2266</span>      metrics.exception(e);<a name="line.2266"></a>
+<span class="sourceLineNo">2160</span>  public void setSocketSendBufSize(int size) { this.socketSendBufferSize = size; }<a name="line.2160"></a>
+<span class="sourceLineNo">2161</span><a name="line.2161"></a>
+<span class="sourceLineNo">2162</span>  @Override<a name="line.2162"></a>
+<span class="sourceLineNo">2163</span>  public boolean isStarted() {<a name="line.2163"></a>
+<span class="sourceLineNo">2164</span>    return this.started;<a name="line.2164"></a>
+<span class="sourceLineNo">2165</span>  }<a name="line.2165"></a>
+<span class="sourceLineNo">2166</span><a name="line.2166"></a>
+<span class="sourceLineNo">2167</span>  /** Starts the service.  Must be called before any calls will be handled. */<a name="line.2167"></a>
+<span class="sourceLineNo">2168</span>  @Override<a name="line.2168"></a>
+<span class="sourceLineNo">2169</span>  public synchronized void start() {<a name="line.2169"></a>
+<span class="sourceLineNo">2170</span>    if (started) return;<a name="line.2170"></a>
+<span class="sourceLineNo">2171</span>    authTokenSecretMgr = createSecretManager();<a name="line.2171"></a>
+<span class="sourceLineNo">2172</span>    if (authTokenSecretMgr != null) {<a name="line.2172"></a>
+<span class="sourceLineNo">2173</span>      setSecretManager(authTokenSecretMgr);<a name="line.2173"></a>
+<span class="sourceLineNo">2174</span>      authTokenSecretMgr.start();<a name="line.2174"></a>
+<span class="sourceLineNo">2175</span>    }<a name="line.2175"></a>
+<span class="sourceLineNo">2176</span>    this.authManager = new ServiceAuthorizationManager();<a name="line.2176"></a>
+<span class="sourceLineNo">2177</span>    HBasePolicyProvider.init(conf, authManager);<a name="line.2177"></a>
+<span class="sourceLineNo">2178</span>    responder.start();<a name="line.2178"></a>
+<span class="sourceLineNo">2179</span>    listener.start();<a name="line.2179"></a>
+<span class="sourceLineNo">2180</span>    scheduler.start();<a name="line.2180"></a>
+<span class="sourceLineNo">2181</span>    started = true;<a name="line.2181"></a>
+<span class="sourceLineNo">2182</span>  }<a name="line.2182"></a>
+<span class="sourceLineNo">2183</span><a name="line.2183"></a>
+<span class="sourceLineNo">2184</span>  @Override<a name="line.2184"></a>
+<span class="sourceLineNo">2185</span>  public synchronized void refreshAuthManager(PolicyProvider pp) {<a name="line.2185"></a>
+<span class="sourceLineNo">2186</span>    // Ignore warnings that this should be accessed in a static way instead of via an instance;<a name="line.2186"></a>
+<span class="sourceLineNo">2187</span>    // it'll break if you go via static route.<a name="line.2187"></a>
+<span class="sourceLineNo">2188</span>    this.authManager.refresh(this.conf, pp);<a name="line.2188"></a>
+<span class="sourceLineNo">2189</span>  }<a name="line.2189"></a>
+<span class="sourceLineNo">2190</span><a name="line.2190"></a>
+<span class="sourceLineNo">2191</span>  private AuthenticationTokenSecretManager createSecretManager() {<a name="line.2191"></a>
+<span class="sourceLineNo">2192</span>    if (!isSecurityEnabled) return null;<a name="line.2192"></a>
+<span class="sourceLineNo">2193</span>    if (server == null) return null;<a name="line.2193"></a>
+<span class="sourceLineNo">2194</span>    Configuration conf = server.getConfiguration();<a name="line.2194"></a>
+<span class="sourceLineNo">2195</span>    long keyUpdateInterval =<a name="line.2195"></a>
+<span class="sourceLineNo">2196</span>        conf.getLong("hbase.auth.key.update.interval", 24*60*60*1000);<a name="line.2196"></a>
+<span class="sourceLineNo">2197</span>    long maxAge =<a name="line.2197"></a>
+<span class="sourceLineNo">2198</span>        conf.getLong("hbase.auth.token.max.lifetime", 7*24*60*60*1000);<a name="line.2198"></a>
+<span class="sourceLineNo">2199</span>    return new AuthenticationTokenSecretManager(conf, server.getZooKeeper(),<a name="line.2199"></a>
+<span class="sourceLineNo">2200</span>        server.getServerName().toString(), keyUpdateInterval, maxAge);<a name="line.2200"></a>
+<span class="sourceLineNo">2201</span>  }<a name="line.2201"></a>
+<span class="sourceLineNo">2202</span><a name="line.2202"></a>
+<span class="sourceLineNo">2203</span>  public SecretManager&lt;? extends TokenIdentifier&gt; getSecretManager() {<a name="line.2203"></a>
+<span class="sourceLineNo">2204</span>    return this.secretManager;<a name="line.2204"></a>
+<span class="sourceLineNo">2205</span>  }<a name="line.2205"></a>
+<span class="sourceLineNo">2206</span><a name="line.2206"></a>
+<span class="sourceLineNo">2207</span>  @SuppressWarnings("unchecked")<a name="line.2207"></a>
+<span class="sourceLineNo">2208</span>  public void setSecretManager(SecretManager&lt;? extends TokenIdentifier&gt; secretManager) {<a name="line.2208"></a>
+<span class="sourceLineNo">2209</span>    this.secretManager = (SecretManager&lt;TokenIdentifier&gt;) secretManager;<a name="line.2209"></a>
+<span class="sourceLineNo">2210</span>  }<a name="line.2210"></a>
+<span class="sourceLineNo">2211</span><a name="line.2211"></a>
+<span class="sourceLineNo">2212</span>  /**<a name="line.2212"></a>
+<span class="sourceLineNo">2213</span>   * This is a server side method, which is invoked over RPC. On success<a name="line.2213"></a>
+<span class="sourceLineNo">2214</span>   * the return response has protobuf response payload. On failure, the<a name="line.2214"></a>
+<span class="sourceLineNo">2215</span>   * exception name and the stack trace are returned in the protobuf response.<a name="line.2215"></a>
+<span class="sourceLineNo">2216</span>   */<a name="line.2216"></a>
+<span class="sourceLineNo">2217</span>  @Override<a name="line.2217"></a>
+<span class="sourceLineNo">2218</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,<a name="line.2218"></a>
+<span class="sourceLineNo">2219</span>      Message param, CellScanner cellScanner, long receiveTime, MonitoredRPCHandler status)<a name="line.2219"></a>
+<span class="sourceLineNo">2220</span>  throws IOException {<a name="line.2220"></a>
+<span class="sourceLineNo">2221</span>    try {<a name="line.2221"></a>
+<span class="sourceLineNo">2222</span>      status.setRPC(md.getName(), new Object[]{param}, receiveTime);<a name="line.2222"></a>
+<span class="sourceLineNo">2223</span>      // TODO: Review after we add in encoded data blocks.<a name="line.2223"></a>
+<span class="sourceLineNo">2224</span>      status.setRPCPacket(param);<a name="line.2224"></a>
+<span class="sourceLineNo">2225</span>      status.resume("Servicing call");<a name="line.2225"></a>
+<span class="sourceLineNo">2226</span>      //get an instance of the method arg type<a name="line.2226"></a>
+<span class="sourceLineNo">2227</span>      long startTime = System.currentTimeMillis();<a name="line.2227"></a>
+<span class="sourceLineNo">2228</span>      PayloadCarryingRpcController controller = new PayloadCarryingRpcController(cellScanner);<a name="line.2228"></a>
+<span class="sourceLineNo">2229</span>      Message result = service.callBlockingMethod(md, controller, param);<a name="line.2229"></a>
+<span class="sourceLineNo">2230</span>      long endTime = System.currentTimeMillis();<a name="line.2230"></a>
+<span class="sourceLineNo">2231</span>      int processingTime = (int) (endTime - startTime);<a name="line.2231"></a>
+<span class="sourceLineNo">2232</span>      int qTime = (int) (startTime - receiveTime);<a name="line.2232"></a>
+<span class="sourceLineNo">2233</span>      int totalTime = (int) (endTime - receiveTime);<a name="line.2233"></a>
+<span class="sourceLineNo">2234</span>      if (LOG.isTraceEnabled()) {<a name="line.2234"></a>
+<span class="sourceLineNo">2235</span>        LOG.trace(CurCall.get().toString() +<a name="line.2235"></a>
+<span class="sourceLineNo">2236</span>            ", response " + TextFormat.shortDebugString(result) +<a name="line.2236"></a>
+<span class="sourceLineNo">2237</span>            " queueTime: " + qTime +<a name="line.2237"></a>
+<span class="sourceLineNo">2238</span>            " processingTime: " + processingTime +<a name="line.2238"></a>
+<span class="sourceLineNo">2239</span>            " totalTime: " + totalTime);<a name="line.2239"></a>
+<span class="sourceLineNo">2240</span>      }<a name="line.2240"></a>
+<span class="sourceLineNo">2241</span>      long requestSize = param.getSerializedSize();<a name="line.2241"></a>
+<span class="sourceLineNo">2242</span>      long responseSize = result.getSerializedSize();<a name="line.2242"></a>
+<span class="sourceLineNo">2243</span>      metrics.dequeuedCall(qTime);<a name="line.2243"></a>
+<span class="sourceLineNo">2244</span>      metrics.processedCall(processingTime);<a name="line.2244"></a>
+<span class="sourceLineNo">2245</span>      metrics.totalCall(totalTime);<a name="line.2245"></a>
+<span class="sourceLineNo">2246</span>      metrics.receivedRequest(requestSize);<a name="line.2246"></a>
+<span class="sourceLineNo">2247</span>      metrics.sentResponse(responseSize);<a name="line.2247"></a>
+<span class="sourceLineNo">2248</span>      // log any RPC responses that are slower than the configured warn<a name="line.2248"></a>
+<span class="sourceLineNo">2249</span>      // response time or larger than configured warning size<a name="line.2249"></a>
+<span class="sourceLineNo">2250</span>      boolean tooSlow = (processingTime &gt; warnResponseTime &amp;&amp; warnResponseTime &gt; -1);<a name="line.2250"></a>
+<span class="sourceLineNo">2251</span>      boolean tooLarge = (responseSize &gt; warnResponseSize &amp;&amp; warnResponseSize &gt; -1);<a name="line.2251"></a>
+<span class="sourceLineNo">2252</span>      if (tooSlow || tooLarge) {<a name="line.2252"></a>
+<span class="sourceLineNo">2253</span>        // when tagging, we let TooLarge trump TooSmall to keep output simple<a name="line.2253"></a>
+<span class="sourceLineNo">2254</span>        // note that large responses will often also be slow.<a name="line.2254"></a>
+<span class="sourceLineNo">2255</span>        logResponse(new Object[]{param},<a name="line.2255"></a>
+<span class="sourceLineNo">2256</span>            md.getName(), md.getName() + "(" + param.getClass().getName() + ")",<a name="line.2256"></a>
+<span class="sourceLineNo">2257</span>            (tooLarge ? "TooLarge" : "TooSlow"),<a name="line.2257"></a>
+<span class="sourceLineNo">2258</span>            status.getClient(), startTime, processingTime, qTime,<a name="line.2258"></a>
+<span class="sourceLineNo">2259</span>            responseSize);<a name="line.2259"></a>
+<span class="sourceLineNo">2260</span>      }<a name="line.2260"></a>
+<span class="sourceLineNo">2261</span>      return new Pair&lt;Message, CellScanner&gt;(result, controller.cellScanner());<a name="line.2261"></a>
+<span class="sourceLineNo">2262</span>    } catch (Throwable e) {<a name="line.2262"></a>
+<span class="sourceLineNo">2263</span>      // The above callBlockingMethod will always return a SE.  Strip the SE wrapper before<a name="line.2263"></a>
+<span class="sourceLineNo">2264</span>      // putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't<a name="line.2264"></a>
+<span class="sourceLineNo">2265</span>      // need to pass it over the wire.<a name="line.2265"></a>
+<span class="sourceLineNo">2266</span>      if (e instanceof ServiceException) e = e.getCause();<a name="line.2266"></a>
 <span class="sourceLineNo">2267</span><a name="line.2267"></a>
-<span class="sourceLineNo">2268</span>      if (e instanceof LinkageError) throw new DoNotRetryIOException(e);<a name="line.2268"></a>
-<span class="sourceLineNo">2269</span>      if (e instanceof IOException) throw (IOException)e;<a name="line.2269"></a>
-<span class="sourceLineNo">2270</span>      LOG.error("Unexpected throwable object ", e);<a name="line.2270"></a>
-<span class="sourceLineNo">2271</span>      throw new IOException(e.getMessage(), e);<a name="line.2271"></a>
-<span class="sourceLineNo">2272</span>    }<a name="line.2272"></a>
-<span class="sourceLineNo">2273</span>  }<a name="line.2273"></a>
-<span class="sourceLineNo">2274</span><a name="line.2274"></a>
-<span class="sourceLineNo">2275</span>  /**<a name="line.2275"></a>
-<span class="sourceLineNo">2276</span>   * Logs an RPC response to the LOG file, producing valid JSON objects for<a name="line.2276"></a>
-<span class="sourceLineNo">2277</span>   * client Operations.<a name="line.2277"></a>
-<span class="sourceLineNo">2278</span>   * @param params The parameters received in the call.<a name="line.2278"></a>
-<span class="sourceLineNo">2279</span>   * @param methodName The name of the method invoked<a name="line.2279"></a>
-<span class="sourceLineNo">2280</span>   * @param call The string representation of the call<a name="line.2280"></a>
-<span class="sourceLineNo">2281</span>   * @param tag  The tag that will be used to indicate this event in the log.<a name="line.2281"></a>
-<span class="sourceLineNo">2282</span>   * @param clientAddress   The address of the client who made this call.<a name="line.2282"></a>
-<span class="sourceLineNo">2283</span>   * @param startTime       The time that the call was initiated, in ms.<a name="line.2283"></a>
-<span class="sourceLineNo">2284</span>   * @param processingTime  The duration that the call took to run, in ms.<a name="line.2284"></a>
-<span class="sourceLineNo">2285</span>   * @param qTime           The duration that the call spent on the queue<a name="line.2285"></a>
-<span class="sourceLineNo">2286</span>   *                        prior to being initiated, in ms.<a name="line.2286"></a>
-<span class="sourceLineNo">2287</span>   * @param responseSize    The size in bytes of the response buffer.<a name="line.2287"></a>
-<span class="sourceLineNo">2288</span>   */<a name="line.2288"></a>
-<span class="sourceLineNo">2289</span>  void logResponse(Object[] params, String methodName, String call, String tag,<a name="line.2289"></a>
-<span class="sourceLineNo">2290</span>      String clientAddress, long startTime, int processingTime, int qTime,<a name="line.2290"></a>
-<span class="sourceLineNo">2291</span>      long responseSize)<a name="line.2291"></a>
-<span class="sourceLineNo">2292</span>          throws IOException {<a name="line.2292"></a>
-<span class="sourceLineNo">2293</span>    // base information that is reported regardless of type of call<a name="line.2293"></a>
-<span class="sourceLineNo">2294</span>    Map&lt;String, Object&gt; responseInfo = new HashMap&lt;String, Object&gt;();<a name="line.2294"></a>
-<span class="sourceLineNo">2295</span>    responseInfo.put("starttimems", startTime);<a name="line.2295"></a>
-<span class="sourceLineNo">2296</span>    responseInfo.put("processingtimems", processingTime);<a name="line.2296"></a>
-<span class="sourceLineNo">2297</span>    responseInfo.put("queuetimems", qTime);<a name="line.2297"></a>
-<span class="sourceLineNo">2298</span>    responseInfo.put("responsesize", responseSize);<a name="line.2298"></a>
-<span class="sourceLineNo">2299</span>    responseInfo.put("client", clientAddress);<a name="line.2299"></a>
-<span class="sourceLineNo">2300</span>    responseInfo.put("class", server == null? "": server.getClass().getSimpleName());<a name="line.2300"></a>
-<span class="sourceLineNo">2301</span>    responseInfo.put("method", methodName);<a name="line.2301"></a>
-<span class="sourceLineNo">2302</span>    if (params.length == 2 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2302"></a>
-<span class="sourceLineNo">2303</span>        params[0] instanceof byte[] &amp;&amp;<a name="line.2303"></a>
-<span class="sourceLineNo">2304</span>        params[1] instanceof Operation) {<a name="line.2304"></a>
-<span class="sourceLineNo">2305</span>      // if the slow process is a query, we want to log its table as well<a name="line.2305"></a>
-<span class="sourceLineNo">2306</span>      // as its own fingerprint<a name="line.2306"></a>
-<span class="sourceLineNo">2307</span>      TableName tableName = TableName.valueOf(<a name="line.2307"></a>
-<span class="sourceLineNo">2308</span>          HRegionInfo.parseRegionName((byte[]) params[0])[0]);<a name="line.2308"></a>
-<span class="sourceLineNo">2309</span>      responseInfo.put("table", tableName.getNameAsString());<a name="line.2309"></a>
-<span class="sourceLineNo">2310</span>      // annotate the response map with operation details<a name="line.2310"></a>
-<span class="sourceLineNo">2311</span>      responseInfo.putAll(((Operation) params[1]).toMap());<a name="line.2311"></a>
-<span class="sourceLineNo">2312</span>      // report to the log file<a name="line.2312"></a>
-<span class="sourceLineNo">2313</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2313"></a>
-<span class="sourceLineNo">2314</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2314"></a>
-<span class="sourceLineNo">2315</span>    } else if (params.length == 1 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2315"></a>
-<span class="sourceLineNo">2316</span>        params[0] instanceof Operation) {<a name="line.2316"></a>
-<span class="sourceLineNo">2317</span>      // annotate the response map with operation details<a name="line.2317"></a>
-<span class="sourceLineNo">2318</span>      responseInfo.putAll(((Operation) params[0]).toMap());<a name="line.2318"></a>
-<span class="sourceLineNo">2319</span>      // report to the log file<a name="line.2319"></a>
-<span class="sourceLineNo">2320</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2320"></a>
-<span class="sourceLineNo">2321</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2321"></a>
-<span class="sourceLineNo">2322</span>    } else {<a name="line.2322"></a>
-<span class="sourceLineNo">2323</span>      // can't get JSON details, so just report call.toString() along with<a name="line.2323"></a>
-<span class="sourceLineNo">2324</span>      // a more generic tag.<a name="line.2324"></a>
-<span class="sourceLineNo">2325</span>      responseInfo.put("call", call);<a name="line.2325"></a>
-<span class="sourceLineNo">2326</span>      LOG.warn("(response" + tag + "): " + MAPPER.writeValueAsString(responseInfo));<a name="line.2326"></a>
-<span class="sourceLineNo">2327</span>    }<a name="line.2327"></a>
-<span class="sourceLineNo">2328</span>  }<a name="line.2328"></a>
-<span class="sourceLineNo">2329</span><a name="line.2329"></a>
-<span class="sourceLineNo">2330</span>  /** Stops the service.  No new calls will be handled after this is called. */<a name="line.2330"></a>
-<span class="sourceLineNo">2331</span>  @Override<a name="line.2331"></a>
-<span class="sourceLineNo">2332</span>  public synchronized void stop() {<a name="line.2332"></a>
-<span class="sourceLineNo">2333</span>    LOG.info("Stopping server on " + port);<a name="line.2333"></a>
-<span class="sourceLineNo">2334</span>    running = false;<a name="line.2334"></a>
-<span class="sourceLineNo">2335</span>    if (authTokenSecretMgr != null) {<a name="line.2335"></a>
-<span class="sourceLineNo">2336</span>      authTokenSecretMgr.stop();<a name="line.2336"></a>
-<span class="sourceLineNo">2337</span>      authTokenSecretMgr = null;<a name="line.2337"></a>
-<span class="sourceLineNo">2338</span>    }<a name="line.2338"></a>
-<span class="sourceLineNo">2339</span>    listener.interrupt();<a name="line.2339"></a>
-<span class="sourceLineNo">2340</span>    listener.doStop();<a name="line.2340"></a>
-<span class="sourceLineNo">2341</span>    responder.interrupt();<a name="line.2341"></a>
-<span class="sourceLineNo">2342</span>    scheduler.stop();<a name="line.2342"></a>
-<span class="sourceLineNo">2343</span>    notifyAll();<a name="line.2343"></a>
-<span class="sourceLineNo">2344</span>  }<a name="line.2344"></a>
-<span class="sourceLineNo">2345</span><a name="line.2345"></a>
-<span class="sourceLineNo">2346</span>  /** Wait for the server to be stopped.<a name="line.2346"></a>
-<span class="sourceLineNo">2347</span>   * Does not wait for all subthreads to finish.<a name="line.2347"></a>
-<span class="sourceLineNo">2348</span>   *  See {@link #stop()}.<a name="line.2348"></a>
-<span class="sourceLineNo">2349</span>   * @throws InterruptedException e<a name="line.2349"></a>
-<span class="sourceLineNo">2350</span>   */<a name="line.2350"></a>
-<span class="sourceLineNo">2351</span>  @Override<a name="line.2351"></a>
-<span class="sourceLineNo">2352</span>  public synchronized void join() throws InterruptedException {<a name="line.2352"></a>
-<span class="sourceLineNo">2353</span>    while (running) {<a name="line.2353"></a>
-<span class="sourceLineNo">2354</span>      wait();<a name="line.2354"></a>
-<span class="sourceLineNo">2355</span>    }<a name="line.2355"></a>
-<span class="sourceLineNo">2356</span>  }<a name="line.2356"></a>
-<span class="sourceLineNo">2357</span><a name="line.2357"></a>
-<span class="sourceLineNo">2358</span>  /**<a name="line.2358"></a>
-<span class="sourceLineNo">2359</span>   * Return the socket (ip+port) on which the RPC server is listening to. May return null if<a name="line.2359"></a>
-<span class="sourceLineNo">2360</span>   * the listener channel is closed.<a name="line.2360"></a>
-<span class="sourceLineNo">2361</span>   * @return the socket (ip+port) on which the RPC server is listening to, or null if this<a name="line.2361"></a>
-<span class="sourceLineNo">2362</span>   * information cannot be determined<a name="line.2362"></a>
-<span class="sourceLineNo">2363</span>   */<a name="line.2363"></a>
-<span class="sourceLineNo">2364</span>  @Override<a name="line.2364"></a>
-<span class="sourceLineNo">2365</span>  public synchronized InetSocketAddress getListenerAddress() {<a name="line.2365"></a>
-<span class="sourceLineNo">2366</span>    if (listener == null) {<a name="line.2366"></a>
-<span class="sourceLineNo">2367</span>      return null;<a name="line.2367"></a>
-<span class="sourceLineNo">2368</span>    }<a name="line.2368"></a>
-<span class="sourceLineNo">2369</span>    return listener.getAddress();<a name="line.2369"></a>
-<span class="sourceLineNo">2370</span>  }<a name="line.2370"></a>
-<span class="sourceLineNo">2371</span><a name="line.2371"></a>
-<span class="sourceLineNo">2372</span>  /**<a name="line.2372"></a>
-<span class="sourceLineNo">2373</span>   * Set the handler for calling out of RPC for error conditions.<a name="line.2373"></a>
-<span class="sourceLineNo">2374</span>   * @param handler the handler implementation<a name="line.2374"></a>
-<span class="sourceLineNo">2375</span>   */<a name="line.2375"></a>
-<span class="sourceLineNo">2376</span>  @Override<a name="line.2376"></a>
-<span class="sourceLineNo">2377</span>  public void setErrorHandler(HBaseRPCErrorHandler handler) {<a name="line.2377"></a>
-<span class="sourceLineNo">2378</span>    this.errorHandler = handler;<a name="line.2378"></a>
-<span class="sourceLineNo">2379</span>  }<a name="line.2379"></a>
-<span class="sourceLineNo">2380</span><a name="line.2380"></a>
-<span class="sourceLineNo">2381</span>  @Override<a name="line.2381"></a>
-<span class="sourceLineNo">2382</span>  public HBaseRPCErrorHandler getErrorHandler() {<a name="line.2382"></a>
-<span class="sourceLineNo">2383</span>    return this.errorHandler;<a name="line.2383"></a>
-<span class="sourceLineNo">2384</span>  }<a name="line.2384"></a>
-<span class="sourceLineNo">2385</span><a name="line.2385"></a>
-<span class="sourceLineNo">2386</span>  /**<a name="line.2386"></a>
-<span class="sourceLineNo">2387</span>   * Returns the metrics instance for reporting RPC call statistics<a name="line.2387"></a>
-<span class="sourceLineNo">2388</span>   */<a name="line.2388"></a>
-<span class="sourceLineNo">2389</span>  @Override<a name="line.2389"></a>
-<span class="sourceLineNo">2390</span>  public MetricsHBaseServer getMetrics() {<a name="line.2390"></a>
-<span class="sourceLineNo">2391</span>    return metrics;<a name="line.2391"></a>
-<span class="sourceLineNo">2392</span>  }<a name="line.2392"></a>
-<span class="sourceLineNo">2393</span><a name="line.2393"></a>
-<span class="sourceLineNo">2394</span>  @Override<a name="line.2394"></a>
-<span class="sourceLineNo">2395</span>  public void addCallSize(final long diff) {<a name="line.2395"></a>
-<span class="sourceLineNo">2396</span>    this.callQueueSize.add(diff);<a name="line.2396"></a>
-<span class="sourceLineNo">2397</span>  }<a name="line.2397"></a>
-<span class="sourceLineNo">2398</span><a name="line.2398"></a>
-<span class="sourceLineNo">2399</span>  /**<a name="line.2399"></a>
-<span class="sourceLineNo">2400</span>   * Authorize the incoming client connection.<a name="line.2400"></a>
-<span class="sourceLineNo">2401</span>   *<a name="line.2401"></a>
-<span class="sourceLineNo">2402</span>   * @param user client user<a name="line.2402"></a>
-<span class="sourceLineNo">2403</span>   * @param connection incoming connection<a name="line.2403"></a>
-<span class="sourceLineNo">2404</span>   * @param addr InetAddress of incoming connection<a name="line.2404"></a>
-<span class="sourceLineNo">2405</span>   * @throws org.apache.hadoop.security.authorize.AuthorizationException<a name="line.2405"></a>
-<span class="sourceLineNo">2406</span>   *         when the client isn't authorized to talk the protocol<a name="line.2406"></a>
-<span class="sourceLineNo">2407</span>   */<a name="line.2407"></a>
-<span class="sourceLineNo">2408</span>  public synchronized void authorize(UserGroupInformation user, ConnectionHeader connection,<a name="line.2408"></a>
-<span class="sourceLineNo">2409</span>      InetAddress addr)<a name="line.2409"></a>
-<span class="sourceLineNo">2410</span>  throws AuthorizationException {<a name="line.2410"></a>
-<span class="sourceLineNo">2411</span>    if (authorize) {<a name="line.2411"></a>
-<span class="sourceLineNo">2412</span>      Class&lt;?&gt; c = getServiceInterface(services, connection.getServiceName());<a name="line.2412"></a>
-<span class="sourceLineNo">2413</span>      this.authManager.authorize(user != null ? user : null, c, getConf(), addr);<a name="line.2413"></a>
-<span class="sourceLineNo">2414</span>    }<a name="line.2414"></a>
-<span class="sourceLineNo">2415</span>  }<a name="line.2415"></a>
-<span class="sourceLineNo">2416</span><a name="line.2416"></a>
-<span class="sourceLineNo">2417</span>  /**<a name="line.2417"></a>
-<span class="sourceLineNo">2418</span>   * When the read or write buffer size is larger than this limit, i/o will be<a name="line.2418"></a>
-<span class="sourceLineNo">2419</span>   * done in chunks of this size. Most RPC requests and responses would be<a name="line.2419"></a>
-<span class="sourceLineNo">2420</span>   * be smaller.<a name="line.2420"></a>
-<span class="sourceLineNo">2421</span>   */<a name="line.2421"></a>
-<span class="sourceLineNo">2422</span>  private static int NIO_BUFFER_LIMIT = 64 * 1024; //should not be more than 64KB.<a name="line.2422"></a>
-<span class="sourceLineNo">2423</span><a name="line.2423"></a>
-<span class="sourceLineNo">2424</span>  /**<a name="line.2424"></a>
-<span class="sourceLineNo">2425</span>   * This is a wrapper around {@link java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)}.<a name="line.2425"></a>
-<span class="sourceLineNo">2426</span>   * If the amount of data is large, it writes to channel in smaller chunks.<a name="line.2426"></a>
-<span class="sourceLineNo">2427</span>   * This is to avoid jdk from creating many direct buffers as the size of<a name="line.2427"></a>
-<span class="sourceLineNo">2428</span>   * buffer increases. This also minimizes extra copies in NIO layer<a name="line.2428"></a>
-<span class="sourceLineNo">2429</span>   * as a result of multiple write operations required to write a large<a name="line.2429"></a>
-<span class="sourceLineNo">2430</span>   * buffer.<a name="line.2430"></a>
-<span class="sourceLineNo">2431</span>   *<a name="line.2431"></a>
-<span class="sourceLineNo">2432</span>   * @param channel writable byte channel to write to<a name="line.2432"></a>
-<span class="sourceLineNo">2433</span>   * @param bufferChain Chain of buffers to write<a name="line.2433"></a>
-<span class="sourceLineNo">2434</span>   * @return number of bytes written<a name="line.2434"></a>
-<span class="sourceLineNo">2435</span>   * @throws java.io.IOException e<a name="line.2435"></a>
-<span class="sourceLineNo">2436</span>   * @see java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)<a name="line.2436"></a>
-<span class="sourceLineNo">2437</span>   */<a name="line.2437"></a>
-<span class="sourceLineNo">2438</span>  protected long channelWrite(GatheringByteChannel channel, BufferChain bufferChain)<a name="line.2438"></a>
-<span class="sourceLineNo">2439</span>  throws IOException {<a name="line.2439"></a>
-<span class="sourceLineNo">2440</span>    long count =  bufferChain.write(channel, NIO_BUFFER_LIMIT);<a name="line.2440"></a>
-<span class="sourceLineNo">2441</span>    if (count &gt; 0) this.metrics.sentBytes(count);<a name="line.2441"></a>
-<span class="sourceLineNo">2442</span>    return count;<a name="line.2442"></a>
-<span class="sourceLineNo">2443</span>  }<a name="line.2443"></a>
-<span class="sourceLineNo">2444</span><a name="line.2444"></a>
-<span class="sourceLineNo">2445</span>  /**<a name="line.2445"></a>
-<span class="sourceLineNo">2446</span>   * This is a wrapper around {@link java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer)}.<a name="line.2446"></a>
-<span class="sourceLineNo">2447</span>   * If the amount of data is large, it writes to channel in smaller chunks.<a name="line.2447"></a>
-<span class="sourceLineNo">2448</span>   * This is to avoid jdk from creating many direct buffers as the size of<a name="line.2448"></a>
-<span class="sourceLineNo">2449</span>   * ByteBuffer increases. There should not be any performance degredation.<a name="line.2449"></a>
-<span class="sourceLineNo">2450</span>   *<a name="line.2450"></a>
-<span class="sourceLineNo">2451</span>   * @param channel writable byte channel to write on<a name="line.2451"></a>
-<span class="sourceLineNo">2452</span>   * @param buffer buffer to write<a name="line.2452"></a>
-<span class="sourceLineNo">2453</span>   * @return number of bytes written<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>   * @throws java.io.IOException e<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>   * @see java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer)<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>   */<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>  protected int channelRead(ReadableByteChannel channel,<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>                                   ByteBuffer buffer) throws IOException {<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span><a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>    int count = (buffer.remaining() &lt;= NIO_BUFFER_LIMIT) ?<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>           channel.read(buffer) : channelIO(channel, null, buffer);<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span>    if (count &gt; 0) {<a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      metrics.receivedBytes(count);<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>    }<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>    return count;<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>  }<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span><a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>  /**<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>   * Helper for {@link #channelRead(java.nio.channels.ReadableByteChannel, java.nio.ByteBuffer)}<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>   * and {@link #channelWrite(GatheringByteChannel, BufferChain)}. Only<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span>   * one of readCh or writeCh should be non-null.<a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>   *<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>   * @param readCh read channel<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>   * @param writeCh write channel<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>   * @param buf buffer to read or write into/out of<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>   * @return bytes written<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>   * @throws java.io.IOException e<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>   * @see #channelRead(java.nio.channels.ReadableByteChannel, java.nio.ByteBuffer)<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>   * @see #channelWrite(GatheringByteChannel, BufferChain)<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>   */<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>  private static int channelIO(ReadableByteChannel readCh,<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>                               WritableByteChannel writeCh,<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>                               ByteBuffer buf) throws IOException {<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span><a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    int originalLimit = buf.limit();<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    int initialRemaining = buf.remaining();<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>    int ret = 0;<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span><a name="line.2488"></a>
-<span class="sourceLineNo">2489</span>    while (buf.remaining() &gt; 0) {<a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>      try {<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>        int ioSize = Math.min(buf.remaining(), NIO_BUFFER_LIMIT);<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>        buf.limit(buf.position() + ioSize);<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span><a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>        ret = (readCh == null) ? writeCh.write(buf) : readCh.read(buf);<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span><a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>        if (ret &lt; ioSize) {<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>          break;<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>        }<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span><a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      } finally {<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>        buf.limit(originalLimit);<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>      }<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>    }<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span><a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>    int nBytes = initialRemaining - buf.remaining();<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    return (nBytes &gt; 0) ? nBytes : ret;<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>  }<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span><a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>  /**<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>   * Needed for features such as delayed calls.  We need to be able to store the current call<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>   * so that we can complete it later or ask questions of what is supported by the current ongoing<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span>   * call.<a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>   * @return An RpcCallContext backed by the currently ongoing call (gotten from a thread local)<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>   */<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>  public static RpcCallContext getCurrentCall() {<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    return CurCall.get();<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>  }<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span><a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>  public static boolean isInRpcCallContext() {<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>    return CurCall.get() != null;<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>  }<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span><a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>  /**<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>   * Returns the user credentials associated with the current RPC request or<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>   * &lt;code&gt;null&lt;/code&gt; if no credentials were provided.<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>   * @return A User<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>   */<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  public static User getRequestUser() {<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span>    RpcCallContext ctx = getCurrentCall();<a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>    return ctx == null? null: ctx.getRequestUser();<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>  }<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span><a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  /**<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>   * Returns the username for any user associated with the current RPC<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>   * request or &lt;code&gt;null&lt;/code&gt; if no user is set.<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>   */<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>  public static String getRequestUserName() {<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    User user = getRequestUser();<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>    return user == null? null: user.getShortName();<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>  }<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span><a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>  /**<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>   * @return Address of remote client if a request is ongoing, else null<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>   */<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span>  public static InetAddress getRemoteAddress() {<a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>    RpcCallContext ctx = getCurrentCall();<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>    return ctx == null? null: ctx.getRemoteAddress();<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>  }<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span><a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>  /**<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span>   * @param services Available service instances<a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>   * @return Matching BlockingServiceAndInterface pair<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   */<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>  static BlockingServiceAndInterface getServiceAndInterface(<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>      final List&lt;BlockingServiceAndInterface&gt; services, final String serviceName) {<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>    for (BlockingServiceAndInterface bs : services) {<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>      if (bs.getBlockingService().getDescriptorForType().getName().equals(serviceName)) {<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>        return bs;<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>      }<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>    }<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>    return null;<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>  }<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span><a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>  /**<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>   * @param services Available services and their service interfaces.<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>   * @return Service interface class for &lt;code&gt;serviceName&lt;/code&gt;<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>   */<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>  static Class&lt;?&gt; getServiceInterface(<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>      final List&lt;BlockingServiceAndInterface&gt; services,<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>      final String serviceName) {<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>    BlockingServiceAndInterface bsasi =<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span>        getServiceAndInterface(services, serviceName);<a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>    return bsasi == null? null: bsasi.getServiceInterface();<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>  }<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span><a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>  /**<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>   * @param services Available services and their service interfaces.<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>   * @return BlockingService that goes with the passed &lt;code&gt;serviceName&lt;/code&gt;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>   */<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>  static BlockingService getService(<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>      final List&lt;BlockingServiceAndInterface&gt; services,<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span>      final String serviceName) {<a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    BlockingServiceAndInterface bsasi =<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>        getServiceAndInterface(services, serviceName);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    return bsasi == null? null: bsasi.getBlockingService();<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span>  }<a name="line.2589"></a>
-<span class="sourceLineNo">2590</span><a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>  static MonitoredRPCHandler getStatus() {<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // It is ugly the way we park status up in RpcServer.  Let it be for now.  TODO.<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    MonitoredRPCHandler status = RpcServer.MONITORED_RPC.get();<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    if (status != null) {<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>      return status;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    }<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>    status = TaskMonitor.get().createRPCStatus(Thread.currentThread().getName());<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>    status.pause("Waiting for a call");<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>    RpcServer.MONITORED_RPC.set(status);<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>    return status;<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span>  }<a name="line.2601"></a>
-<span class="sourceLineNo">2602</span><a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>  /** Returns the remote side ip address when invoked inside an RPC<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>   *  Returns null incase of an error.<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span>   *  @return InetAddress<a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>   */<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>  public static InetAddress getRemoteIp() {<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>    Call call = CurCall.get();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>    if (call != null &amp;&amp; call.connection != null &amp;&amp; call.connection.socket != null) {<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      return call.connection.socket.getInetAddress();<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>    }<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>    return null;<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>  }<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span><a name="line.2614"></a>
-<span class="sourceLineNo">2615</span><a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>  /**<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>   * A convenience method to bind to a given address and report<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>   * better exceptions if the address is not a valid host.<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>   * @param socket the socket to bind<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>   * @param address the address to bind to<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>   * @param backlog the number of connections allowed in the queue<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>   * @throws BindException if the address can't be bound<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>   * @throws UnknownHostException if the address isn't a valid host name<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>   * @throws IOException other random errors from bind<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>   */<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span>  public static void bind(ServerSocket socket, InetSocketAddress address,<a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>                          int backlog) throws IOException {<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>    try {<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span>      socket.bind(address, backlog);<a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>    } catch (BindException e) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>      BindException bindException =<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        new BindException("Problem binding to " + address + " : " +<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>            e.getMessage());<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>      bindException.initCause(e);<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>      throw bindException;<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>    } catch (SocketException e) {<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>      // If they try to bind to a different host's address, give a better<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // error message.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      if ("Unresolved address".equals(e.getMessage())) {<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>        throw new UnknownHostException("Invalid hostname for server: " +<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>                                       address.getHostName());<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      }<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      throw e;<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>    }<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>  }<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span><a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>  @Override<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>  public RpcScheduler getScheduler() {<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>    return scheduler;<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>  }<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>}<a name="line.2651"></a>
+<span class="sourceLineNo">2268</span>      // increment the number of requests that were exceptions.<a name="line.2268"></a>
+<span class="sourceLineNo">2269</span>      metrics.exception(e);<a name="line.2269"></a>
+<span class="sourceLineNo">2270</span><a name="line.2270"></a>
+<span class="sourceLineNo">2271</span>      if (e instanceof LinkageError) throw new DoNotRetryIOException(e);<a name="line.2271"></a>
+<span class="sourceLineNo">2272</span>      if (e instanceof IOException) throw (IOException)e;<a name="line.2272"></a>
+<span class="sourceLineNo">2273</span>      LOG.error("Unexpected throwable object ", e);<a name="line.2273"></a>
+<span class="sourceLineNo">2274</span>      throw new IOException(e.getMessage(), e);<a name="line.2274"></a>
+<span class="sourceLineNo">2275</span>    }<a name="line.2275"></a>
+<span class="sourceLineNo">2276</span>  }<a name="line.2276"></a>
+<span class="sourceLineNo">2277</span><a name="line.2277"></a>
+<span class="sourceLineNo">2278</span>  /**<a name="line.2278"></a>
+<span class="sourceLineNo">2279</span>   * Logs an RPC response to the LOG file, producing valid JSON objects for<a name="line.2279"></a>
+<span class="sourceLineNo">2280</span>   * client Operations.<a name="line.2280"></a>
+<span class="sourceLineNo">2281</span>   * @param params The parameters received in the call.<a name="line.2281"></a>
+<span class="sourceLineNo">2282</span>   * @param methodName The name of the method invoked<a name="line.2282"></a>
+<span class="sourceLineNo">2283</span>   * @param call The string representation of the call<a name="line.2283"></a>
+<span class="sourceLineNo">2284</span>   * @param tag  The tag that will be used to indicate this event in the log.<a name="line.2284"></a>
+<span class="sourceLineNo">2285</span>   * @param clientAddress   The address of the client who made this call.<a name="line.2285"></a>
+<span class="sourceLineNo">2286</span>   * @param startTime       The time that the call was initiated, in ms.<a name="line.2286"></a>
+<span class="sourceLineNo">2287</span>   * @param processingTime  The duration that the call took to run, in ms.<a name="line.2287"></a>
+<span class="sourceLineNo">2288</span>   * @param qTime           The duration that the call spent on the queue<a name="line.2288"></a>
+<span class="sourceLineNo">2289</span>   *                        prior to being initiated, in ms.<a name="line.2289"></a>
+<span class="sourceLineNo">2290</span>   * @param responseSize    The size in bytes of the response buffer.<a name="line.2290"></a>
+<span class="sourceLineNo">2291</span>   */<a name="line.2291"></a>
+<span class="sourceLineNo">2292</span>  void logResponse(Object[] params, String methodName, String call, String tag,<a name="line.2292"></a>
+<span class="sourceLineNo">2293</span>      String clientAddress, long startTime, int processingTime, int qTime,<a name="line.2293"></a>
+<span class="sourceLineNo">2294</span>      long responseSize)<a name="line.2294"></a>
+<span class="sourceLineNo">2295</span>          throws IOException {<a name="line.2295"></a>
+<span class="sourceLineNo">2296</span>    // base information that is reported regardless of type of call<a name="line.2296"></a>
+<span class="sourceLineNo">2297</span>    Map&lt;String, Object&gt; responseInfo = new HashMap&lt;String, Object&gt;();<a name="line.2297"></a>
+<span class="sourceLineNo">2298</span>    responseInfo.put("starttimems", startTime);<a name="line.2298"></a>
+<span class="sourceLineNo">2299</span>    responseInfo.put("processingtimems", processingTime);<a name="line.2299"></a>
+<span class="sourceLineNo">2300</span>    responseInfo.put("queuetimems", qTime);<a name="line.2300"></a>
+<span class="sourceLineNo">2301</span>    responseInfo.put("responsesize", responseSize);<a name="line.2301"></a>
+<span class="sourceLineNo">2302</span>    responseInfo.put("client", clientAddress);<a name="line.2302"></a>
+<span class="sourceLineNo">2303</span>    responseInfo.put("class", server == null? "": server.getClass().getSimpleName());<a name="line.2303"></a>
+<span class="sourceLineNo">2304</span>    responseInfo.put("method", methodName);<a name="line.2304"></a>
+<span class="sourceLineNo">2305</span>    if (params.length == 2 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2305"></a>
+<span class="sourceLineNo">2306</span>        params[0] instanceof byte[] &amp;&amp;<a name="line.2306"></a>
+<span class="sourceLineNo">2307</span>        params[1] instanceof Operation) {<a name="line.2307"></a>
+<span class="sourceLineNo">2308</span>      // if the slow process is a query, we want to log its table as well<a name="line.2308"></a>
+<span class="sourceLineNo">2309</span>      // as its own fingerprint<a name="line.2309"></a>
+<span class="sourceLineNo">2310</span>      TableName tableName = TableName.valueOf(<a name="line.2310"></a>
+<span class="sourceLineNo">2311</span>          HRegionInfo.parseRegionName((byte[]) params[0])[0]);<a name="line.2311"></a>
+<span class="sourceLineNo">2312</span>      responseInfo.put("table", tableName.getNameAsString());<a name="line.2312"></a>
+<span class="sourceLineNo">2313</span>      // annotate the response map with operation details<a name="line.2313"></a>
+<span class="sourceLineNo">2314</span>      responseInfo.putAll(((Operation) params[1]).toMap());<a name="line.2314"></a>
+<span class="sourceLineNo">2315</span>      // report to the log file<a name="line.2315"></a>
+<span class="sourceLineNo">2316</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2316"></a>
+<span class="sourceLineNo">2317</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2317"></a>
+<span class="sourceLineNo">2318</span>    } else if (params.length == 1 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2318"></a>
+<span class="sourceLineNo">2319</span>        params[0] instanceof Operation) {<a name="line.2319"></a>
+<span class="sourceLineNo">2320</span>      // annotate the response map with operation details<a name="line.2320"></a>
+<span class="sourceLineNo">2321</span>      responseInfo.putAll(((Operation) params[0]).toMap());<a name="line.2321"></a>
+<span class="sourceLineNo">2322</span>      // report to the log file<a name="line.2322"></a>
+<span class="sourceLineNo">2323</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2323"></a>
+<span class="sourceLineNo">2324</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2324"></a>
+<span class="sourceLineNo">2325</span>    } else {<a name="line.2325"></a>
+<span class="sourceLineNo">2326</span>      // can't get JSON details, so just report call.toString() along with<a name="line.2326"></a>
+<span class="sourceLineNo">2327</span>      // a more generic tag.<a name="line.2327"></a>
+<span class="sourceLineNo">2328</span>      responseInfo.put("call", call);<a name="line.2328"></a>
+<span class="sourceLineNo">2329</span>      LOG.warn("(response" + tag + "): " + MAPPER.writeValueAsString(responseInfo));<a name="line.2329"></a>
+<span class="sourceLineNo">2330</span>    }<a name="line.2330"></a>
+<span class="sourceLineNo">2331</span>  }<a name="line.2331"></a>
+<span class="sourceLineNo">2332</span><a name="line.2332"></a>
+<span class="sourceLineNo">2333</span>  /** Stops the service.  No new calls will be handled after this is called. */<a name="line.2333"></a>
+<span class="sourceLineNo">2334</span>  @Override<a name="line.2334"></a>
+<span class="sourceLineNo">2335</span>  public synchronized void stop() {<a name="line.2335"></a>
+<span class="sourceLineNo">2336</span>    LOG.info("Stopping server on " + port);<a name="line.2336"></a>
+<span class="sourceLineNo">2337</span>    running = false;<a name="line.2337"></a>
+<span class="sourceLineNo">2338</span>    if (authTokenSecretMgr != null) {<a name="line.2338"></a>
+<span class="sourceLineNo">2339</span>      authTokenSecretMgr.stop();<a name="line.2339"></a>
+<span class="sourceLineNo">2340</span>      authTokenSecretMgr = null;<a name="line.2340"></a>
+<span class="sourceLineNo">2341</span>    }<a name="line.2341"></a>
+<span class="sourceLineNo">2342</span>    listener.interrupt();<a name="line.2342"></a>
+<span class="sourceLineNo">2343</span>    listener.doStop();<a name="line.2343"></a>
+<span class="sourceLineNo">2344</span>    responder.interrupt();<a name="line.2344"></a>
+<span class="sourceLineNo">2345</span>    scheduler.stop();<a name="line.2345"></a>
+<span class="sourceLineNo">2346</span>    notifyAll();<a name="line.2346"></a>
+<span class="sourceLineNo">2347</span>  }<a name="line.2347"></a>
+<span class="sourceLineNo">2348</span><a name="line.2348"></a>
+<span class="sourceLineNo">2349</span>  /** Wait for the server to be stopped.<a name="line.2349"></a>
+<span class="sourceLineNo">2350</span>   * Does not wait for all subthreads to finish.<a name="line.2350"></a>
+<span class="sourceLineNo">2351</span>   *  See {@link #stop()}.<a name="line.2351"></a>
+<span class="sourceLineNo">2352</span>   * @throws InterruptedException e<a name="line.2352"></a>
+<span class="sourceLineNo">2353</span>   */<a name="line.2353"></a>
+<span class="sourceLineNo">2354</span>  @Override<a name="line.2354"></a>
+<span class="sourceLineNo">2355</span>  public synchronized void join() throws InterruptedException {<a name="line.2355"></a>
+<span class="sourceLineNo">2356</span>    while (running) {<a name="line.2356"></a>
+<span class="sourceLineNo">2357</span>      wait();<a name="line.2357"></a>
+<span class="sourceLineNo">2358</span>    }<a name="line.2358"></a>
+<span class="sourceLineNo">2359</span>  }<a name="line.2359"></a>
+<span class="sourceLineNo">2360</span><a name="line.2360"></a>
+<span class="sourceLineNo">2361</span>  /**<a name="line.2361"></a>
+<span class="sourceLineNo">2362</span>   * Return the socket (ip+port) on which the RPC server is listening to. May return null if<a name="line.2362"></a>
+<span class="sourceLineNo">2363</span>   * the listener channel is closed.<a name="line.2363"></a>
+<span class="sourceLineNo">2364</span>   * @return the socket (ip+port) on which the RPC server is listening to, or null if this<a name="line.2364"></a>
+<span class="sourceLineNo">2365</span>   * information cannot be determined<a name="line.2365"></a>
+<span class="sourceLineNo">2366</span>   */<a name="line.2366"></a>
+<span class="sourceLineNo">2367</span>  @Override<a name="line.2367"></a>
+<span class="sourceLineNo">2368</span>  public synchronized InetSocketAddress getListenerAddress() {<a name="line.2368"></a>
+<span class="sourceLineNo">2369</span>    if (listener == null) {<a name="line.2369"></a>
+<span class="sourceLineNo">2370</span>      return null;<a name="line.2370"></a>
+<span class="sourceLineNo">2371</span>    }<a name="line.2371"></a>
+<span class="sourceLineNo">2372</span>    return listener.getAddress();<a name="line.2372"></a>
+<span class="sourceLineNo">2373</span>  }<a name="line.2373"></a>
+<span class="sourceLineNo">2374</span><a name="line.2374"></a>
+<span class="sourceLineNo">2375</span>  /**<a name="line.2375"></a>
+<span class="sourceLineNo">2376</span>   * Set the handler for calling out of RPC for error conditions.<a name="line.2376"></a>
+<span class="sourceLineNo">2377</span>   * @param handler the handler implementation<a name="line.2377"></a>
+<span class="sourceLineNo">2378</span>   */<a name="line.2378"></a>
+<span class="sourceLineNo">2379</span>  @Override<a name="line.2379"></a>
+<span class="sourceLineNo">2380</span>  public void setErrorHandler(HBaseRPCErrorHandler handler) {<a name="line.2380"></a>
+<span class="sourceLineNo">2381</span>    this.errorHandler = handler;<a name="line.2381"></a>
+<span class="sourceLineNo">2382</span>  }<a name="line.2382"></a>
+<span class="sourceLineNo">2383</span><a name="line.2383"></a>
+<span class="sourceLineNo">2384</span>  @Override<a name="line.2384"></a>
+<span class="sourceLineNo">2385</span>  public HBaseRPCErrorHandler getErrorHandler() {<a name="line.2385"></a>
+<span class="sourceLineNo">2386</span>    return this.errorHandler;<a name="line.2386"></a>
+<span class="sourceLineNo">2387</span>  }<a name="line.2387"></a>
+<span class="sourceLineNo">2388</span><a name="line.2388"></a>
+<span class="sourceLineNo">2389</span>  /**<a name="line.2389"></a>
+<span class="sourceLineNo">2390</span>   * Returns the metrics instance for reporting RPC call statistics<a name="line.2390"></a>
+<span class="sourceLineNo">2391</span>   */<a name="line.2391"></a>
+<span class="sourceLineNo">2392</span>  @Override<a name="line.2392"></a>
+<span class="sourceLineNo">2393</span>  public MetricsHBaseServer getMetrics() {<a name="line.2393"></a>
+<span class="sourceLineNo">2394</span>    return metrics;<a name="line.2394"></a>
+<span class="sourceLineNo">2395</span>  }<a name="line.2395"></a>
+<span class="sourceLineNo">2396</span><a name="line.2396"></a>
+<span class="sourceLineNo">2397</span>  @Override<a name="line.2397"></a>
+<span class="sourceLineNo">2398</span>  public void addCallSize(final long diff) {<a name="line.2398"></a>
+<span class="sourceLineNo">2399</span>    this.callQueueSize.add(diff);<a name="line.2399"></a>
+<span class="sourceLineNo">2400</span>  }<a name="line.2400"></a>
+<span class="sourceLineNo">2401</span><a name="line.2401"></a>
+<span class="sourceLineNo">2402</span>  /**<a name="line.2402"></a>
+<span class="sourceLineNo">2403</span>   * Authorize the incoming client connection.<a name="line.2403"></a>
+<span class="sourceLineNo">2404</span>   *<a name="line.2404"></a>
+<span class="sourceLineNo">2405</span>   * @param user client user<a name="line.2405"></a>
+<span class="sourceLineNo">2406</span>   * @param connection incoming connection<a name="line.2406"></a>
+<span class="sourceLineNo">2407</span>   * @param addr InetAddress of incoming connection<a name="line.2407"></a>
+<span class="sourceLineNo">2408</span>   * @throws org.apache.hadoop.security.authorize.AuthorizationException<a name="line.2408"></a>
+<span class="sourceLineNo">2409</span>   *         when the client isn't authorized to talk the protocol<a name="line.2409"></a>
+<span class="sourceLineNo">2410</span>   */<a name="line.2410"></a>
+<span class="sourceLineNo">2411</span>  public synchronized void authorize(UserGroupInformation user, ConnectionHeader connection,<a name="line.2411"></a>
+<span class="sourceLineNo">2412</span>      InetAddress addr)<a name="line.2412"></a>
+<span class="sourceLineNo">2413</span>  throws AuthorizationException {<a name="line.2413"></a>
+<span class="sourceLineNo">2414</span>    if (authorize) {<a name="line.2414"></a>
+<span class="sourceLineNo">2415</span>      Class&lt;?&gt; c = getServiceInterface(services, connection.getServiceName());<a name="line.2415"></a>
+<span class="sourceLineNo">2416</span>      this.authManager.authorize(user != null ? user : null, c, getConf(), addr);<a name="line.2416"></a>
+<span class="sourceLineNo">2417</span>    }<a name="line.2417"></a>
+<span class="sourceLineNo">2418</span>  }<a name="line.2418"></a>
+<span class="sourceLineNo">2419</span><a name="line.2419"></a>
+<span class="sourceLineNo">2420</span>  /**<a name="line.2420"></a>
+<span class="sourceLineNo">2421</span>   * When the read or write buffer size is larger than this limit, i/o will be<a name="line.2421"></a>
+<span class="sourceLineNo">2422</span>   * done in chunks of this size. Most RPC requests and responses would be<a name="line.2422"></a>
+<span class="sourceLineNo">2423</span>   * be smaller.<a name="line.2423"></a>
+<span class="sourceLineNo">2424</span>   */<a name="line.2424"></a>
+<span class="sourceLineNo">2425</span>  private static int NIO_BUFFER_LIMIT = 64 * 1024; //should not be more than 64KB.<a name="line.2425"></a>
+<span class="sourceLineNo">2426</span><a name="line.2426"></a>
+<span class="sourceLineNo">2427</span>  /**<a name="line.2427"></a>
+<span class="sourceLineNo">2428</span>   * This is a wrapper around {@link java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)}.<a name="line.2428"></a>
+<span class=

<TRUNCATED>

[10/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
index 1bdbf69..f83e138 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
@@ -86,478 +86,483 @@
 <span class="sourceLineNo">078</span>import org.junit.Rule;<a name="line.78"></a>
 <span class="sourceLineNo">079</span>import org.junit.Test;<a name="line.79"></a>
 <span class="sourceLineNo">080</span>import org.junit.experimental.categories.Category;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.junit.rules.TestRule;<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>import com.google.common.base.Joiner;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import com.google.protobuf.RpcController;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import com.google.protobuf.ServiceException;<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> * Like {@link TestRegionMergeTransaction} in that we're testing<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * {@link RegionMergeTransactionImpl} only the below tests are against a running<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * cluster where {@link TestRegionMergeTransaction} is tests against bare<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * {@link HRegion}.<a name="line.91"></a>
-<span class="sourceLineNo">092</span> */<a name="line.92"></a>
-<span class="sourceLineNo">093</span>@Category({RegionServerTests.class, LargeTests.class})<a name="line.93"></a>
-<span class="sourceLineNo">094</span>public class TestRegionMergeTransactionOnCluster {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private static final Log LOG = LogFactory<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      .getLog(TestRegionMergeTransactionOnCluster.class);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().withTimeout(this.getClass()).<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      withLookingForStuckThread(true).build();<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private static final int NB_SERVERS = 3;<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  private static final byte[] FAMILYNAME = Bytes.toBytes("fam");<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  private static final byte[] QUALIFIER = Bytes.toBytes("q");<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private static byte[] ROW = Bytes.toBytes("testRow");<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private static final int INITIAL_REGION_NUM = 10;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  private static final int ROWSIZE = 200;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  private static byte[][] ROWS = makeN(ROW, ROWSIZE);<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private static int waitTime = 60 * 1000;<a name="line.109"></a>
+<span class="sourceLineNo">081</span>import org.junit.rules.TestName;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.junit.rules.TestRule;<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>import com.google.common.base.Joiner;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import com.google.protobuf.RpcController;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import com.google.protobuf.ServiceException;<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> * Like {@link TestRegionMergeTransaction} in that we're testing<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * {@link RegionMergeTransactionImpl} only the below tests are against a running<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * cluster where {@link TestRegionMergeTransaction} is tests against bare<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * {@link HRegion}.<a name="line.92"></a>
+<span class="sourceLineNo">093</span> */<a name="line.93"></a>
+<span class="sourceLineNo">094</span>@Category({RegionServerTests.class, LargeTests.class})<a name="line.94"></a>
+<span class="sourceLineNo">095</span>public class TestRegionMergeTransactionOnCluster {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private static final Log LOG = LogFactory<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      .getLog(TestRegionMergeTransactionOnCluster.class);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  @Rule public TestName name = new TestName();<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().withTimeout(this.getClass()).<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      withLookingForStuckThread(true).build();<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  private static final int NB_SERVERS = 3;<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  private static final byte[] FAMILYNAME = Bytes.toBytes("fam");<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private static final byte[] QUALIFIER = Bytes.toBytes("q");<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>  private static byte[] ROW = Bytes.toBytes("testRow");<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  private static final int INITIAL_REGION_NUM = 10;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private static final int ROWSIZE = 200;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  private static byte[][] ROWS = makeN(ROW, ROWSIZE);<a name="line.109"></a>
 <span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.111"></a>
+<span class="sourceLineNo">111</span>  private static int waitTime = 60 * 1000;<a name="line.111"></a>
 <span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>  private static HMaster MASTER;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static Admin ADMIN;<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>  @BeforeClass<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public static void beforeAllTests() throws Exception {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    // Start a cluster<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    TEST_UTIL.startMiniCluster(1, NB_SERVERS, null, MyMaster.class, null);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    MASTER = cluster.getMaster();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    MASTER.balanceSwitch(false);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    ADMIN = TEST_UTIL.getConnection().getAdmin();<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>  @AfterClass<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public static void afterAllTests() throws Exception {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    if (ADMIN != null) ADMIN.close();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  @Test<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  public void testWholesomeMerge() throws Exception {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    LOG.info("Starting testWholesomeMerge");<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    final TableName tableName =<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        TableName.valueOf("testWholesomeMerge");<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>    // Create table and load data.<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    Table table = createTableAndLoadData(MASTER, tableName);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    // Merge 1st and 2nd region<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1,<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        INITIAL_REGION_NUM - 1);<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>    // Merge 2nd and 3th region<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions =<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 1, 2,<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        INITIAL_REGION_NUM - 2);<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>    verifyRowCount(table, ROWSIZE);<a name="line.149"></a>
+<span class="sourceLineNo">113</span>  static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static HMaster MASTER;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static Admin ADMIN;<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  @BeforeClass<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  public static void beforeAllTests() throws Exception {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    // Start a cluster<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    TEST_UTIL.startMiniCluster(1, NB_SERVERS, null, MyMaster.class, null);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    MASTER = cluster.getMaster();<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    MASTER.balanceSwitch(false);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    ADMIN = TEST_UTIL.getConnection().getAdmin();<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>  @AfterClass<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  public static void afterAllTests() throws Exception {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    if (ADMIN != null) ADMIN.close();<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>  @Test<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public void testWholesomeMerge() throws Exception {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    LOG.info("Starting testWholesomeMerge");<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    final TableName tableName =<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        TableName.valueOf("testWholesomeMerge");<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>    // Create table and load data.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    Table table = createTableAndLoadData(MASTER, tableName);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    // Merge 1st and 2nd region<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1,<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        INITIAL_REGION_NUM - 1);<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    // Merge 2nd and 3th region<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions =<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 1, 2,<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        INITIAL_REGION_NUM - 2);<a name="line.149"></a>
 <span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span>    // Randomly choose one of the two merged regions<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    HRegionInfo hri = RandomUtils.nextBoolean() ?<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      mergedRegions.getFirst() : mergedRegions.getSecond();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    AssignmentManager am = cluster.getMaster().getAssignmentManager();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    RegionStates regionStates = am.getRegionStates();<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    long start = EnvironmentEdgeManager.currentTime();<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    while (!regionStates.isRegionInState(hri, State.MERGED)) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      assertFalse("Timed out in waiting one merged region to be in state MERGED",<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        EnvironmentEdgeManager.currentTime() - start &gt; 60000);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      Thread.sleep(500);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>    // We should not be able to assign it again<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    am.assign(hri, true);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    assertFalse("Merged region can't be assigned",<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      regionStates.isRegionInTransition(hri));<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    assertTrue(regionStates.isRegionInState(hri, State.MERGED));<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>    // We should not be able to unassign it either<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    am.unassign(hri, null);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    assertFalse("Merged region can't be unassigned",<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      regionStates.isRegionInTransition(hri));<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    assertTrue(regionStates.isRegionInState(hri, State.MERGED));<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>    table.close();<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>   * Not really restarting the master. Simulate it by clear of new region<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * state since it is not persisted, will be lost after master restarts.<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   */<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  @Test<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  public void testMergeAndRestartingMaster() throws Exception {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    LOG.info("Starting testMergeAndRestartingMaster");<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    final TableName tableName = TableName.valueOf("testMergeAndRestartingMaster");<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>    // Create table and load data.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    Table table = createTableAndLoadData(MASTER, tableName);<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>    try {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      MyMasterRpcServices.enabled.set(true);<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>      // Merge 1st and 2nd region<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1, INITIAL_REGION_NUM - 1);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    } finally {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      MyMasterRpcServices.enabled.set(false);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    table.close();<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>  @Test<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  public void testCleanMergeReference() throws Exception {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    LOG.info("Starting testCleanMergeReference");<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    ADMIN.enableCatalogJanitor(false);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    try {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      final TableName tableName =<a name="line.208"></a>
-<span class="sourceLineNo">209</span>          TableName.valueOf("testCleanMergeReference");<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      // Create table and load data.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      Table table = createTableAndLoadData(MASTER, tableName);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      // Merge 1st and 2nd region<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1,<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          INITIAL_REGION_NUM - 1);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      verifyRowCount(table, ROWSIZE);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      table.close();<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>      List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions = MetaTableAccessor<a name="line.218"></a>
-<span class="sourceLineNo">219</span>          .getTableRegionsAndLocations(MASTER.getConnection(), tableName);<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      HRegionInfo mergedRegionInfo = tableRegions.get(0).getFirst();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      HTableDescriptor tableDescriptor = MASTER.getTableDescriptors().get(<a name="line.221"></a>
-<span class="sourceLineNo">222</span>          tableName);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      Result mergedRegionResult = MetaTableAccessor.getRegionResult(<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        MASTER.getConnection(), mergedRegionInfo.getRegionName());<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>      // contains merge reference in META<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.227"></a>
-<span class="sourceLineNo">228</span>          HConstants.MERGEA_QUALIFIER) != null);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.229"></a>
-<span class="sourceLineNo">230</span>          HConstants.MERGEB_QUALIFIER) != null);<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>      // merging regions' directory are in the file system all the same<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      PairOfSameType&lt;HRegionInfo&gt; p = MetaTableAccessor.getMergeRegions(mergedRegionResult);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      HRegionInfo regionA = p.getFirst();<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      HRegionInfo regionB = p.getSecond();<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      FileSystem fs = MASTER.getMasterFileSystem().getFileSystem();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      Path rootDir = MASTER.getMasterFileSystem().getRootDir();<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>      Path tabledir = FSUtils.getTableDir(rootDir, mergedRegionInfo.getTable());<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      Path regionAdir = new Path(tabledir, regionA.getEncodedName());<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      Path regionBdir = new Path(tabledir, regionB.getEncodedName());<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      assertTrue(fs.exists(regionAdir));<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      assertTrue(fs.exists(regionBdir));<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>      HColumnDescriptor[] columnFamilies = tableDescriptor.getColumnFamilies();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      HRegionFileSystem hrfs = new HRegionFileSystem(<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        TEST_UTIL.getConfiguration(), fs, tabledir, mergedRegionInfo);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      int count = 0;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        count += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      ADMIN.compactRegion(mergedRegionInfo.getRegionName());<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      // clean up the merged region store files<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      // wait until merged region have reference file<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      long timeout = System.currentTimeMillis() + waitTime;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      int newcount = 0;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      while (System.currentTimeMillis() &lt; timeout) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          newcount += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        }<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        if(newcount &gt; count) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>          break;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        }<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        Thread.sleep(50);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      assertTrue(newcount &gt; count);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      List&lt;RegionServerThread&gt; regionServerThreads = TEST_UTIL.getHBaseCluster()<a name="line.267"></a>
-<span class="sourceLineNo">268</span>          .getRegionServerThreads();<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      for (RegionServerThread rs : regionServerThreads) {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        CompactedHFilesDischarger cleaner = new CompactedHFilesDischarger(100, null,<a name="line.270"></a>
-<span class="sourceLineNo">271</span>            rs.getRegionServer(), false);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        cleaner.chore();<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        Thread.sleep(1000);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      }<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      while (System.currentTimeMillis() &lt; timeout) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        int newcount1 = 0;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>          newcount1 += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        }<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        if(newcount1 &lt;= 1) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          break;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        Thread.sleep(50);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      // run CatalogJanitor to clean merge references in hbase:meta and archive the<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      // files of merging regions<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      int cleaned = 0;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      while (cleaned == 0) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        cleaned = ADMIN.runCatalogScan();<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        LOG.debug("catalog janitor returned " + cleaned);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        Thread.sleep(50);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      assertFalse(regionAdir.toString(), fs.exists(regionAdir));<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      assertFalse(regionBdir.toString(), fs.exists(regionBdir));<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      assertTrue(cleaned &gt; 0);<a name="line.295"></a>
-<span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>      mergedRegionResult = MetaTableAccessor.getRegionResult(<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        TEST_UTIL.getConnection(), mergedRegionInfo.getRegionName());<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          HConstants.MERGEA_QUALIFIER) != null);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.301"></a>
-<span class="sourceLineNo">302</span>          HConstants.MERGEB_QUALIFIER) != null);<a name="line.302"></a>
-<span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>    } finally {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      ADMIN.enableCatalogJanitor(true);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  /**<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * This test tests 1, merging region not online;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * 2, merging same two regions; 3, merging unknown regions.<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * They are in one test case so that we don't have to create<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * many tables, and these tests are simple.<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  @Test<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  public void testMerge() throws Exception {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    LOG.info("Starting testMerge");<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    final TableName tableName = TableName.valueOf("testMerge");<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>    try {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      // Create table and load data.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      Table table = createTableAndLoadData(MASTER, tableName);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      RegionStates regionStates = MASTER.getAssignmentManager().getRegionStates();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      List&lt;HRegionInfo&gt; regions = regionStates.getRegionsOfTable(tableName);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      // Fake offline one region<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      HRegionInfo a = regions.get(0);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      HRegionInfo b = regions.get(1);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      regionStates.regionOffline(a);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      try {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        // Merge offline region. Region a is offline here<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        ADMIN.mergeRegions(a.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), false);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        fail("Offline regions should not be able to merge");<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      } catch (IOException ie) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        System.out.println(ie);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        assertTrue("Exception should mention regions not online",<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          StringUtils.stringifyException(ie).contains("regions not online")<a name="line.336"></a>
-<span class="sourceLineNo">337</span>            &amp;&amp; ie instanceof MergeRegionException);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      try {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        // Merge the same region: b and b.<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        ADMIN.mergeRegions(b.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), true);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        fail("A region should not be able to merge with itself, even forcifully");<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      } catch (IOException ie) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        assertTrue("Exception should mention regions not online",<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          StringUtils.stringifyException(ie).contains("region to itself")<a name="line.345"></a>
-<span class="sourceLineNo">346</span>            &amp;&amp; ie instanceof MergeRegionException);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      try {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        // Merge unknown regions<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        ADMIN.mergeRegions(Bytes.toBytes("-f1"), Bytes.toBytes("-f2"), true);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        fail("Unknown region could not be merged");<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      } catch (IOException ie) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        assertTrue("UnknownRegionException should be thrown",<a name="line.353"></a>
-<span class="sourceLineNo">354</span>          ie instanceof UnknownRegionException);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      table.close();<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    } finally {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      TEST_UTIL.deleteTable(tableName);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  @Test<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  public void testMergeWithReplicas() throws Exception {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    final TableName tableName = TableName.valueOf("testMergeWithReplicas");<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    // Create table and load data.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    createTableAndLoadData(MASTER, tableName, 5, 2);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; initialRegionToServers =<a name="line.367"></a>
-<span class="sourceLineNo">368</span>        MetaTableAccessor.getTableRegionsAndLocations(<a name="line.368"></a>
-<span class="sourceLineNo">369</span>            TEST_UTIL.getConnection(), tableName);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    // Merge 1st and 2nd region<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions = mergeRegionsAndVerifyRegionNum(MASTER, tableName,<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        0, 2, 5 * 2 - 2);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; currentRegionToServers =<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        MetaTableAccessor.getTableRegionsAndLocations(<a name="line.374"></a>
-<span class="sourceLineNo">375</span>            TEST_UTIL.getConnection(), tableName);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    List&lt;HRegionInfo&gt; initialRegions = new ArrayList&lt;HRegionInfo&gt;();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    for (Pair&lt;HRegionInfo, ServerName&gt; p : initialRegionToServers) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      initialRegions.add(p.getFirst());<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    }<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    List&lt;HRegionInfo&gt; currentRegions = new ArrayList&lt;HRegionInfo&gt;();<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    for (Pair&lt;HRegionInfo, ServerName&gt; p : currentRegionToServers) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      currentRegions.add(p.getFirst());<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    assertTrue(initialRegions.contains(mergedRegions.getFirst())); //this is the first region<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    assertTrue(initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        mergedRegions.getFirst(), 1))); //this is the replica of the first region<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    assertTrue(initialRegions.contains(mergedRegions.getSecond())); //this is the second region<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    assertTrue(initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.388"></a>
-<span class="sourceLineNo">389</span>        mergedRegions.getSecond(), 1))); //this is the replica of the second region<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    assertTrue(!initialRegions.contains(currentRegions.get(0))); //this is the new region<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    assertTrue(!initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        currentRegions.get(0), 1))); //replica of the new region<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    assertTrue(currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        currentRegions.get(0), 1))); //replica of the new region<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertTrue(!currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        mergedRegions.getFirst(), 1))); //replica of the merged region<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    assertTrue(!currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        mergedRegions.getSecond(), 1))); //replica of the merged region<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  }<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private PairOfSameType&lt;HRegionInfo&gt; mergeRegionsAndVerifyRegionNum(<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      HMaster master, TableName tablename,<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      int regionAnum, int regionBnum, int expectedRegionNum) throws Exception {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions =<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      requestMergeRegion(master, tablename, regionAnum, regionBnum);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    waitAndVerifyRegionNum(master, tablename, expectedRegionNum);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    return mergedRegions;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  }<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private PairOfSameType&lt;HRegionInfo&gt; requestMergeRegion(<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      HMaster master, TableName tablename,<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      int regionAnum, int regionBnum) throws Exception {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions = MetaTableAccessor<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        .getTableRegionsAndLocations(<a name="line.414"></a>
-<span class="sourceLineNo">415</span>            TEST_UTIL.getConnection(), tablename);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    HRegionInfo regionA = tableRegions.get(regionAnum).getFirst();<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    HRegionInfo regionB = tableRegions.get(regionBnum).getFirst();<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    ADMIN.mergeRegions(<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      regionA.getEncodedNameAsBytes(),<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      regionB.getEncodedNameAsBytes(), false);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    return new PairOfSameType&lt;HRegionInfo&gt;(regionA, regionB);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  }<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>  private void waitAndVerifyRegionNum(HMaster master, TableName tablename,<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      int expectedRegionNum) throws Exception {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegionsInMeta;<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    List&lt;HRegionInfo&gt; tableRegionsInMaster;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    long timeout = System.currentTimeMillis() + waitTime;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    while (System.currentTimeMillis() &lt; timeout) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      tableRegionsInMeta = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        TEST_UTIL.getConnection(), tablename);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      tableRegionsInMaster = master.getAssignmentManager().getRegionStates()<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          .getRegionsOfTable(tablename);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      if (tableRegionsInMeta.size() == expectedRegionNum<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          &amp;&amp; tableRegionsInMaster.size() == expectedRegionNum) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>        break;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      Thread.sleep(250);<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>    tableRegionsInMeta = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        TEST_UTIL.getConnection(), tablename);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    LOG.info("Regions after merge:" + Joiner.on(',').join(tableRegionsInMeta));<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    assertEquals(expectedRegionNum, tableRegionsInMeta.size());<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  private Table createTableAndLoadData(HMaster master, TableName tablename)<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      throws Exception {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    return createTableAndLoadData(master, tablename, INITIAL_REGION_NUM, 1);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private Table createTableAndLoadData(HMaster master, TableName tablename,<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      int numRegions, int replication) throws Exception {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    assertTrue("ROWSIZE must &gt; numregions:" + numRegions, ROWSIZE &gt; numRegions);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    byte[][] splitRows = new byte[numRegions - 1][];<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    for (int i = 0; i &lt; splitRows.length; i++) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      splitRows[i] = ROWS[(i + 1) * ROWSIZE / numRegions];<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>    Table table = TEST_UTIL.createTable(tablename, FAMILYNAME, splitRows);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    if (replication &gt; 1) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      HBaseTestingUtility.setReplicas(ADMIN, tablename, replication);<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    }<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    loadData(table);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    verifyRowCount(table, ROWSIZE);<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    // sleep here is an ugly hack to allow region transitions to finish<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    long timeout = System.currentTimeMillis() + waitTime;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    while (System.currentTimeMillis() &lt; timeout) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      tableRegions = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.471"></a>
-<span class="sourceLineNo">472</span>          TEST_UTIL.getConnection(), tablename);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      if (tableRegions.size() == numRegions * replication)<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        break;<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      Thread.sleep(250);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>    tableRegions = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        TEST_UTIL.getConnection(), tablename);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    LOG.info("Regions after load: " + Joiner.on(',').join(tableRegions));<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    assertEquals(numRegions * replication, tableRegions.size());<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    return table;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  }<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span>  private static byte[][] makeN(byte[] base, int n) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    byte[][] ret = new byte[n][];<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    for (int i = 0; i &lt; n; i++) {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      ret[i] = Bytes.add(base, Bytes.toBytes(String.format("%04d", i)));<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    }<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    return ret;<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>  private void loadData(Table table) throws IOException {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    for (int i = 0; i &lt; ROWSIZE; i++) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      Put put = new Put(ROWS[i]);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      put.addColumn(FAMILYNAME, QUALIFIER, Bytes.toBytes(i));<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      table.put(put);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    }<a name="line.498"></a>
-<span class="sourceLineNo">499</span>  }<a name="line.499"></a>
-<span class="sourceLineNo">500</span><a name="line.500"></a>
-<span class="sourceLineNo">501</span>  private void verifyRowCount(Table table, int expectedRegionNum)<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      throws IOException {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    ResultScanner scanner = table.getScanner(new Scan());<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    int rowCount = 0;<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    while (scanner.next() != null) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      rowCount++;<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    }<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    assertEquals(expectedRegionNum, rowCount);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    scanner.close();<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>  // Make it public so that JVMClusterUtil can access it.<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  public static class MyMaster extends HMaster {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    public MyMaster(Configuration conf, CoordinatedStateManager cp)<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      throws IOException, KeeperException,<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        InterruptedException {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      super(conf, cp);<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>    @Override<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    protected RSRpcServices createRpcServices() throws IOException {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      return new MyMasterRpcServices(this);<a name="line.522"></a>
+<span class="sourceLineNo">151</span>    verifyRowCount(table, ROWSIZE);<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    // Randomly choose one of the two merged regions<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    HRegionInfo hri = RandomUtils.nextBoolean() ?<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      mergedRegions.getFirst() : mergedRegions.getSecond();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    AssignmentManager am = cluster.getMaster().getAssignmentManager();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    RegionStates regionStates = am.getRegionStates();<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    long start = EnvironmentEdgeManager.currentTime();<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    while (!regionStates.isRegionInState(hri, State.MERGED)) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      assertFalse("Timed out in waiting one merged region to be in state MERGED",<a name="line.161"></a>
+<span class="sourceLineNo">162</span>        EnvironmentEdgeManager.currentTime() - start &gt; 60000);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      Thread.sleep(500);<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>    // We should not be able to assign it again<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    am.assign(hri, true);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    assertFalse("Merged region can't be assigned",<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      regionStates.isRegionInTransition(hri));<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    assertTrue(regionStates.isRegionInState(hri, State.MERGED));<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>    // We should not be able to unassign it either<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    am.unassign(hri, null);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    assertFalse("Merged region can't be unassigned",<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      regionStates.isRegionInTransition(hri));<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    assertTrue(regionStates.isRegionInState(hri, State.MERGED));<a name="line.176"></a>
+<span class="sourceLineNo">177</span><a name="line.177"></a>
+<span class="sourceLineNo">178</span>    table.close();<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>  /**<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * Not really restarting the master. Simulate it by clear of new region<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * state since it is not persisted, will be lost after master restarts.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   */<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @Test<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public void testMergeAndRestartingMaster() throws Exception {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    final TableName tableName = TableName.valueOf("testMergeAndRestartingMaster");<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>    // Create table and load data.<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    Table table = createTableAndLoadData(MASTER, tableName);<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>    try {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      MyMasterRpcServices.enabled.set(true);<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>      // Merge 1st and 2nd region<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1, INITIAL_REGION_NUM - 1);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    } finally {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      MyMasterRpcServices.enabled.set(false);<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>    table.close();<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>  @Test<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  public void testCleanMergeReference() throws Exception {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    LOG.info("Starting testCleanMergeReference");<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    ADMIN.enableCatalogJanitor(false);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    try {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      final TableName tableName =<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          TableName.valueOf("testCleanMergeReference");<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      // Create table and load data.<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      Table table = createTableAndLoadData(MASTER, tableName);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      // Merge 1st and 2nd region<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1,<a name="line.214"></a>
+<span class="sourceLineNo">215</span>          INITIAL_REGION_NUM - 1);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      verifyRowCount(table, ROWSIZE);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      table.close();<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>      List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions = MetaTableAccessor<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          .getTableRegionsAndLocations(MASTER.getConnection(), tableName);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      HRegionInfo mergedRegionInfo = tableRegions.get(0).getFirst();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      HTableDescriptor tableDescriptor = MASTER.getTableDescriptors().get(<a name="line.222"></a>
+<span class="sourceLineNo">223</span>          tableName);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      Result mergedRegionResult = MetaTableAccessor.getRegionResult(<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        MASTER.getConnection(), mergedRegionInfo.getRegionName());<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>      // contains merge reference in META<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.228"></a>
+<span class="sourceLineNo">229</span>          HConstants.MERGEA_QUALIFIER) != null);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.230"></a>
+<span class="sourceLineNo">231</span>          HConstants.MERGEB_QUALIFIER) != null);<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>      // merging regions' directory are in the file system all the same<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      PairOfSameType&lt;HRegionInfo&gt; p = MetaTableAccessor.getMergeRegions(mergedRegionResult);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      HRegionInfo regionA = p.getFirst();<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      HRegionInfo regionB = p.getSecond();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      FileSystem fs = MASTER.getMasterFileSystem().getFileSystem();<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      Path rootDir = MASTER.getMasterFileSystem().getRootDir();<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>      Path tabledir = FSUtils.getTableDir(rootDir, mergedRegionInfo.getTable());<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      Path regionAdir = new Path(tabledir, regionA.getEncodedName());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      Path regionBdir = new Path(tabledir, regionB.getEncodedName());<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      assertTrue(fs.exists(regionAdir));<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      assertTrue(fs.exists(regionBdir));<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>      HColumnDescriptor[] columnFamilies = tableDescriptor.getColumnFamilies();<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      HRegionFileSystem hrfs = new HRegionFileSystem(<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        TEST_UTIL.getConfiguration(), fs, tabledir, mergedRegionInfo);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      int count = 0;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        count += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      ADMIN.compactRegion(mergedRegionInfo.getRegionName());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      // clean up the merged region store files<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      // wait until merged region have reference file<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      long timeout = System.currentTimeMillis() + waitTime;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      int newcount = 0;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      while (System.currentTimeMillis() &lt; timeout) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          newcount += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        }<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        if(newcount &gt; count) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          break;<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        Thread.sleep(50);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      }<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      assertTrue(newcount &gt; count);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      List&lt;RegionServerThread&gt; regionServerThreads = TEST_UTIL.getHBaseCluster()<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          .getRegionServerThreads();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      for (RegionServerThread rs : regionServerThreads) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        CompactedHFilesDischarger cleaner = new CompactedHFilesDischarger(100, null,<a name="line.271"></a>
+<span class="sourceLineNo">272</span>            rs.getRegionServer(), false);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        cleaner.chore();<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        Thread.sleep(1000);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      while (System.currentTimeMillis() &lt; timeout) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        int newcount1 = 0;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>          newcount1 += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        if(newcount1 &lt;= 1) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          break;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        Thread.sleep(50);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      // run CatalogJanitor to clean merge references in hbase:meta and archive the<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      // files of merging regions<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      int cleaned = 0;<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      while (cleaned == 0) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        cleaned = ADMIN.runCatalogScan();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        LOG.debug("catalog janitor returned " + cleaned);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        Thread.sleep(50);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      }<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      assertFalse(regionAdir.toString(), fs.exists(regionAdir));<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      assertFalse(regionBdir.toString(), fs.exists(regionBdir));<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      assertTrue(cleaned &gt; 0);<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>      mergedRegionResult = MetaTableAccessor.getRegionResult(<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        TEST_UTIL.getConnection(), mergedRegionInfo.getRegionName());<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          HConstants.MERGEA_QUALIFIER) != null);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          HConstants.MERGEB_QUALIFIER) != null);<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>    } finally {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      ADMIN.enableCatalogJanitor(true);<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><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /**<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * This test tests 1, merging region not online;<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * 2, merging same two regions; 3, merging unknown regions.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * They are in one test case so that we don't have to create<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * many tables, and these tests are simple.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   */<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  @Test<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public void testMerge() throws Exception {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    LOG.info("Starting testMerge");<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    final TableName tableName = TableName.valueOf("testMerge");<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>    try {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      // Create table and load data.<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      Table table = createTableAndLoadData(MASTER, tableName);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      RegionStates regionStates = MASTER.getAssignmentManager().getRegionStates();<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      List&lt;HRegionInfo&gt; regions = regionStates.getRegionsOfTable(tableName);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      // Fake offline one region<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      HRegionInfo a = regions.get(0);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      HRegionInfo b = regions.get(1);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      regionStates.regionOffline(a);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      try {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        // Merge offline region. Region a is offline here<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        ADMIN.mergeRegions(a.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), false);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>        fail("Offline regions should not be able to merge");<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      } catch (IOException ie) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        System.out.println(ie);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        assertTrue("Exception should mention regions not online",<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          StringUtils.stringifyException(ie).contains("regions not online")<a name="line.337"></a>
+<span class="sourceLineNo">338</span>            &amp;&amp; ie instanceof MergeRegionException);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      try {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        // Merge the same region: b and b.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        ADMIN.mergeRegions(b.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), true);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        fail("A region should not be able to merge with itself, even forcifully");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      } catch (IOException ie) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        assertTrue("Exception should mention regions not online",<a name="line.345"></a>
+<span class="sourceLineNo">346</span>          StringUtils.stringifyException(ie).contains("region to itself")<a name="line.346"></a>
+<span class="sourceLineNo">347</span>            &amp;&amp; ie instanceof MergeRegionException);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      try {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        // Merge unknown regions<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        ADMIN.mergeRegions(Bytes.toBytes("-f1"), Bytes.toBytes("-f2"), true);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        fail("Unknown region could not be merged");<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      } catch (IOException ie) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        assertTrue("UnknownRegionException should be thrown",<a name="line.354"></a>
+<span class="sourceLineNo">355</span>          ie instanceof UnknownRegionException);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      table.close();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    } finally {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      TEST_UTIL.deleteTable(tableName);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  @Test<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  public void testMergeWithReplicas() throws Exception {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    final TableName tableName = TableName.valueOf("testMergeWithReplicas");<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    // Create table and load data.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    createTableAndLoadData(MASTER, tableName, 5, 2);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; initialRegionToServers =<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        MetaTableAccessor.getTableRegionsAndLocations(<a name="line.369"></a>
+<span class="sourceLineNo">370</span>            TEST_UTIL.getConnection(), tableName);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    // Merge 1st and 2nd region<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions = mergeRegionsAndVerifyRegionNum(MASTER, tableName,<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        0, 2, 5 * 2 - 2);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; currentRegionToServers =<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        MetaTableAccessor.getTableRegionsAndLocations(<a name="line.375"></a>
+<span class="sourceLineNo">376</span>            TEST_UTIL.getConnection(), tableName);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    List&lt;HRegionInfo&gt; initialRegions = new ArrayList&lt;HRegionInfo&gt;();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    for (Pair&lt;HRegionInfo, ServerName&gt; p : initialRegionToServers) {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      initialRegions.add(p.getFirst());<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    List&lt;HRegionInfo&gt; currentRegions = new ArrayList&lt;HRegionInfo&gt;();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    for (Pair&lt;HRegionInfo, ServerName&gt; p : currentRegionToServers) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      currentRegions.add(p.getFirst());<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    assertTrue(initialRegions.contains(mergedRegions.getFirst())); //this is the first region<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    assertTrue(initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        mergedRegions.getFirst(), 1))); //this is the replica of the first region<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    assertTrue(initialRegions.contains(mergedRegions.getSecond())); //this is the second region<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    assertTrue(initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        mergedRegions.getSecond(), 1))); //this is the replica of the second region<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    assertTrue(!initialRegions.contains(currentRegions.get(0))); //this is the new region<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    assertTrue(!initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        currentRegions.get(0), 1))); //replica of the new region<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    assertTrue(currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        currentRegions.get(0), 1))); //replica of the new region<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertTrue(!currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        mergedRegions.getFirst(), 1))); //replica of the merged region<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    assertTrue(!currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        mergedRegions.getSecond(), 1))); //replica of the merged region<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>  private PairOfSameType&lt;HRegionInfo&gt; mergeRegionsAndVerifyRegionNum(<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      HMaster master, TableName tablename,<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      int regionAnum, int regionBnum, int expectedRegionNum) throws Exception {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions =<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      requestMergeRegion(master, tablename, regionAnum, regionBnum);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    waitAndVerifyRegionNum(master, tablename, expectedRegionNum);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    return mergedRegions;<a name="line.408"></a>
+<span class="sourceLineNo">409</span>  }<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>  private PairOfSameType&lt;HRegionInfo&gt; requestMergeRegion(<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      HMaster master, TableName tablename,<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      int regionAnum, int regionBnum) throws Exception {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions = MetaTableAccessor<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        .getTableRegionsAndLocations(<a name="line.415"></a>
+<span class="sourceLineNo">416</span>            TEST_UTIL.getConnection(), tablename);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    HRegionInfo regionA = tableRegions.get(regionAnum).getFirst();<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    HRegionInfo regionB = tableRegions.get(regionBnum).getFirst();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    ADMIN.mergeRegions(<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      regionA.getEncodedNameAsBytes(),<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      regionB.getEncodedNameAsBytes(), false);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    return new PairOfSameType&lt;HRegionInfo&gt;(regionA, regionB);<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>  private void waitAndVerifyRegionNum(HMaster master, TableName tablename,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      int expectedRegionNum) throws Exception {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegionsInMeta;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    List&lt;HRegionInfo&gt; tableRegionsInMaster;<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    long timeout = System.currentTimeMillis() + waitTime;<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    while (System.currentTimeMillis() &lt; timeout) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      tableRegionsInMeta = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.431"></a>
+<span class="sourceLineNo">432</span>        TEST_UTIL.getConnection(), tablename);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      tableRegionsInMaster = master.getAssignmentManager().getRegionStates()<a name="line.433"></a>
+<span class="sourceLineNo">434</span>          .getRegionsOfTable(tablename);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      if (tableRegionsInMeta.size() == expectedRegionNum<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          &amp;&amp; tableRegionsInMaster.size() == expectedRegionNum) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        break;<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      Thread.sleep(250);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>    tableRegionsInMeta = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        TEST_UTIL.getConnection(), tablename);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    LOG.info("Regions after merge:" + Joiner.on(',').join(tableRegionsInMeta));<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    assertEquals(expectedRegionNum, tableRegionsInMeta.size());<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  private Table createTableAndLoadData(HMaster master, TableName tablename)<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      throws Exception {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    return createTableAndLoadData(master, tablename, INITIAL_REGION_NUM, 1);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  }<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>  private Table createTableAndLoadData(HMaster master, TableName tablename,<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      int numRegions, int replication) throws Exception {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertTrue("ROWSIZE must &gt; numregions:" + numRegions, ROWSIZE &gt; numRegions);<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    byte[][] splitRows = new byte[numRegions - 1][];<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    for (int i = 0; i &lt; splitRows.length; i++) {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      splitRows[i] = ROWS[(i + 1) * ROWSIZE / numRegions];<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    }<a name="line.459"></a>
+<span class="sourceLineNo">460</span><a name="line.460"></a>
+<span class="sourceLineNo">461</span>    Table table = TEST_UTIL.createTable(tablename, FAMILYNAME, splitRows);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    LOG.info("Created " + table.getName());<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    if (replication &gt; 1) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      HBaseTestingUtility.setReplicas(ADMIN, tablename, replication);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      LOG.info("Set replication of " + replication + " on " + table.getName());<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    loadData(table);<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    LOG.info("Loaded " + table.getName());<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    verifyRowCount(table, ROWSIZE);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    LOG.info("Verified " + table.getName());<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>    // sleep here is an ugly hack to allow region transitions to finish<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    long timeout = System.currentTimeMillis() + waitTime;<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    while (System.currentTimeMillis() &lt; timeout) {<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      tableRegions = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.476"></a>
+<span class="sourceLineNo">477</span>          TEST_UTIL.getConnection(), tablename);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      if (tableRegions.size() == numRegions * replication)<a name="line.478"></a>
+<span class="sourceLineNo">479</span>        break;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      Thread.sleep(250);<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    LOG.info("Getting regions of " + table.getName());<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    tableRegions = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.483"></a>
+<span class="sourceLineNo">484</span>        TEST_UTIL.getConnection(), tablename);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    LOG.info("Regions after load: " + Joiner.on(',').join(tableRegions));<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    assertEquals(numRegions * replication, tableRegions.size());<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    return table;<a name="line.487"></a>
+<span class="sourceLineNo">488</span>  }<a name="line.488"></a>
+<span class="sourceLineNo">489</span><a name="line.489"></a>
+<span class="sourceLineNo">490</span>  private static byte[][] makeN(byte[] base, int n) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    byte[][] ret = new byte[n][];<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    for (int i = 0; i &lt; n; i++) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>      ret[i] = Bytes.add(base, Bytes.toBytes(String.format("%04d", i)));<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    return ret;<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>  private void loadData(Table table) throws IOException {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    for (int i = 0; i &lt; ROWSIZE; i++) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      Put put = new Put(ROWS[i]);<a name="line.500"></a>
+<span class="sourc

<TRUNCATED>

[19/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Responder.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Responder.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Responder.html
index e5d9af6..ea9ea4d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Responder.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Responder.html
@@ -2107,556 +2107,559 @@
 <span class="sourceLineNo">2099</span>  @Override<a name="line.2099"></a>
 <span class="sourceLineNo">2100</span>  public void onConfigurationChange(Configuration newConf) {<a name="line.2100"></a>
 <span class="sourceLineNo">2101</span>    initReconfigurable(newConf);<a name="line.2101"></a>
-<span class="sourceLineNo">2102</span>  }<a name="line.2102"></a>
-<span class="sourceLineNo">2103</span><a name="line.2103"></a>
-<span class="sourceLineNo">2104</span>  private void initReconfigurable(Configuration confToLoad) {<a name="line.2104"></a>
-<span class="sourceLineNo">2105</span>    this.allowFallbackToSimpleAuth = confToLoad.getBoolean(FALLBACK_TO_INSECURE_CLIENT_AUTH, false);<a name="line.2105"></a>
-<span class="sourceLineNo">2106</span>    if (isSecurityEnabled &amp;&amp; allowFallbackToSimpleAuth) {<a name="line.2106"></a>
-<span class="sourceLineNo">2107</span>      LOG.warn("********* WARNING! *********");<a name="line.2107"></a>
-<span class="sourceLineNo">2108</span>      LOG.warn("This server is configured to allow connections from INSECURE clients");<a name="line.2108"></a>
-<span class="sourceLineNo">2109</span>      LOG.warn("(" + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = true).");<a name="line.2109"></a>
-<span class="sourceLineNo">2110</span>      LOG.warn("While this option is enabled, client identities cannot be secured, and user");<a name="line.2110"></a>
-<span class="sourceLineNo">2111</span>      LOG.warn("impersonation is possible!");<a name="line.2111"></a>
-<span class="sourceLineNo">2112</span>      LOG.warn("For secure operation, please disable SIMPLE authentication as soon as possible,");<a name="line.2112"></a>
-<span class="sourceLineNo">2113</span>      LOG.warn("by setting " + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = false in hbase-site.xml");<a name="line.2113"></a>
-<span class="sourceLineNo">2114</span>      LOG.warn("****************************");<a name="line.2114"></a>
-<span class="sourceLineNo">2115</span>    }<a name="line.2115"></a>
-<span class="sourceLineNo">2116</span>  }<a name="line.2116"></a>
-<span class="sourceLineNo">2117</span><a name="line.2117"></a>
-<span class="sourceLineNo">2118</span>  /**<a name="line.2118"></a>
-<span class="sourceLineNo">2119</span>   * Subclasses of HBaseServer can override this to provide their own<a name="line.2119"></a>
-<span class="sourceLineNo">2120</span>   * Connection implementations.<a name="line.2120"></a>
-<span class="sourceLineNo">2121</span>   */<a name="line.2121"></a>
-<span class="sourceLineNo">2122</span>  protected Connection getConnection(SocketChannel channel, long time) {<a name="line.2122"></a>
-<span class="sourceLineNo">2123</span>    return new Connection(channel, time);<a name="line.2123"></a>
-<span class="sourceLineNo">2124</span>  }<a name="line.2124"></a>
-<span class="sourceLineNo">2125</span><a name="line.2125"></a>
-<span class="sourceLineNo">2126</span>  /**<a name="line.2126"></a>
-<span class="sourceLineNo">2127</span>   * Setup response for the RPC Call.<a name="line.2127"></a>
-<span class="sourceLineNo">2128</span>   *<a name="line.2128"></a>
-<span class="sourceLineNo">2129</span>   * @param response buffer to serialize the response into<a name="line.2129"></a>
-<span class="sourceLineNo">2130</span>   * @param call {@link Call} to which we are setting up the response<a name="line.2130"></a>
-<span class="sourceLineNo">2131</span>   * @param error error message, if the call failed<a name="line.2131"></a>
-<span class="sourceLineNo">2132</span>   * @throws IOException<a name="line.2132"></a>
-<span class="sourceLineNo">2133</span>   */<a name="line.2133"></a>
-<span class="sourceLineNo">2134</span>  private void setupResponse(ByteArrayOutputStream response, Call call, Throwable t, String error)<a name="line.2134"></a>
-<span class="sourceLineNo">2135</span>  throws IOException {<a name="line.2135"></a>
-<span class="sourceLineNo">2136</span>    if (response != null) response.reset();<a name="line.2136"></a>
-<span class="sourceLineNo">2137</span>    call.setResponse(null, null, t, error);<a name="line.2137"></a>
-<span class="sourceLineNo">2138</span>  }<a name="line.2138"></a>
-<span class="sourceLineNo">2139</span><a name="line.2139"></a>
-<span class="sourceLineNo">2140</span>  protected void closeConnection(Connection connection) {<a name="line.2140"></a>
-<span class="sourceLineNo">2141</span>    synchronized (connectionList) {<a name="line.2141"></a>
-<span class="sourceLineNo">2142</span>      if (connectionList.remove(connection)) {<a name="line.2142"></a>
-<span class="sourceLineNo">2143</span>        numConnections--;<a name="line.2143"></a>
-<span class="sourceLineNo">2144</span>      }<a name="line.2144"></a>
-<span class="sourceLineNo">2145</span>    }<a name="line.2145"></a>
-<span class="sourceLineNo">2146</span>    connection.close();<a name="line.2146"></a>
-<span class="sourceLineNo">2147</span>  }<a name="line.2147"></a>
-<span class="sourceLineNo">2148</span><a name="line.2148"></a>
-<span class="sourceLineNo">2149</span>  Configuration getConf() {<a name="line.2149"></a>
-<span class="sourceLineNo">2150</span>    return conf;<a name="line.2150"></a>
-<span class="sourceLineNo">2151</span>  }<a name="line.2151"></a>
-<span class="sourceLineNo">2152</span><a name="line.2152"></a>
-<span class="sourceLineNo">2153</span>  /** Sets the socket buffer size used for responding to RPCs.<a name="line.2153"></a>
-<span class="sourceLineNo">2154</span>   * @param size send size<a name="line.2154"></a>
-<span class="sourceLineNo">2155</span>   */<a name="line.2155"></a>
-<span class="sourceLineNo">2156</span>  @Override<a name="line.2156"></a>
-<span class="sourceLineNo">2157</span>  public void setSocketSendBufSize(int size) { this.socketSendBufferSize = size; }<a name="line.2157"></a>
-<span class="sourceLineNo">2158</span><a name="line.2158"></a>
+<span class="sourceLineNo">2102</span>    if (scheduler instanceof ConfigurationObserver) {<a name="line.2102"></a>
+<span class="sourceLineNo">2103</span>      ((ConfigurationObserver)scheduler).onConfigurationChange(newConf);<a name="line.2103"></a>
+<span class="sourceLineNo">2104</span>    }<a name="line.2104"></a>
+<span class="sourceLineNo">2105</span>  }<a name="line.2105"></a>
+<span class="sourceLineNo">2106</span><a name="line.2106"></a>
+<span class="sourceLineNo">2107</span>  private void initReconfigurable(Configuration confToLoad) {<a name="line.2107"></a>
+<span class="sourceLineNo">2108</span>    this.allowFallbackToSimpleAuth = confToLoad.getBoolean(FALLBACK_TO_INSECURE_CLIENT_AUTH, false);<a name="line.2108"></a>
+<span class="sourceLineNo">2109</span>    if (isSecurityEnabled &amp;&amp; allowFallbackToSimpleAuth) {<a name="line.2109"></a>
+<span class="sourceLineNo">2110</span>      LOG.warn("********* WARNING! *********");<a name="line.2110"></a>
+<span class="sourceLineNo">2111</span>      LOG.warn("This server is configured to allow connections from INSECURE clients");<a name="line.2111"></a>
+<span class="sourceLineNo">2112</span>      LOG.warn("(" + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = true).");<a name="line.2112"></a>
+<span class="sourceLineNo">2113</span>      LOG.warn("While this option is enabled, client identities cannot be secured, and user");<a name="line.2113"></a>
+<span class="sourceLineNo">2114</span>      LOG.warn("impersonation is possible!");<a name="line.2114"></a>
+<span class="sourceLineNo">2115</span>      LOG.warn("For secure operation, please disable SIMPLE authentication as soon as possible,");<a name="line.2115"></a>
+<span class="sourceLineNo">2116</span>      LOG.warn("by setting " + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = false in hbase-site.xml");<a name="line.2116"></a>
+<span class="sourceLineNo">2117</span>      LOG.warn("****************************");<a name="line.2117"></a>
+<span class="sourceLineNo">2118</span>    }<a name="line.2118"></a>
+<span class="sourceLineNo">2119</span>  }<a name="line.2119"></a>
+<span class="sourceLineNo">2120</span><a name="line.2120"></a>
+<span class="sourceLineNo">2121</span>  /**<a name="line.2121"></a>
+<span class="sourceLineNo">2122</span>   * Subclasses of HBaseServer can override this to provide their own<a name="line.2122"></a>
+<span class="sourceLineNo">2123</span>   * Connection implementations.<a name="line.2123"></a>
+<span class="sourceLineNo">2124</span>   */<a name="line.2124"></a>
+<span class="sourceLineNo">2125</span>  protected Connection getConnection(SocketChannel channel, long time) {<a name="line.2125"></a>
+<span class="sourceLineNo">2126</span>    return new Connection(channel, time);<a name="line.2126"></a>
+<span class="sourceLineNo">2127</span>  }<a name="line.2127"></a>
+<span class="sourceLineNo">2128</span><a name="line.2128"></a>
+<span class="sourceLineNo">2129</span>  /**<a name="line.2129"></a>
+<span class="sourceLineNo">2130</span>   * Setup response for the RPC Call.<a name="line.2130"></a>
+<span class="sourceLineNo">2131</span>   *<a name="line.2131"></a>
+<span class="sourceLineNo">2132</span>   * @param response buffer to serialize the response into<a name="line.2132"></a>
+<span class="sourceLineNo">2133</span>   * @param call {@link Call} to which we are setting up the response<a name="line.2133"></a>
+<span class="sourceLineNo">2134</span>   * @param error error message, if the call failed<a name="line.2134"></a>
+<span class="sourceLineNo">2135</span>   * @throws IOException<a name="line.2135"></a>
+<span class="sourceLineNo">2136</span>   */<a name="line.2136"></a>
+<span class="sourceLineNo">2137</span>  private void setupResponse(ByteArrayOutputStream response, Call call, Throwable t, String error)<a name="line.2137"></a>
+<span class="sourceLineNo">2138</span>  throws IOException {<a name="line.2138"></a>
+<span class="sourceLineNo">2139</span>    if (response != null) response.reset();<a name="line.2139"></a>
+<span class="sourceLineNo">2140</span>    call.setResponse(null, null, t, error);<a name="line.2140"></a>
+<span class="sourceLineNo">2141</span>  }<a name="line.2141"></a>
+<span class="sourceLineNo">2142</span><a name="line.2142"></a>
+<span class="sourceLineNo">2143</span>  protected void closeConnection(Connection connection) {<a name="line.2143"></a>
+<span class="sourceLineNo">2144</span>    synchronized (connectionList) {<a name="line.2144"></a>
+<span class="sourceLineNo">2145</span>      if (connectionList.remove(connection)) {<a name="line.2145"></a>
+<span class="sourceLineNo">2146</span>        numConnections--;<a name="line.2146"></a>
+<span class="sourceLineNo">2147</span>      }<a name="line.2147"></a>
+<span class="sourceLineNo">2148</span>    }<a name="line.2148"></a>
+<span class="sourceLineNo">2149</span>    connection.close();<a name="line.2149"></a>
+<span class="sourceLineNo">2150</span>  }<a name="line.2150"></a>
+<span class="sourceLineNo">2151</span><a name="line.2151"></a>
+<span class="sourceLineNo">2152</span>  Configuration getConf() {<a name="line.2152"></a>
+<span class="sourceLineNo">2153</span>    return conf;<a name="line.2153"></a>
+<span class="sourceLineNo">2154</span>  }<a name="line.2154"></a>
+<span class="sourceLineNo">2155</span><a name="line.2155"></a>
+<span class="sourceLineNo">2156</span>  /** Sets the socket buffer size used for responding to RPCs.<a name="line.2156"></a>
+<span class="sourceLineNo">2157</span>   * @param size send size<a name="line.2157"></a>
+<span class="sourceLineNo">2158</span>   */<a name="line.2158"></a>
 <span class="sourceLineNo">2159</span>  @Override<a name="line.2159"></a>
-<span class="sourceLineNo">2160</span>  public boolean isStarted() {<a name="line.2160"></a>
-<span class="sourceLineNo">2161</span>    return this.started;<a name="line.2161"></a>
-<span class="sourceLineNo">2162</span>  }<a name="line.2162"></a>
-<span class="sourceLineNo">2163</span><a name="line.2163"></a>
-<span class="sourceLineNo">2164</span>  /** Starts the service.  Must be called before any calls will be handled. */<a name="line.2164"></a>
-<span class="sourceLineNo">2165</span>  @Override<a name="line.2165"></a>
-<span class="sourceLineNo">2166</span>  public synchronized void start() {<a name="line.2166"></a>
-<span class="sourceLineNo">2167</span>    if (started) return;<a name="line.2167"></a>
-<span class="sourceLineNo">2168</span>    authTokenSecretMgr = createSecretManager();<a name="line.2168"></a>
-<span class="sourceLineNo">2169</span>    if (authTokenSecretMgr != null) {<a name="line.2169"></a>
-<span class="sourceLineNo">2170</span>      setSecretManager(authTokenSecretMgr);<a name="line.2170"></a>
-<span class="sourceLineNo">2171</span>      authTokenSecretMgr.start();<a name="line.2171"></a>
-<span class="sourceLineNo">2172</span>    }<a name="line.2172"></a>
-<span class="sourceLineNo">2173</span>    this.authManager = new ServiceAuthorizationManager();<a name="line.2173"></a>
-<span class="sourceLineNo">2174</span>    HBasePolicyProvider.init(conf, authManager);<a name="line.2174"></a>
-<span class="sourceLineNo">2175</span>    responder.start();<a name="line.2175"></a>
-<span class="sourceLineNo">2176</span>    listener.start();<a name="line.2176"></a>
-<span class="sourceLineNo">2177</span>    scheduler.start();<a name="line.2177"></a>
-<span class="sourceLineNo">2178</span>    started = true;<a name="line.2178"></a>
-<span class="sourceLineNo">2179</span>  }<a name="line.2179"></a>
-<span class="sourceLineNo">2180</span><a name="line.2180"></a>
-<span class="sourceLineNo">2181</span>  @Override<a name="line.2181"></a>
-<span class="sourceLineNo">2182</span>  public synchronized void refreshAuthManager(PolicyProvider pp) {<a name="line.2182"></a>
-<span class="sourceLineNo">2183</span>    // Ignore warnings that this should be accessed in a static way instead of via an instance;<a name="line.2183"></a>
-<span class="sourceLineNo">2184</span>    // it'll break if you go via static route.<a name="line.2184"></a>
-<span class="sourceLineNo">2185</span>    this.authManager.refresh(this.conf, pp);<a name="line.2185"></a>
-<span class="sourceLineNo">2186</span>  }<a name="line.2186"></a>
-<span class="sourceLineNo">2187</span><a name="line.2187"></a>
-<span class="sourceLineNo">2188</span>  private AuthenticationTokenSecretManager createSecretManager() {<a name="line.2188"></a>
-<span class="sourceLineNo">2189</span>    if (!isSecurityEnabled) return null;<a name="line.2189"></a>
-<span class="sourceLineNo">2190</span>    if (server == null) return null;<a name="line.2190"></a>
-<span class="sourceLineNo">2191</span>    Configuration conf = server.getConfiguration();<a name="line.2191"></a>
-<span class="sourceLineNo">2192</span>    long keyUpdateInterval =<a name="line.2192"></a>
-<span class="sourceLineNo">2193</span>        conf.getLong("hbase.auth.key.update.interval", 24*60*60*1000);<a name="line.2193"></a>
-<span class="sourceLineNo">2194</span>    long maxAge =<a name="line.2194"></a>
-<span class="sourceLineNo">2195</span>        conf.getLong("hbase.auth.token.max.lifetime", 7*24*60*60*1000);<a name="line.2195"></a>
-<span class="sourceLineNo">2196</span>    return new AuthenticationTokenSecretManager(conf, server.getZooKeeper(),<a name="line.2196"></a>
-<span class="sourceLineNo">2197</span>        server.getServerName().toString(), keyUpdateInterval, maxAge);<a name="line.2197"></a>
-<span class="sourceLineNo">2198</span>  }<a name="line.2198"></a>
-<span class="sourceLineNo">2199</span><a name="line.2199"></a>
-<span class="sourceLineNo">2200</span>  public SecretManager&lt;? extends TokenIdentifier&gt; getSecretManager() {<a name="line.2200"></a>
-<span class="sourceLineNo">2201</span>    return this.secretManager;<a name="line.2201"></a>
-<span class="sourceLineNo">2202</span>  }<a name="line.2202"></a>
-<span class="sourceLineNo">2203</span><a name="line.2203"></a>
-<span class="sourceLineNo">2204</span>  @SuppressWarnings("unchecked")<a name="line.2204"></a>
-<span class="sourceLineNo">2205</span>  public void setSecretManager(SecretManager&lt;? extends TokenIdentifier&gt; secretManager) {<a name="line.2205"></a>
-<span class="sourceLineNo">2206</span>    this.secretManager = (SecretManager&lt;TokenIdentifier&gt;) secretManager;<a name="line.2206"></a>
-<span class="sourceLineNo">2207</span>  }<a name="line.2207"></a>
-<span class="sourceLineNo">2208</span><a name="line.2208"></a>
-<span class="sourceLineNo">2209</span>  /**<a name="line.2209"></a>
-<span class="sourceLineNo">2210</span>   * This is a server side method, which is invoked over RPC. On success<a name="line.2210"></a>
-<span class="sourceLineNo">2211</span>   * the return response has protobuf response payload. On failure, the<a name="line.2211"></a>
-<span class="sourceLineNo">2212</span>   * exception name and the stack trace are returned in the protobuf response.<a name="line.2212"></a>
-<span class="sourceLineNo">2213</span>   */<a name="line.2213"></a>
-<span class="sourceLineNo">2214</span>  @Override<a name="line.2214"></a>
-<span class="sourceLineNo">2215</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,<a name="line.2215"></a>
-<span class="sourceLineNo">2216</span>      Message param, CellScanner cellScanner, long receiveTime, MonitoredRPCHandler status)<a name="line.2216"></a>
-<span class="sourceLineNo">2217</span>  throws IOException {<a name="line.2217"></a>
-<span class="sourceLineNo">2218</span>    try {<a name="line.2218"></a>
-<span class="sourceLineNo">2219</span>      status.setRPC(md.getName(), new Object[]{param}, receiveTime);<a name="line.2219"></a>
-<span class="sourceLineNo">2220</span>      // TODO: Review after we add in encoded data blocks.<a name="line.2220"></a>
-<span class="sourceLineNo">2221</span>      status.setRPCPacket(param);<a name="line.2221"></a>
-<span class="sourceLineNo">2222</span>      status.resume("Servicing call");<a name="line.2222"></a>
-<span class="sourceLineNo">2223</span>      //get an instance of the method arg type<a name="line.2223"></a>
-<span class="sourceLineNo">2224</span>      long startTime = System.currentTimeMillis();<a name="line.2224"></a>
-<span class="sourceLineNo">2225</span>      PayloadCarryingRpcController controller = new PayloadCarryingRpcController(cellScanner);<a name="line.2225"></a>
-<span class="sourceLineNo">2226</span>      Message result = service.callBlockingMethod(md, controller, param);<a name="line.2226"></a>
-<span class="sourceLineNo">2227</span>      long endTime = System.currentTimeMillis();<a name="line.2227"></a>
-<span class="sourceLineNo">2228</span>      int processingTime = (int) (endTime - startTime);<a name="line.2228"></a>
-<span class="sourceLineNo">2229</span>      int qTime = (int) (startTime - receiveTime);<a name="line.2229"></a>
-<span class="sourceLineNo">2230</span>      int totalTime = (int) (endTime - receiveTime);<a name="line.2230"></a>
-<span class="sourceLineNo">2231</span>      if (LOG.isTraceEnabled()) {<a name="line.2231"></a>
-<span class="sourceLineNo">2232</span>        LOG.trace(CurCall.get().toString() +<a name="line.2232"></a>
-<span class="sourceLineNo">2233</span>            ", response " + TextFormat.shortDebugString(result) +<a name="line.2233"></a>
-<span class="sourceLineNo">2234</span>            " queueTime: " + qTime +<a name="line.2234"></a>
-<span class="sourceLineNo">2235</span>            " processingTime: " + processingTime +<a name="line.2235"></a>
-<span class="sourceLineNo">2236</span>            " totalTime: " + totalTime);<a name="line.2236"></a>
-<span class="sourceLineNo">2237</span>      }<a name="line.2237"></a>
-<span class="sourceLineNo">2238</span>      long requestSize = param.getSerializedSize();<a name="line.2238"></a>
-<span class="sourceLineNo">2239</span>      long responseSize = result.getSerializedSize();<a name="line.2239"></a>
-<span class="sourceLineNo">2240</span>      metrics.dequeuedCall(qTime);<a name="line.2240"></a>
-<span class="sourceLineNo">2241</span>      metrics.processedCall(processingTime);<a name="line.2241"></a>
-<span class="sourceLineNo">2242</span>      metrics.totalCall(totalTime);<a name="line.2242"></a>
-<span class="sourceLineNo">2243</span>      metrics.receivedRequest(requestSize);<a name="line.2243"></a>
-<span class="sourceLineNo">2244</span>      metrics.sentResponse(responseSize);<a name="line.2244"></a>
-<span class="sourceLineNo">2245</span>      // log any RPC responses that are slower than the configured warn<a name="line.2245"></a>
-<span class="sourceLineNo">2246</span>      // response time or larger than configured warning size<a name="line.2246"></a>
-<span class="sourceLineNo">2247</span>      boolean tooSlow = (processingTime &gt; warnResponseTime &amp;&amp; warnResponseTime &gt; -1);<a name="line.2247"></a>
-<span class="sourceLineNo">2248</span>      boolean tooLarge = (responseSize &gt; warnResponseSize &amp;&amp; warnResponseSize &gt; -1);<a name="line.2248"></a>
-<span class="sourceLineNo">2249</span>      if (tooSlow || tooLarge) {<a name="line.2249"></a>
-<span class="sourceLineNo">2250</span>        // when tagging, we let TooLarge trump TooSmall to keep output simple<a name="line.2250"></a>
-<span class="sourceLineNo">2251</span>        // note that large responses will often also be slow.<a name="line.2251"></a>
-<span class="sourceLineNo">2252</span>        logResponse(new Object[]{param},<a name="line.2252"></a>
-<span class="sourceLineNo">2253</span>            md.getName(), md.getName() + "(" + param.getClass().getName() + ")",<a name="line.2253"></a>
-<span class="sourceLineNo">2254</span>            (tooLarge ? "TooLarge" : "TooSlow"),<a name="line.2254"></a>
-<span class="sourceLineNo">2255</span>            status.getClient(), startTime, processingTime, qTime,<a name="line.2255"></a>
-<span class="sourceLineNo">2256</span>            responseSize);<a name="line.2256"></a>
-<span class="sourceLineNo">2257</span>      }<a name="line.2257"></a>
-<span class="sourceLineNo">2258</span>      return new Pair&lt;Message, CellScanner&gt;(result, controller.cellScanner());<a name="line.2258"></a>
-<span class="sourceLineNo">2259</span>    } catch (Throwable e) {<a name="line.2259"></a>
-<span class="sourceLineNo">2260</span>      // The above callBlockingMethod will always return a SE.  Strip the SE wrapper before<a name="line.2260"></a>
-<span class="sourceLineNo">2261</span>      // putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't<a name="line.2261"></a>
-<span class="sourceLineNo">2262</span>      // need to pass it over the wire.<a name="line.2262"></a>
-<span class="sourceLineNo">2263</span>      if (e instanceof ServiceException) e = e.getCause();<a name="line.2263"></a>
-<span class="sourceLineNo">2264</span><a name="line.2264"></a>
-<span class="sourceLineNo">2265</span>      // increment the number of requests that were exceptions.<a name="line.2265"></a>
-<span class="sourceLineNo">2266</span>      metrics.exception(e);<a name="line.2266"></a>
+<span class="sourceLineNo">2160</span>  public void setSocketSendBufSize(int size) { this.socketSendBufferSize = size; }<a name="line.2160"></a>
+<span class="sourceLineNo">2161</span><a name="line.2161"></a>
+<span class="sourceLineNo">2162</span>  @Override<a name="line.2162"></a>
+<span class="sourceLineNo">2163</span>  public boolean isStarted() {<a name="line.2163"></a>
+<span class="sourceLineNo">2164</span>    return this.started;<a name="line.2164"></a>
+<span class="sourceLineNo">2165</span>  }<a name="line.2165"></a>
+<span class="sourceLineNo">2166</span><a name="line.2166"></a>
+<span class="sourceLineNo">2167</span>  /** Starts the service.  Must be called before any calls will be handled. */<a name="line.2167"></a>
+<span class="sourceLineNo">2168</span>  @Override<a name="line.2168"></a>
+<span class="sourceLineNo">2169</span>  public synchronized void start() {<a name="line.2169"></a>
+<span class="sourceLineNo">2170</span>    if (started) return;<a name="line.2170"></a>
+<span class="sourceLineNo">2171</span>    authTokenSecretMgr = createSecretManager();<a name="line.2171"></a>
+<span class="sourceLineNo">2172</span>    if (authTokenSecretMgr != null) {<a name="line.2172"></a>
+<span class="sourceLineNo">2173</span>      setSecretManager(authTokenSecretMgr);<a name="line.2173"></a>
+<span class="sourceLineNo">2174</span>      authTokenSecretMgr.start();<a name="line.2174"></a>
+<span class="sourceLineNo">2175</span>    }<a name="line.2175"></a>
+<span class="sourceLineNo">2176</span>    this.authManager = new ServiceAuthorizationManager();<a name="line.2176"></a>
+<span class="sourceLineNo">2177</span>    HBasePolicyProvider.init(conf, authManager);<a name="line.2177"></a>
+<span class="sourceLineNo">2178</span>    responder.start();<a name="line.2178"></a>
+<span class="sourceLineNo">2179</span>    listener.start();<a name="line.2179"></a>
+<span class="sourceLineNo">2180</span>    scheduler.start();<a name="line.2180"></a>
+<span class="sourceLineNo">2181</span>    started = true;<a name="line.2181"></a>
+<span class="sourceLineNo">2182</span>  }<a name="line.2182"></a>
+<span class="sourceLineNo">2183</span><a name="line.2183"></a>
+<span class="sourceLineNo">2184</span>  @Override<a name="line.2184"></a>
+<span class="sourceLineNo">2185</span>  public synchronized void refreshAuthManager(PolicyProvider pp) {<a name="line.2185"></a>
+<span class="sourceLineNo">2186</span>    // Ignore warnings that this should be accessed in a static way instead of via an instance;<a name="line.2186"></a>
+<span class="sourceLineNo">2187</span>    // it'll break if you go via static route.<a name="line.2187"></a>
+<span class="sourceLineNo">2188</span>    this.authManager.refresh(this.conf, pp);<a name="line.2188"></a>
+<span class="sourceLineNo">2189</span>  }<a name="line.2189"></a>
+<span class="sourceLineNo">2190</span><a name="line.2190"></a>
+<span class="sourceLineNo">2191</span>  private AuthenticationTokenSecretManager createSecretManager() {<a name="line.2191"></a>
+<span class="sourceLineNo">2192</span>    if (!isSecurityEnabled) return null;<a name="line.2192"></a>
+<span class="sourceLineNo">2193</span>    if (server == null) return null;<a name="line.2193"></a>
+<span class="sourceLineNo">2194</span>    Configuration conf = server.getConfiguration();<a name="line.2194"></a>
+<span class="sourceLineNo">2195</span>    long keyUpdateInterval =<a name="line.2195"></a>
+<span class="sourceLineNo">2196</span>        conf.getLong("hbase.auth.key.update.interval", 24*60*60*1000);<a name="line.2196"></a>
+<span class="sourceLineNo">2197</span>    long maxAge =<a name="line.2197"></a>
+<span class="sourceLineNo">2198</span>        conf.getLong("hbase.auth.token.max.lifetime", 7*24*60*60*1000);<a name="line.2198"></a>
+<span class="sourceLineNo">2199</span>    return new AuthenticationTokenSecretManager(conf, server.getZooKeeper(),<a name="line.2199"></a>
+<span class="sourceLineNo">2200</span>        server.getServerName().toString(), keyUpdateInterval, maxAge);<a name="line.2200"></a>
+<span class="sourceLineNo">2201</span>  }<a name="line.2201"></a>
+<span class="sourceLineNo">2202</span><a name="line.2202"></a>
+<span class="sourceLineNo">2203</span>  public SecretManager&lt;? extends TokenIdentifier&gt; getSecretManager() {<a name="line.2203"></a>
+<span class="sourceLineNo">2204</span>    return this.secretManager;<a name="line.2204"></a>
+<span class="sourceLineNo">2205</span>  }<a name="line.2205"></a>
+<span class="sourceLineNo">2206</span><a name="line.2206"></a>
+<span class="sourceLineNo">2207</span>  @SuppressWarnings("unchecked")<a name="line.2207"></a>
+<span class="sourceLineNo">2208</span>  public void setSecretManager(SecretManager&lt;? extends TokenIdentifier&gt; secretManager) {<a name="line.2208"></a>
+<span class="sourceLineNo">2209</span>    this.secretManager = (SecretManager&lt;TokenIdentifier&gt;) secretManager;<a name="line.2209"></a>
+<span class="sourceLineNo">2210</span>  }<a name="line.2210"></a>
+<span class="sourceLineNo">2211</span><a name="line.2211"></a>
+<span class="sourceLineNo">2212</span>  /**<a name="line.2212"></a>
+<span class="sourceLineNo">2213</span>   * This is a server side method, which is invoked over RPC. On success<a name="line.2213"></a>
+<span class="sourceLineNo">2214</span>   * the return response has protobuf response payload. On failure, the<a name="line.2214"></a>
+<span class="sourceLineNo">2215</span>   * exception name and the stack trace are returned in the protobuf response.<a name="line.2215"></a>
+<span class="sourceLineNo">2216</span>   */<a name="line.2216"></a>
+<span class="sourceLineNo">2217</span>  @Override<a name="line.2217"></a>
+<span class="sourceLineNo">2218</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,<a name="line.2218"></a>
+<span class="sourceLineNo">2219</span>      Message param, CellScanner cellScanner, long receiveTime, MonitoredRPCHandler status)<a name="line.2219"></a>
+<span class="sourceLineNo">2220</span>  throws IOException {<a name="line.2220"></a>
+<span class="sourceLineNo">2221</span>    try {<a name="line.2221"></a>
+<span class="sourceLineNo">2222</span>      status.setRPC(md.getName(), new Object[]{param}, receiveTime);<a name="line.2222"></a>
+<span class="sourceLineNo">2223</span>      // TODO: Review after we add in encoded data blocks.<a name="line.2223"></a>
+<span class="sourceLineNo">2224</span>      status.setRPCPacket(param);<a name="line.2224"></a>
+<span class="sourceLineNo">2225</span>      status.resume("Servicing call");<a name="line.2225"></a>
+<span class="sourceLineNo">2226</span>      //get an instance of the method arg type<a name="line.2226"></a>
+<span class="sourceLineNo">2227</span>      long startTime = System.currentTimeMillis();<a name="line.2227"></a>
+<span class="sourceLineNo">2228</span>      PayloadCarryingRpcController controller = new PayloadCarryingRpcController(cellScanner);<a name="line.2228"></a>
+<span class="sourceLineNo">2229</span>      Message result = service.callBlockingMethod(md, controller, param);<a name="line.2229"></a>
+<span class="sourceLineNo">2230</span>      long endTime = System.currentTimeMillis();<a name="line.2230"></a>
+<span class="sourceLineNo">2231</span>      int processingTime = (int) (endTime - startTime);<a name="line.2231"></a>
+<span class="sourceLineNo">2232</span>      int qTime = (int) (startTime - receiveTime);<a name="line.2232"></a>
+<span class="sourceLineNo">2233</span>      int totalTime = (int) (endTime - receiveTime);<a name="line.2233"></a>
+<span class="sourceLineNo">2234</span>      if (LOG.isTraceEnabled()) {<a name="line.2234"></a>
+<span class="sourceLineNo">2235</span>        LOG.trace(CurCall.get().toString() +<a name="line.2235"></a>
+<span class="sourceLineNo">2236</span>            ", response " + TextFormat.shortDebugString(result) +<a name="line.2236"></a>
+<span class="sourceLineNo">2237</span>            " queueTime: " + qTime +<a name="line.2237"></a>
+<span class="sourceLineNo">2238</span>            " processingTime: " + processingTime +<a name="line.2238"></a>
+<span class="sourceLineNo">2239</span>            " totalTime: " + totalTime);<a name="line.2239"></a>
+<span class="sourceLineNo">2240</span>      }<a name="line.2240"></a>
+<span class="sourceLineNo">2241</span>      long requestSize = param.getSerializedSize();<a name="line.2241"></a>
+<span class="sourceLineNo">2242</span>      long responseSize = result.getSerializedSize();<a name="line.2242"></a>
+<span class="sourceLineNo">2243</span>      metrics.dequeuedCall(qTime);<a name="line.2243"></a>
+<span class="sourceLineNo">2244</span>      metrics.processedCall(processingTime);<a name="line.2244"></a>
+<span class="sourceLineNo">2245</span>      metrics.totalCall(totalTime);<a name="line.2245"></a>
+<span class="sourceLineNo">2246</span>      metrics.receivedRequest(requestSize);<a name="line.2246"></a>
+<span class="sourceLineNo">2247</span>      metrics.sentResponse(responseSize);<a name="line.2247"></a>
+<span class="sourceLineNo">2248</span>      // log any RPC responses that are slower than the configured warn<a name="line.2248"></a>
+<span class="sourceLineNo">2249</span>      // response time or larger than configured warning size<a name="line.2249"></a>
+<span class="sourceLineNo">2250</span>      boolean tooSlow = (processingTime &gt; warnResponseTime &amp;&amp; warnResponseTime &gt; -1);<a name="line.2250"></a>
+<span class="sourceLineNo">2251</span>      boolean tooLarge = (responseSize &gt; warnResponseSize &amp;&amp; warnResponseSize &gt; -1);<a name="line.2251"></a>
+<span class="sourceLineNo">2252</span>      if (tooSlow || tooLarge) {<a name="line.2252"></a>
+<span class="sourceLineNo">2253</span>        // when tagging, we let TooLarge trump TooSmall to keep output simple<a name="line.2253"></a>
+<span class="sourceLineNo">2254</span>        // note that large responses will often also be slow.<a name="line.2254"></a>
+<span class="sourceLineNo">2255</span>        logResponse(new Object[]{param},<a name="line.2255"></a>
+<span class="sourceLineNo">2256</span>            md.getName(), md.getName() + "(" + param.getClass().getName() + ")",<a name="line.2256"></a>
+<span class="sourceLineNo">2257</span>            (tooLarge ? "TooLarge" : "TooSlow"),<a name="line.2257"></a>
+<span class="sourceLineNo">2258</span>            status.getClient(), startTime, processingTime, qTime,<a name="line.2258"></a>
+<span class="sourceLineNo">2259</span>            responseSize);<a name="line.2259"></a>
+<span class="sourceLineNo">2260</span>      }<a name="line.2260"></a>
+<span class="sourceLineNo">2261</span>      return new Pair&lt;Message, CellScanner&gt;(result, controller.cellScanner());<a name="line.2261"></a>
+<span class="sourceLineNo">2262</span>    } catch (Throwable e) {<a name="line.2262"></a>
+<span class="sourceLineNo">2263</span>      // The above callBlockingMethod will always return a SE.  Strip the SE wrapper before<a name="line.2263"></a>
+<span class="sourceLineNo">2264</span>      // putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't<a name="line.2264"></a>
+<span class="sourceLineNo">2265</span>      // need to pass it over the wire.<a name="line.2265"></a>
+<span class="sourceLineNo">2266</span>      if (e instanceof ServiceException) e = e.getCause();<a name="line.2266"></a>
 <span class="sourceLineNo">2267</span><a name="line.2267"></a>
-<span class="sourceLineNo">2268</span>      if (e instanceof LinkageError) throw new DoNotRetryIOException(e);<a name="line.2268"></a>
-<span class="sourceLineNo">2269</span>      if (e instanceof IOException) throw (IOException)e;<a name="line.2269"></a>
-<span class="sourceLineNo">2270</span>      LOG.error("Unexpected throwable object ", e);<a name="line.2270"></a>
-<span class="sourceLineNo">2271</span>      throw new IOException(e.getMessage(), e);<a name="line.2271"></a>
-<span class="sourceLineNo">2272</span>    }<a name="line.2272"></a>
-<span class="sourceLineNo">2273</span>  }<a name="line.2273"></a>
-<span class="sourceLineNo">2274</span><a name="line.2274"></a>
-<span class="sourceLineNo">2275</span>  /**<a name="line.2275"></a>
-<span class="sourceLineNo">2276</span>   * Logs an RPC response to the LOG file, producing valid JSON objects for<a name="line.2276"></a>
-<span class="sourceLineNo">2277</span>   * client Operations.<a name="line.2277"></a>
-<span class="sourceLineNo">2278</span>   * @param params The parameters received in the call.<a name="line.2278"></a>
-<span class="sourceLineNo">2279</span>   * @param methodName The name of the method invoked<a name="line.2279"></a>
-<span class="sourceLineNo">2280</span>   * @param call The string representation of the call<a name="line.2280"></a>
-<span class="sourceLineNo">2281</span>   * @param tag  The tag that will be used to indicate this event in the log.<a name="line.2281"></a>
-<span class="sourceLineNo">2282</span>   * @param clientAddress   The address of the client who made this call.<a name="line.2282"></a>
-<span class="sourceLineNo">2283</span>   * @param startTime       The time that the call was initiated, in ms.<a name="line.2283"></a>
-<span class="sourceLineNo">2284</span>   * @param processingTime  The duration that the call took to run, in ms.<a name="line.2284"></a>
-<span class="sourceLineNo">2285</span>   * @param qTime           The duration that the call spent on the queue<a name="line.2285"></a>
-<span class="sourceLineNo">2286</span>   *                        prior to being initiated, in ms.<a name="line.2286"></a>
-<span class="sourceLineNo">2287</span>   * @param responseSize    The size in bytes of the response buffer.<a name="line.2287"></a>
-<span class="sourceLineNo">2288</span>   */<a name="line.2288"></a>
-<span class="sourceLineNo">2289</span>  void logResponse(Object[] params, String methodName, String call, String tag,<a name="line.2289"></a>
-<span class="sourceLineNo">2290</span>      String clientAddress, long startTime, int processingTime, int qTime,<a name="line.2290"></a>
-<span class="sourceLineNo">2291</span>      long responseSize)<a name="line.2291"></a>
-<span class="sourceLineNo">2292</span>          throws IOException {<a name="line.2292"></a>
-<span class="sourceLineNo">2293</span>    // base information that is reported regardless of type of call<a name="line.2293"></a>
-<span class="sourceLineNo">2294</span>    Map&lt;String, Object&gt; responseInfo = new HashMap&lt;String, Object&gt;();<a name="line.2294"></a>
-<span class="sourceLineNo">2295</span>    responseInfo.put("starttimems", startTime);<a name="line.2295"></a>
-<span class="sourceLineNo">2296</span>    responseInfo.put("processingtimems", processingTime);<a name="line.2296"></a>
-<span class="sourceLineNo">2297</span>    responseInfo.put("queuetimems", qTime);<a name="line.2297"></a>
-<span class="sourceLineNo">2298</span>    responseInfo.put("responsesize", responseSize);<a name="line.2298"></a>
-<span class="sourceLineNo">2299</span>    responseInfo.put("client", clientAddress);<a name="line.2299"></a>
-<span class="sourceLineNo">2300</span>    responseInfo.put("class", server == null? "": server.getClass().getSimpleName());<a name="line.2300"></a>
-<span class="sourceLineNo">2301</span>    responseInfo.put("method", methodName);<a name="line.2301"></a>
-<span class="sourceLineNo">2302</span>    if (params.length == 2 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2302"></a>
-<span class="sourceLineNo">2303</span>        params[0] instanceof byte[] &amp;&amp;<a name="line.2303"></a>
-<span class="sourceLineNo">2304</span>        params[1] instanceof Operation) {<a name="line.2304"></a>
-<span class="sourceLineNo">2305</span>      // if the slow process is a query, we want to log its table as well<a name="line.2305"></a>
-<span class="sourceLineNo">2306</span>      // as its own fingerprint<a name="line.2306"></a>
-<span class="sourceLineNo">2307</span>      TableName tableName = TableName.valueOf(<a name="line.2307"></a>
-<span class="sourceLineNo">2308</span>          HRegionInfo.parseRegionName((byte[]) params[0])[0]);<a name="line.2308"></a>
-<span class="sourceLineNo">2309</span>      responseInfo.put("table", tableName.getNameAsString());<a name="line.2309"></a>
-<span class="sourceLineNo">2310</span>      // annotate the response map with operation details<a name="line.2310"></a>
-<span class="sourceLineNo">2311</span>      responseInfo.putAll(((Operation) params[1]).toMap());<a name="line.2311"></a>
-<span class="sourceLineNo">2312</span>      // report to the log file<a name="line.2312"></a>
-<span class="sourceLineNo">2313</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2313"></a>
-<span class="sourceLineNo">2314</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2314"></a>
-<span class="sourceLineNo">2315</span>    } else if (params.length == 1 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2315"></a>
-<span class="sourceLineNo">2316</span>        params[0] instanceof Operation) {<a name="line.2316"></a>
-<span class="sourceLineNo">2317</span>      // annotate the response map with operation details<a name="line.2317"></a>
-<span class="sourceLineNo">2318</span>      responseInfo.putAll(((Operation) params[0]).toMap());<a name="line.2318"></a>
-<span class="sourceLineNo">2319</span>      // report to the log file<a name="line.2319"></a>
-<span class="sourceLineNo">2320</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2320"></a>
-<span class="sourceLineNo">2321</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2321"></a>
-<span class="sourceLineNo">2322</span>    } else {<a name="line.2322"></a>
-<span class="sourceLineNo">2323</span>      // can't get JSON details, so just report call.toString() along with<a name="line.2323"></a>
-<span class="sourceLineNo">2324</span>      // a more generic tag.<a name="line.2324"></a>
-<span class="sourceLineNo">2325</span>      responseInfo.put("call", call);<a name="line.2325"></a>
-<span class="sourceLineNo">2326</span>      LOG.warn("(response" + tag + "): " + MAPPER.writeValueAsString(responseInfo));<a name="line.2326"></a>
-<span class="sourceLineNo">2327</span>    }<a name="line.2327"></a>
-<span class="sourceLineNo">2328</span>  }<a name="line.2328"></a>
-<span class="sourceLineNo">2329</span><a name="line.2329"></a>
-<span class="sourceLineNo">2330</span>  /** Stops the service.  No new calls will be handled after this is called. */<a name="line.2330"></a>
-<span class="sourceLineNo">2331</span>  @Override<a name="line.2331"></a>
-<span class="sourceLineNo">2332</span>  public synchronized void stop() {<a name="line.2332"></a>
-<span class="sourceLineNo">2333</span>    LOG.info("Stopping server on " + port);<a name="line.2333"></a>
-<span class="sourceLineNo">2334</span>    running = false;<a name="line.2334"></a>
-<span class="sourceLineNo">2335</span>    if (authTokenSecretMgr != null) {<a name="line.2335"></a>
-<span class="sourceLineNo">2336</span>      authTokenSecretMgr.stop();<a name="line.2336"></a>
-<span class="sourceLineNo">2337</span>      authTokenSecretMgr = null;<a name="line.2337"></a>
-<span class="sourceLineNo">2338</span>    }<a name="line.2338"></a>
-<span class="sourceLineNo">2339</span>    listener.interrupt();<a name="line.2339"></a>
-<span class="sourceLineNo">2340</span>    listener.doStop();<a name="line.2340"></a>
-<span class="sourceLineNo">2341</span>    responder.interrupt();<a name="line.2341"></a>
-<span class="sourceLineNo">2342</span>    scheduler.stop();<a name="line.2342"></a>
-<span class="sourceLineNo">2343</span>    notifyAll();<a name="line.2343"></a>
-<span class="sourceLineNo">2344</span>  }<a name="line.2344"></a>
-<span class="sourceLineNo">2345</span><a name="line.2345"></a>
-<span class="sourceLineNo">2346</span>  /** Wait for the server to be stopped.<a name="line.2346"></a>
-<span class="sourceLineNo">2347</span>   * Does not wait for all subthreads to finish.<a name="line.2347"></a>
-<span class="sourceLineNo">2348</span>   *  See {@link #stop()}.<a name="line.2348"></a>
-<span class="sourceLineNo">2349</span>   * @throws InterruptedException e<a name="line.2349"></a>
-<span class="sourceLineNo">2350</span>   */<a name="line.2350"></a>
-<span class="sourceLineNo">2351</span>  @Override<a name="line.2351"></a>
-<span class="sourceLineNo">2352</span>  public synchronized void join() throws InterruptedException {<a name="line.2352"></a>
-<span class="sourceLineNo">2353</span>    while (running) {<a name="line.2353"></a>
-<span class="sourceLineNo">2354</span>      wait();<a name="line.2354"></a>
-<span class="sourceLineNo">2355</span>    }<a name="line.2355"></a>
-<span class="sourceLineNo">2356</span>  }<a name="line.2356"></a>
-<span class="sourceLineNo">2357</span><a name="line.2357"></a>
-<span class="sourceLineNo">2358</span>  /**<a name="line.2358"></a>
-<span class="sourceLineNo">2359</span>   * Return the socket (ip+port) on which the RPC server is listening to. May return null if<a name="line.2359"></a>
-<span class="sourceLineNo">2360</span>   * the listener channel is closed.<a name="line.2360"></a>
-<span class="sourceLineNo">2361</span>   * @return the socket (ip+port) on which the RPC server is listening to, or null if this<a name="line.2361"></a>
-<span class="sourceLineNo">2362</span>   * information cannot be determined<a name="line.2362"></a>
-<span class="sourceLineNo">2363</span>   */<a name="line.2363"></a>
-<span class="sourceLineNo">2364</span>  @Override<a name="line.2364"></a>
-<span class="sourceLineNo">2365</span>  public synchronized InetSocketAddress getListenerAddress() {<a name="line.2365"></a>
-<span class="sourceLineNo">2366</span>    if (listener == null) {<a name="line.2366"></a>
-<span class="sourceLineNo">2367</span>      return null;<a name="line.2367"></a>
-<span class="sourceLineNo">2368</span>    }<a name="line.2368"></a>
-<span class="sourceLineNo">2369</span>    return listener.getAddress();<a name="line.2369"></a>
-<span class="sourceLineNo">2370</span>  }<a name="line.2370"></a>
-<span class="sourceLineNo">2371</span><a name="line.2371"></a>
-<span class="sourceLineNo">2372</span>  /**<a name="line.2372"></a>
-<span class="sourceLineNo">2373</span>   * Set the handler for calling out of RPC for error conditions.<a name="line.2373"></a>
-<span class="sourceLineNo">2374</span>   * @param handler the handler implementation<a name="line.2374"></a>
-<span class="sourceLineNo">2375</span>   */<a name="line.2375"></a>
-<span class="sourceLineNo">2376</span>  @Override<a name="line.2376"></a>
-<span class="sourceLineNo">2377</span>  public void setErrorHandler(HBaseRPCErrorHandler handler) {<a name="line.2377"></a>
-<span class="sourceLineNo">2378</span>    this.errorHandler = handler;<a name="line.2378"></a>
-<span class="sourceLineNo">2379</span>  }<a name="line.2379"></a>
-<span class="sourceLineNo">2380</span><a name="line.2380"></a>
-<span class="sourceLineNo">2381</span>  @Override<a name="line.2381"></a>
-<span class="sourceLineNo">2382</span>  public HBaseRPCErrorHandler getErrorHandler() {<a name="line.2382"></a>
-<span class="sourceLineNo">2383</span>    return this.errorHandler;<a name="line.2383"></a>
-<span class="sourceLineNo">2384</span>  }<a name="line.2384"></a>
-<span class="sourceLineNo">2385</span><a name="line.2385"></a>
-<span class="sourceLineNo">2386</span>  /**<a name="line.2386"></a>
-<span class="sourceLineNo">2387</span>   * Returns the metrics instance for reporting RPC call statistics<a name="line.2387"></a>
-<span class="sourceLineNo">2388</span>   */<a name="line.2388"></a>
-<span class="sourceLineNo">2389</span>  @Override<a name="line.2389"></a>
-<span class="sourceLineNo">2390</span>  public MetricsHBaseServer getMetrics() {<a name="line.2390"></a>
-<span class="sourceLineNo">2391</span>    return metrics;<a name="line.2391"></a>
-<span class="sourceLineNo">2392</span>  }<a name="line.2392"></a>
-<span class="sourceLineNo">2393</span><a name="line.2393"></a>
-<span class="sourceLineNo">2394</span>  @Override<a name="line.2394"></a>
-<span class="sourceLineNo">2395</span>  public void addCallSize(final long diff) {<a name="line.2395"></a>
-<span class="sourceLineNo">2396</span>    this.callQueueSize.add(diff);<a name="line.2396"></a>
-<span class="sourceLineNo">2397</span>  }<a name="line.2397"></a>
-<span class="sourceLineNo">2398</span><a name="line.2398"></a>
-<span class="sourceLineNo">2399</span>  /**<a name="line.2399"></a>
-<span class="sourceLineNo">2400</span>   * Authorize the incoming client connection.<a name="line.2400"></a>
-<span class="sourceLineNo">2401</span>   *<a name="line.2401"></a>
-<span class="sourceLineNo">2402</span>   * @param user client user<a name="line.2402"></a>
-<span class="sourceLineNo">2403</span>   * @param connection incoming connection<a name="line.2403"></a>
-<span class="sourceLineNo">2404</span>   * @param addr InetAddress of incoming connection<a name="line.2404"></a>
-<span class="sourceLineNo">2405</span>   * @throws org.apache.hadoop.security.authorize.AuthorizationException<a name="line.2405"></a>
-<span class="sourceLineNo">2406</span>   *         when the client isn't authorized to talk the protocol<a name="line.2406"></a>
-<span class="sourceLineNo">2407</span>   */<a name="line.2407"></a>
-<span class="sourceLineNo">2408</span>  public synchronized void authorize(UserGroupInformation user, ConnectionHeader connection,<a name="line.2408"></a>
-<span class="sourceLineNo">2409</span>      InetAddress addr)<a name="line.2409"></a>
-<span class="sourceLineNo">2410</span>  throws AuthorizationException {<a name="line.2410"></a>
-<span class="sourceLineNo">2411</span>    if (authorize) {<a name="line.2411"></a>
-<span class="sourceLineNo">2412</span>      Class&lt;?&gt; c = getServiceInterface(services, connection.getServiceName());<a name="line.2412"></a>
-<span class="sourceLineNo">2413</span>      this.authManager.authorize(user != null ? user : null, c, getConf(), addr);<a name="line.2413"></a>
-<span class="sourceLineNo">2414</span>    }<a name="line.2414"></a>
-<span class="sourceLineNo">2415</span>  }<a name="line.2415"></a>
-<span class="sourceLineNo">2416</span><a name="line.2416"></a>
-<span class="sourceLineNo">2417</span>  /**<a name="line.2417"></a>
-<span class="sourceLineNo">2418</span>   * When the read or write buffer size is larger than this limit, i/o will be<a name="line.2418"></a>
-<span class="sourceLineNo">2419</span>   * done in chunks of this size. Most RPC requests and responses would be<a name="line.2419"></a>
-<span class="sourceLineNo">2420</span>   * be smaller.<a name="line.2420"></a>
-<span class="sourceLineNo">2421</span>   */<a name="line.2421"></a>
-<span class="sourceLineNo">2422</span>  private static int NIO_BUFFER_LIMIT = 64 * 1024; //should not be more than 64KB.<a name="line.2422"></a>
-<span class="sourceLineNo">2423</span><a name="line.2423"></a>
-<span class="sourceLineNo">2424</span>  /**<a name="line.2424"></a>
-<span class="sourceLineNo">2425</span>   * This is a wrapper around {@link java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)}.<a name="line.2425"></a>
-<span class="sourceLineNo">2426</span>   * If the amount of data is large, it writes to channel in smaller chunks.<a name="line.2426"></a>
-<span class="sourceLineNo">2427</span>   * This is to avoid jdk from creating many direct buffers as the size of<a name="line.2427"></a>
-<span class="sourceLineNo">2428</span>   * buffer increases. This also minimizes extra copies in NIO layer<a name="line.2428"></a>
-<span class="sourceLineNo">2429</span>   * as a result of multiple write operations required to write a large<a name="line.2429"></a>
-<span class="sourceLineNo">2430</span>   * buffer.<a name="line.2430"></a>
-<span class="sourceLineNo">2431</span>   *<a name="line.2431"></a>
-<span class="sourceLineNo">2432</span>   * @param channel writable byte channel to write to<a name="line.2432"></a>
-<span class="sourceLineNo">2433</span>   * @param bufferChain Chain of buffers to write<a name="line.2433"></a>
-<span class="sourceLineNo">2434</span>   * @return number of bytes written<a name="line.2434"></a>
-<span class="sourceLineNo">2435</span>   * @throws java.io.IOException e<a name="line.2435"></a>
-<span class="sourceLineNo">2436</span>   * @see java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)<a name="line.2436"></a>
-<span class="sourceLineNo">2437</span>   */<a name="line.2437"></a>
-<span class="sourceLineNo">2438</span>  protected long channelWrite(GatheringByteChannel channel, BufferChain bufferChain)<a name="line.2438"></a>
-<span class="sourceLineNo">2439</span>  throws IOException {<a name="line.2439"></a>
-<span class="sourceLineNo">2440</span>    long count =  bufferChain.write(channel, NIO_BUFFER_LIMIT);<a name="line.2440"></a>
-<span class="sourceLineNo">2441</span>    if (count &gt; 0) this.metrics.sentBytes(count);<a name="line.2441"></a>
-<span class="sourceLineNo">2442</span>    return count;<a name="line.2442"></a>
-<span class="sourceLineNo">2443</span>  }<a name="line.2443"></a>
-<span class="sourceLineNo">2444</span><a name="line.2444"></a>
-<span class="sourceLineNo">2445</span>  /**<a name="line.2445"></a>
-<span class="sourceLineNo">2446</span>   * This is a wrapper around {@link java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer)}.<a name="line.2446"></a>
-<span class="sourceLineNo">2447</span>   * If the amount of data is large, it writes to channel in smaller chunks.<a name="line.2447"></a>
-<span class="sourceLineNo">2448</span>   * This is to avoid jdk from creating many direct buffers as the size of<a name="line.2448"></a>
-<span class="sourceLineNo">2449</span>   * ByteBuffer increases. There should not be any performance degredation.<a name="line.2449"></a>
-<span class="sourceLineNo">2450</span>   *<a name="line.2450"></a>
-<span class="sourceLineNo">2451</span>   * @param channel writable byte channel to write on<a name="line.2451"></a>
-<span class="sourceLineNo">2452</span>   * @param buffer buffer to write<a name="line.2452"></a>
-<span class="sourceLineNo">2453</span>   * @return number of bytes written<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>   * @throws java.io.IOException e<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>   * @see java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer)<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>   */<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>  protected int channelRead(ReadableByteChannel channel,<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>                                   ByteBuffer buffer) throws IOException {<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span><a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>    int count = (buffer.remaining() &lt;= NIO_BUFFER_LIMIT) ?<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>           channel.read(buffer) : channelIO(channel, null, buffer);<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span>    if (count &gt; 0) {<a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      metrics.receivedBytes(count);<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>    }<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>    return count;<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>  }<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span><a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>  /**<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>   * Helper for {@link #channelRead(java.nio.channels.ReadableByteChannel, java.nio.ByteBuffer)}<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>   * and {@link #channelWrite(GatheringByteChannel, BufferChain)}. Only<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span>   * one of readCh or writeCh should be non-null.<a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>   *<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>   * @param readCh read channel<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>   * @param writeCh write channel<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>   * @param buf buffer to read or write into/out of<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>   * @return bytes written<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>   * @throws java.io.IOException e<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>   * @see #channelRead(java.nio.channels.ReadableByteChannel, java.nio.ByteBuffer)<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>   * @see #channelWrite(GatheringByteChannel, BufferChain)<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>   */<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>  private static int channelIO(ReadableByteChannel readCh,<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>                               WritableByteChannel writeCh,<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>                               ByteBuffer buf) throws IOException {<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span><a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    int originalLimit = buf.limit();<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    int initialRemaining = buf.remaining();<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>    int ret = 0;<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span><a name="line.2488"></a>
-<span class="sourceLineNo">2489</span>    while (buf.remaining() &gt; 0) {<a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>      try {<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>        int ioSize = Math.min(buf.remaining(), NIO_BUFFER_LIMIT);<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>        buf.limit(buf.position() + ioSize);<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span><a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>        ret = (readCh == null) ? writeCh.write(buf) : readCh.read(buf);<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span><a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>        if (ret &lt; ioSize) {<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>          break;<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>        }<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span><a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      } finally {<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>        buf.limit(originalLimit);<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>      }<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>    }<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span><a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>    int nBytes = initialRemaining - buf.remaining();<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    return (nBytes &gt; 0) ? nBytes : ret;<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>  }<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span><a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>  /**<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>   * Needed for features such as delayed calls.  We need to be able to store the current call<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>   * so that we can complete it later or ask questions of what is supported by the current ongoing<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span>   * call.<a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>   * @return An RpcCallContext backed by the currently ongoing call (gotten from a thread local)<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>   */<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>  public static RpcCallContext getCurrentCall() {<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    return CurCall.get();<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>  }<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span><a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>  public static boolean isInRpcCallContext() {<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>    return CurCall.get() != null;<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>  }<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span><a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>  /**<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>   * Returns the user credentials associated with the current RPC request or<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>   * &lt;code&gt;null&lt;/code&gt; if no credentials were provided.<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>   * @return A User<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>   */<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  public static User getRequestUser() {<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span>    RpcCallContext ctx = getCurrentCall();<a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>    return ctx == null? null: ctx.getRequestUser();<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>  }<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span><a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  /**<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>   * Returns the username for any user associated with the current RPC<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>   * request or &lt;code&gt;null&lt;/code&gt; if no user is set.<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>   */<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>  public static String getRequestUserName() {<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    User user = getRequestUser();<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>    return user == null? null: user.getShortName();<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>  }<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span><a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>  /**<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>   * @return Address of remote client if a request is ongoing, else null<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>   */<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span>  public static InetAddress getRemoteAddress() {<a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>    RpcCallContext ctx = getCurrentCall();<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>    return ctx == null? null: ctx.getRemoteAddress();<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>  }<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span><a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>  /**<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span>   * @param services Available service instances<a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>   * @return Matching BlockingServiceAndInterface pair<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   */<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>  static BlockingServiceAndInterface getServiceAndInterface(<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>      final List&lt;BlockingServiceAndInterface&gt; services, final String serviceName) {<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>    for (BlockingServiceAndInterface bs : services) {<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>      if (bs.getBlockingService().getDescriptorForType().getName().equals(serviceName)) {<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>        return bs;<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>      }<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>    }<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>    return null;<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>  }<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span><a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>  /**<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>   * @param services Available services and their service interfaces.<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>   * @return Service interface class for &lt;code&gt;serviceName&lt;/code&gt;<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>   */<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>  static Class&lt;?&gt; getServiceInterface(<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>      final List&lt;BlockingServiceAndInterface&gt; services,<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>      final String serviceName) {<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>    BlockingServiceAndInterface bsasi =<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span>        getServiceAndInterface(services, serviceName);<a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>    return bsasi == null? null: bsasi.getServiceInterface();<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>  }<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span><a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>  /**<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>   * @param services Available services and their service interfaces.<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>   * @return BlockingService that goes with the passed &lt;code&gt;serviceName&lt;/code&gt;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>   */<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>  static BlockingService getService(<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>      final List&lt;BlockingServiceAndInterface&gt; services,<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span>      final String serviceName) {<a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    BlockingServiceAndInterface bsasi =<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>        getServiceAndInterface(services, serviceName);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    return bsasi == null? null: bsasi.getBlockingService();<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span>  }<a name="line.2589"></a>
-<span class="sourceLineNo">2590</span><a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>  static MonitoredRPCHandler getStatus() {<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // It is ugly the way we park status up in RpcServer.  Let it be for now.  TODO.<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    MonitoredRPCHandler status = RpcServer.MONITORED_RPC.get();<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    if (status != null) {<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>      return status;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    }<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>    status = TaskMonitor.get().createRPCStatus(Thread.currentThread().getName());<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>    status.pause("Waiting for a call");<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>    RpcServer.MONITORED_RPC.set(status);<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>    return status;<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span>  }<a name="line.2601"></a>
-<span class="sourceLineNo">2602</span><a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>  /** Returns the remote side ip address when invoked inside an RPC<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>   *  Returns null incase of an error.<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span>   *  @return InetAddress<a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>   */<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>  public static InetAddress getRemoteIp() {<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>    Call call = CurCall.get();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>    if (call != null &amp;&amp; call.connection != null &amp;&amp; call.connection.socket != null) {<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      return call.connection.socket.getInetAddress();<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>    }<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>    return null;<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>  }<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span><a name="line.2614"></a>
-<span class="sourceLineNo">2615</span><a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>  /**<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>   * A convenience method to bind to a given address and report<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>   * better exceptions if the address is not a valid host.<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>   * @param socket the socket to bind<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>   * @param address the address to bind to<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>   * @param backlog the number of connections allowed in the queue<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>   * @throws BindException if the address can't be bound<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>   * @throws UnknownHostException if the address isn't a valid host name<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>   * @throws IOException other random errors from bind<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>   */<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span>  public static void bind(ServerSocket socket, InetSocketAddress address,<a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>                          int backlog) throws IOException {<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>    try {<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span>      socket.bind(address, backlog);<a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>    } catch (BindException e) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>      BindException bindException =<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        new BindException("Problem binding to " + address + " : " +<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>            e.getMessage());<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>      bindException.initCause(e);<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>      throw bindException;<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>    } catch (SocketException e) {<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>      // If they try to bind to a different host's address, give a better<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // error message.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      if ("Unresolved address".equals(e.getMessage())) {<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>        throw new UnknownHostException("Invalid hostname for server: " +<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>                                       address.getHostName());<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      }<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      throw e;<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>    }<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>  }<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span><a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>  @Override<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>  public RpcScheduler getScheduler() {<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>    return scheduler;<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>  }<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>}<a name="line.2651"></a>
+<span class="sourceLineNo">2268</span>      // increment the number of requests that were exceptions.<a name="line.2268"></a>
+<span class="sourceLineNo">2269</span>      metrics.exception(e);<a name="line.2269"></a>
+<span class="sourceLineNo">2270</span><a name="line.2270"></a>
+<span class="sourceLineNo">2271</span>      if (e instanceof LinkageError) throw new DoNotRetryIOException(e);<a name="line.2271"></a>
+<span class="sourceLineNo">2272</span>      if (e instanceof IOException) throw (IOException)e;<a name="line.2272"></a>
+<span class="sourceLineNo">2273</span>      LOG.error("Unexpected throwable object ", e);<a name="line.2273"></a>
+<span class="sourceLineNo">2274</span>      throw new IOException(e.getMessage(), e);<a name="line.2274"></a>
+<span class="sourceLineNo">2275</span>    }<a name="line.2275"></a>
+<span class="sourceLineNo">2276</span>  }<a name="line.2276"></a>
+<span class="sourceLineNo">2277</span><a name="line.2277"></a>
+<span class="sourceLineNo">2278</span>  /**<a name="line.2278"></a>
+<span class="sourceLineNo">2279</span>   * Logs an RPC response to the LOG file, producing valid JSON objects for<a name="line.2279"></a>
+<span class="sourceLineNo">2280</span>   * client Operations.<a name="line.2280"></a>
+<span class="sourceLineNo">2281</span>   * @param params The parameters received in the call.<a name="line.2281"></a>
+<span class="sourceLineNo">2282</span>   * @param methodName The name of the method invoked<a name="line.2282"></a>
+<span class="sourceLineNo">2283</span>   * @param call The string representation of the call<a name="line.2283"></a>
+<span class="sourceLineNo">2284</span>   * @param tag  The tag that will be used to indicate this event in the log.<a name="line.2284"></a>
+<span class="sourceLineNo">2285</span>   * @param clientAddress   The address of the client who made this call.<a name="line.2285"></a>
+<span class="sourceLineNo">2286</span>   * @param startTime       The time that the call was initiated, in ms.<a name="line.2286"></a>
+<span class="sourceLineNo">2287</span>   * @param processingTime  The duration that the call took to run, in ms.<a name="line.2287"></a>
+<span class="sourceLineNo">2288</span>   * @param qTime           The duration that the call spent on the queue<a name="line.2288"></a>
+<span class="sourceLineNo">2289</span>   *                        prior to being initiated, in ms.<a name="line.2289"></a>
+<span class="sourceLineNo">2290</span>   * @param responseSize    The size in bytes of the response buffer.<a name="line.2290"></a>
+<span class="sourceLineNo">2291</span>   */<a name="line.2291"></a>
+<span class="sourceLineNo">2292</span>  void logResponse(Object[] params, String methodName, String call, String tag,<a name="line.2292"></a>
+<span class="sourceLineNo">2293</span>      String clientAddress, long startTime, int processingTime, int qTime,<a name="line.2293"></a>
+<span class="sourceLineNo">2294</span>      long responseSize)<a name="line.2294"></a>
+<span class="sourceLineNo">2295</span>          throws IOException {<a name="line.2295"></a>
+<span class="sourceLineNo">2296</span>    // base information that is reported regardless of type of call<a name="line.2296"></a>
+<span class="sourceLineNo">2297</span>    Map&lt;String, Object&gt; responseInfo = new HashMap&lt;String, Object&gt;();<a name="line.2297"></a>
+<span class="sourceLineNo">2298</span>    responseInfo.put("starttimems", startTime);<a name="line.2298"></a>
+<span class="sourceLineNo">2299</span>    responseInfo.put("processingtimems", processingTime);<a name="line.2299"></a>
+<span class="sourceLineNo">2300</span>    responseInfo.put("queuetimems", qTime);<a name="line.2300"></a>
+<span class="sourceLineNo">2301</span>    responseInfo.put("responsesize", responseSize);<a name="line.2301"></a>
+<span class="sourceLineNo">2302</span>    responseInfo.put("client", clientAddress);<a name="line.2302"></a>
+<span class="sourceLineNo">2303</span>    responseInfo.put("class", server == null? "": server.getClass().getSimpleName());<a name="line.2303"></a>
+<span class="sourceLineNo">2304</span>    responseInfo.put("method", methodName);<a name="line.2304"></a>
+<span class="sourceLineNo">2305</span>    if (params.length == 2 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2305"></a>
+<span class="sourceLineNo">2306</span>        params[0] instanceof byte[] &amp;&amp;<a name="line.2306"></a>
+<span class="sourceLineNo">2307</span>        params[1] instanceof Operation) {<a name="line.2307"></a>
+<span class="sourceLineNo">2308</span>      // if the slow process is a query, we want to log its table as well<a name="line.2308"></a>
+<span class="sourceLineNo">2309</span>      // as its own fingerprint<a name="line.2309"></a>
+<span class="sourceLineNo">2310</span>      TableName tableName = TableName.valueOf(<a name="line.2310"></a>
+<span class="sourceLineNo">2311</span>          HRegionInfo.parseRegionName((byte[]) params[0])[0]);<a name="line.2311"></a>
+<span class="sourceLineNo">2312</span>      responseInfo.put("table", tableName.getNameAsString());<a name="line.2312"></a>
+<span class="sourceLineNo">2313</span>      // annotate the response map with operation details<a name="line.2313"></a>
+<span class="sourceLineNo">2314</span>      responseInfo.putAll(((Operation) params[1]).toMap());<a name="line.2314"></a>
+<span class="sourceLineNo">2315</span>      // report to the log file<a name="line.2315"></a>
+<span class="sourceLineNo">2316</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2316"></a>
+<span class="sourceLineNo">2317</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2317"></a>
+<span class="sourceLineNo">2318</span>    } else if (params.length == 1 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2318"></a>
+<span class="sourceLineNo">2319</span>        params[0] instanceof Operation) {<a name="line.2319"></a>
+<span class="sourceLineNo">2320</span>      // annotate the response map with operation details<a name="line.2320"></a>
+<span class="sourceLineNo">2321</span>      responseInfo.putAll(((Operation) params[0]).toMap());<a name="line.2321"></a>
+<span class="sourceLineNo">2322</span>      // report to the log file<a name="line.2322"></a>
+<span class="sourceLineNo">2323</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2323"></a>
+<span class="sourceLineNo">2324</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2324"></a>
+<span class="sourceLineNo">2325</span>    } else {<a name="line.2325"></a>
+<span class="sourceLineNo">2326</span>      // can't get JSON details, so just report call.toString() along with<a name="line.2326"></a>
+<span class="sourceLineNo">2327</span>      // a more generic tag.<a name="line.2327"></a>
+<span class="sourceLineNo">2328</span>      responseInfo.put("call", call);<a name="line.2328"></a>
+<span class="sourceLineNo">2329</span>      LOG.warn("(response" + tag + "): " + MAPPER.writeValueAsString(responseInfo));<a name="line.2329"></a>
+<span class="sourceLineNo">2330</span>    }<a name="line.2330"></a>
+<span class="sourceLineNo">2331</span>  }<a name="line.2331"></a>
+<span class="sourceLineNo">2332</span><a name="line.2332"></a>
+<span class="sourceLineNo">2333</span>  /** Stops the service.  No new calls will be handled after this is called. */<a name="line.2333"></a>
+<span class="sourceLineNo">2334</span>  @Override<a name="line.2334"></a>
+<span class="sourceLineNo">2335</span>  public synchronized void stop() {<a name="line.2335"></a>
+<span class="sourceLineNo">2336</span>    LOG.info("Stopping server on " + port);<a name="line.2336"></a>
+<span class="sourceLineNo">2337</span>    running = false;<a name="line.2337"></a>
+<span class="sourceLineNo">2338</span>    if (authTokenSecretMgr != null) {<a name="line.2338"></a>
+<span class="sourceLineNo">2339</span>      authTokenSecretMgr.stop();<a name="line.2339"></a>
+<span class="sourceLineNo">2340</span>      authTokenSecretMgr = null;<a name="line.2340"></a>
+<span class="sourceLineNo">2341</span>    }<a name="line.2341"></a>
+<span class="sourceLineNo">2342</span>    listener.interrupt();<a name="line.2342"></a>
+<span class="sourceLineNo">2343</span>    listener.doStop();<a name="line.2343"></a>
+<span class="sourceLineNo">2344</span>    responder.interrupt();<a name="line.2344"></a>
+<span class="sourceLineNo">2345</span>    scheduler.stop();<a name="line.2345"></a>
+<span class="sourceLineNo">2346</span>    notifyAll();<a name="line.2346"></a>
+<span class="sourceLineNo">2347</span>  }<a name="line.2347"></a>
+<span class="sourceLineNo">2348</span><a name="line.2348"></a>
+<span class="sourceLineNo">2349</span>  /** Wait for the server to be stopped.<a name="line.2349"></a>
+<span class="sourceLineNo">2350</span>   * Does not wait for all subthreads to finish.<a name="line.2350"></a>
+<span class="sourceLineNo">2351</span>   *  See {@link #stop()}.<a name="line.2351"></a>
+<span class="sourceLineNo">2352</span>   * @throws InterruptedException e<a name="line.2352"></a>
+<span class="sourceLineNo">2353</span>   */<a name="line.2353"></a>
+<span class="sourceLineNo">2354</span>  @Override<a name="line.2354"></a>
+<span class="sourceLineNo">2355</span>  public synchronized void join() throws InterruptedException {<a name="line.2355"></a>
+<span class="sourceLineNo">2356</span>    while (running) {<a name="line.2356"></a>
+<span class="sourceLineNo">2357</span>      wait();<a name="line.2357"></a>
+<span class="sourceLineNo">2358</span>    }<a name="line.2358"></a>
+<span class="sourceLineNo">2359</span>  }<a name="line.2359"></a>
+<span class="sourceLineNo">2360</span><a name="line.2360"></a>
+<span class="sourceLineNo">2361</span>  /**<a name="line.2361"></a>
+<span class="sourceLineNo">2362</span>   * Return the socket (ip+port) on which the RPC server is listening to. May return null if<a name="line.2362"></a>
+<span class="sourceLineNo">2363</span>   * the listener channel is closed.<a name="line.2363"></a>
+<span class="sourceLineNo">2364</span>   * @return the socket (ip+port) on which the RPC server is listening to, or null if this<a name="line.2364"></a>
+<span class="sourceLineNo">2365</span>   * information cannot be determined<a name="line.2365"></a>
+<span class="sourceLineNo">2366</span>   */<a name="line.2366"></a>
+<span class="sourceLineNo">2367</span>  @Override<a name="line.2367"></a>
+<span class="sourceLineNo">2368</span>  public synchronized InetSocketAddress getListenerAddress() {<a name="line.2368"></a>
+<span class="sourceLineNo">2369</span>    if (listener == null) {<a name="line.2369"></a>
+<span class="sourceLineNo">2370</span>      return null;<a name="line.2370"></a>
+<span class="sourceLineNo">2371</span>    }<a name="line.2371"></a>
+<span class="sourceLineNo">2372</span>    return listener.getAddress();<a name="line.2372"></a>
+<span class="sourceLineNo">2373</span>  }<a name="line.2373"></a>
+<span class="sourceLineNo">2374</span><a name="line.2374"></a>
+<span class="sourceLineNo">2375</span>  /**<a name="line.2375"></a>
+<span class="sourceLineNo">2376</span>   * Set the handler for calling out of RPC for error conditions.<a name="line.2376"></a>
+<span class="sourceLineNo">2377</span>   * @param handler the handler implementation<a name="line.2377"></a>
+<span class="sourceLineNo">2378</span>   */<a name="line.2378"></a>
+<span class="sourceLineNo">2379</span>  @Override<a name="line.2379"></a>
+<span class="sourceLineNo">2380</span>  public void setErrorHandler(HBaseRPCErrorHandler handler) {<a name="line.2380"></a>
+<span class="sourceLineNo">2381</span>    this.errorHandler = handler;<a name="line.2381"></a>
+<span class="sourceLineNo">2382</span>  }<a name="line.2382"></a>
+<span class="sourceLineNo">2383</span><a name="line.2383"></a>
+<span class="sourceLineNo">2384</span>  @Override<a name="line.2384"></a>
+<span class="sourceLineNo">2385</span>  public HBaseRPCErrorHandler getErrorHandler() {<a name="line.2385"></a>
+<span class="sourceLineNo">2386</span>    return this.errorHandler;<a name="line.2386"></a>
+<span class="sourceLineNo">2387</span>  }<a name="line.2387"></a>
+<span class="sourceLineNo">2388</span><a name="line.2388"></a>
+<span class="sourceLineNo">2389</span>  /**<a name="line.2389"></a>
+<span class="sourceLineNo">2390</span>   * Returns the metrics instance for reporting RPC call statistics<a name="line.2390"></a>
+<span class="sourceLineNo">2391</span>   */<a name="line.2391"></a>
+<span class="sourceLineNo">2392</span>  @Override<a name="line.2392"></a>
+<span class="sourceLineNo">2393</span>  public MetricsHBaseServer getMetrics() {<a name="line.2393"></a>
+<span class="sourceLineNo">2394</span>    return metrics;<a name="line.2394"></a>
+<span class="sourceLineNo">2395</span>  }<a name="line.2395"></a>
+<span class="sourceLineNo">2396</span><a name="line.2396"></a>
+<span class="sourceLineNo">2397</span>  @Override<a name="line.2397"></a>
+<span class="sourceLineNo">2398</span>  public void addCallSize(final long diff) {<a name="line.2398"></a>
+<span class="sourceLineNo">2399</span>    this.callQueueSize.add(diff);<a name="line.2399"></a>
+<span class="sourceLineNo">2400</span>  }<a name="line.2400"></a>
+<span class="sourceLineNo">2401</span><a name="line.2401"></a>
+<span class="sourceLineNo">2402</span>  /**<a name="line.2402"></a>
+<span class="sourceLineNo">2403</span>   * Authorize the incoming client connection.<a name="line.2403"></a>
+<span class="sourceLineNo">2404</span>   *<a name="line.2404"></a>
+<span class="sourceLineNo">2405</span>   * @param user client user<a name="line.2405"></a>
+<span class="sourceLineNo">2406</span>   * @param connection incoming connection<a name="line.2406"></a>
+<span class="sourceLineNo">2407</span>   * @param addr InetAddress of incoming connection<a name="line.2407"></a>
+<span class="sourceLineNo">2408</span>   * @throws org.apache.hadoop.security.authorize.AuthorizationException<a name="line.2408"></a>
+<span class="sourceLineNo">2409</span>   *         when the client isn't authorized to talk the protocol<a name="line.2409"></a>
+<span class="sourceLineNo">2410</span>   */<a name="line.2410"></a>
+<span class="sourceLineNo">2411</span>  public synchronized void authorize(UserGroupInformation user, ConnectionHeader connection,<a name="line.2411"></a>
+<span class="sourceLineNo">2412</span>      InetAddress addr)<a name="line.2412"></a>
+<span class="sourceLineNo">2413</span>  throws AuthorizationException {<a name="line.2413"></a>
+<span class="sourceLineNo">2414</span>    if (authorize) {<a name="line.2414"></a>
+<span class="sourceLineNo">2415</span>      Class&lt;?&gt; c = getServiceInterface(services, connection.getServiceName());<a name="line.2415"></a>
+<span class="sourceLineNo">2416</span>      this.authManager.authorize(user != null ? user : null, c, getConf(), addr);<a name="line.2416"></a>
+<span class="sourceLineNo">2417</span>    }<a name="line.2417"></a>
+<span class="sourceLineNo">2418</span>  }<a name="line.2418"></a>
+<span class="sourceLineNo">2419</span><a name="line.2419"></a>
+<span class="sourceLineNo">2420</span>  /**<a name="line.2420"></a>
+<span class="sourceLineNo">2421</span>   * When the read or write buffer size is larger than this limit, i/o will be<a name="line.2421"></a>
+<span class="sourceLineNo">2422</span>   * done in chunks of this size. Most RPC requests and responses would be<a name="line.2422"></a>
+<span class="sourceLineNo">2423</span>   * be smaller.<a name="line.2423"></a>
+<span class="sourceLineNo">2424</span>   */<a name="line.2424"></a>
+<span class="sourceLineNo">2425</span>  private static int NIO_BUFFER_LIMIT = 64 * 1024; //should not be more than 64KB.<a name="line.2425"></a>
+<span class="sourceLineNo">2426</span><a name="line.2426"></a>
+<span class="sourceLineNo">2427</span>  /**<a name="line.2427"></a>
+<span class="sourceLineNo">2428</span>   * This is a wrapper around {@link java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)}.<a name="line

<TRUNCATED>

[30/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
Published site at 28cd48b673ca743d193874b2951bc995699e8e89.


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

Branch: refs/heads/asf-site
Commit: 89b638a4306ea07a8e76f8500d50086bf42e08d7
Parents: d02dd5d
Author: jenkins <bu...@apache.org>
Authored: Wed Feb 24 15:24:17 2016 +0000
Committer: Misty Stanley-Jones <ms...@cloudera.com>
Committed: Wed Feb 24 09:43:51 2016 -0800

----------------------------------------------------------------------
 acid-semantics.html                             |    4 +-
 apache_hbase_reference_guide.pdf                |    4 +-
 apache_hbase_reference_guide.pdfmarks           |    4 +-
 book.html                                       |    2 +-
 bulk-loads.html                                 |    4 +-
 checkstyle-aggregate.html                       |   54 +-
 coc.html                                        |    4 +-
 cygwin.html                                     |    4 +-
 dependencies.html                               |    4 +-
 dependency-convergence.html                     |    4 +-
 dependency-info.html                            |    4 +-
 dependency-management.html                      |    4 +-
 devapidocs/constant-values.html                 |   19 +
 devapidocs/index-all.html                       |   12 +
 .../hbase/classification/package-tree.html      |    4 +-
 .../hadoop/hbase/client/package-tree.html       |    6 +-
 .../hbase/conf/ConfigurationObserver.html       |    2 +-
 .../conf/class-use/ConfigurationObserver.html   |    7 +
 .../hadoop/hbase/filter/package-tree.html       |    8 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    6 +-
 .../hbase/ipc/BalancedQueueRpcExecutor.html     |   15 +-
 .../hadoop/hbase/ipc/RWQueueRpcExecutor.html    |   25 +-
 .../hbase/ipc/RpcExecutor.QueueBalancer.html    |    6 +-
 .../ipc/RpcExecutor.RandomQueueBalancer.html    |    8 +-
 .../apache/hadoop/hbase/ipc/RpcExecutor.html    |   94 +-
 .../org/apache/hadoop/hbase/ipc/RpcServer.html  |   76 +-
 ...mpleRpcScheduler.CallPriorityComparator.html |   12 +-
 .../hadoop/hbase/ipc/SimpleRpcScheduler.html    |   81 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |    2 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |    4 +-
 .../hbase/master/balancer/package-tree.html     |    2 +-
 .../hadoop/hbase/master/package-tree.html       |    4 +-
 .../org/apache/hadoop/hbase/package-tree.html   |   10 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    2 +-
 .../hadoop/hbase/quotas/package-tree.html       |    2 +-
 .../hadoop/hbase/regionserver/package-tree.html |   24 +-
 .../hbase/security/access/package-tree.html     |    2 +-
 .../hadoop/hbase/security/package-tree.html     |    4 +-
 .../tmpl/master/MasterStatusTmpl.ImplData.html  |  270 ++---
 .../hbase/tmpl/master/MasterStatusTmpl.html     |  108 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |   54 +-
 .../regionserver/RSStatusTmpl.ImplData.html     |  120 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |   48 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |   24 +-
 .../apache/hadoop/hbase/util/package-tree.html  |    4 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |    2 +-
 devapidocs/overview-tree.html                   |    2 +-
 .../hbase/ipc/BalancedQueueRpcExecutor.html     |   51 +-
 .../hadoop/hbase/ipc/RWQueueRpcExecutor.html    |  211 ++--
 .../hbase/ipc/RpcExecutor.QueueBalancer.html    |  341 +++---
 .../ipc/RpcExecutor.RandomQueueBalancer.html    |  341 +++---
 .../apache/hadoop/hbase/ipc/RpcExecutor.html    |  341 +++---
 .../RpcServer.BlockingServiceAndInterface.html  | 1099 +++++++++---------
 .../apache/hadoop/hbase/ipc/RpcServer.Call.html | 1099 +++++++++---------
 .../hadoop/hbase/ipc/RpcServer.Connection.html  | 1099 +++++++++---------
 .../hbase/ipc/RpcServer.Listener.Reader.html    | 1099 +++++++++---------
 .../hadoop/hbase/ipc/RpcServer.Listener.html    | 1099 +++++++++---------
 .../hadoop/hbase/ipc/RpcServer.Responder.html   | 1099 +++++++++---------
 .../org/apache/hadoop/hbase/ipc/RpcServer.html  | 1099 +++++++++---------
 ...mpleRpcScheduler.CallPriorityComparator.html |  404 +++----
 .../hadoop/hbase/ipc/SimpleRpcScheduler.html    |  404 +++----
 .../hadoop/hbase/master/TableStateManager.html  |    2 +-
 .../tmpl/master/MasterStatusTmpl.ImplData.html  |  270 ++---
 .../tmpl/master/MasterStatusTmpl.Intf.html      |  270 ++---
 .../hbase/tmpl/master/MasterStatusTmpl.html     |  270 ++---
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |   72 +-
 .../regionserver/RSStatusTmpl.ImplData.html     |  120 +-
 .../tmpl/regionserver/RSStatusTmpl.Intf.html    |  120 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |  120 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |   32 +-
 distribution-management.html                    |    4 +-
 export_control.html                             |    4 +-
 hbase-annotations/checkstyle.html               |    6 +-
 hbase-annotations/dependencies.html             |    6 +-
 hbase-annotations/dependency-convergence.html   |    6 +-
 hbase-annotations/dependency-info.html          |    6 +-
 hbase-annotations/dependency-management.html    |    6 +-
 hbase-annotations/distribution-management.html  |    6 +-
 hbase-annotations/index.html                    |    6 +-
 hbase-annotations/integration.html              |    6 +-
 hbase-annotations/issue-tracking.html           |    6 +-
 hbase-annotations/license.html                  |    6 +-
 hbase-annotations/mail-lists.html               |    6 +-
 hbase-annotations/plugin-management.html        |    6 +-
 hbase-annotations/plugins.html                  |    6 +-
 hbase-annotations/project-info.html             |    6 +-
 hbase-annotations/project-reports.html          |    6 +-
 hbase-annotations/project-summary.html          |    6 +-
 hbase-annotations/source-repository.html        |    6 +-
 hbase-annotations/team-list.html                |    6 +-
 hbase-archetypes/dependencies.html              |    6 +-
 hbase-archetypes/dependency-convergence.html    |    6 +-
 hbase-archetypes/dependency-info.html           |    6 +-
 hbase-archetypes/dependency-management.html     |    6 +-
 hbase-archetypes/distribution-management.html   |    6 +-
 .../hbase-archetype-builder/dependencies.html   |    6 +-
 .../dependency-convergence.html                 |    6 +-
 .../dependency-info.html                        |    6 +-
 .../dependency-management.html                  |    6 +-
 .../distribution-management.html                |    6 +-
 .../hbase-archetype-builder/index.html          |    6 +-
 .../hbase-archetype-builder/integration.html    |    6 +-
 .../hbase-archetype-builder/issue-tracking.html |    6 +-
 .../hbase-archetype-builder/license.html        |    6 +-
 .../hbase-archetype-builder/mail-lists.html     |    6 +-
 .../plugin-management.html                      |    6 +-
 .../hbase-archetype-builder/plugins.html        |    6 +-
 .../hbase-archetype-builder/project-info.html   |    6 +-
 .../project-summary.html                        |    6 +-
 .../source-repository.html                      |    6 +-
 .../hbase-archetype-builder/team-list.html      |    6 +-
 .../hbase-client-project/checkstyle.html        |    6 +-
 .../hbase-client-project/dependencies.html      |    6 +-
 .../dependency-convergence.html                 |    6 +-
 .../hbase-client-project/dependency-info.html   |    6 +-
 .../dependency-management.html                  |    6 +-
 .../distribution-management.html                |    6 +-
 .../hbase-client-project/index.html             |    6 +-
 .../hbase-client-project/integration.html       |    6 +-
 .../hbase-client-project/issue-tracking.html    |    6 +-
 .../hbase-client-project/license.html           |    6 +-
 .../hbase-client-project/mail-lists.html        |    6 +-
 .../hbase-client-project/plugin-management.html |    6 +-
 .../hbase-client-project/plugins.html           |    6 +-
 .../hbase-client-project/project-info.html      |    6 +-
 .../hbase-client-project/project-reports.html   |    6 +-
 .../hbase-client-project/project-summary.html   |    6 +-
 .../hbase-client-project/source-repository.html |    6 +-
 .../hbase-client-project/team-list.html         |    6 +-
 hbase-archetypes/index.html                     |    6 +-
 hbase-archetypes/integration.html               |    6 +-
 hbase-archetypes/issue-tracking.html            |    6 +-
 hbase-archetypes/license.html                   |    6 +-
 hbase-archetypes/mail-lists.html                |    6 +-
 hbase-archetypes/modules.html                   |    6 +-
 hbase-archetypes/plugin-management.html         |    6 +-
 hbase-archetypes/plugins.html                   |    6 +-
 hbase-archetypes/project-info.html              |    6 +-
 hbase-archetypes/project-summary.html           |    6 +-
 hbase-archetypes/source-repository.html         |    6 +-
 hbase-archetypes/team-list.html                 |    6 +-
 hbase-spark/checkstyle.html                     |    6 +-
 hbase-spark/dependencies.html                   |    6 +-
 hbase-spark/dependency-convergence.html         |    6 +-
 hbase-spark/dependency-info.html                |    6 +-
 hbase-spark/dependency-management.html          |    6 +-
 hbase-spark/distribution-management.html        |    6 +-
 hbase-spark/index.html                          |    6 +-
 hbase-spark/integration.html                    |    6 +-
 hbase-spark/issue-tracking.html                 |    6 +-
 hbase-spark/license.html                        |    6 +-
 hbase-spark/mail-lists.html                     |    6 +-
 hbase-spark/plugin-management.html              |    6 +-
 hbase-spark/plugins.html                        |    6 +-
 hbase-spark/project-info.html                   |    6 +-
 hbase-spark/project-reports.html                |    6 +-
 hbase-spark/project-summary.html                |    6 +-
 hbase-spark/source-repository.html              |    6 +-
 hbase-spark/team-list.html                      |    6 +-
 index.html                                      |    4 +-
 integration.html                                |    4 +-
 issue-tracking.html                             |    4 +-
 license.html                                    |    4 +-
 mail-lists.html                                 |    4 +-
 metrics.html                                    |    4 +-
 modules.html                                    |    4 +-
 old_news.html                                   |    4 +-
 plugin-management.html                          |    4 +-
 plugins.html                                    |    4 +-
 poweredbyhbase.html                             |    4 +-
 project-info.html                               |    4 +-
 project-reports.html                            |    4 +-
 project-summary.html                            |    4 +-
 pseudo-distributed.html                         |    4 +-
 replication.html                                |    4 +-
 resources.html                                  |    4 +-
 source-repository.html                          |    4 +-
 sponsors.html                                   |    4 +-
 supportingprojects.html                         |    4 +-
 team-list.html                                  |    4 +-
 testdevapidocs/index-all.html                   |    4 +
 .../hbase/ipc/TestSimpleRpcScheduler.html       |   46 +-
 .../org/apache/hadoop/hbase/package-tree.html   |   10 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    2 +-
 ...egionMergeTransactionOnCluster.MyMaster.html |    6 +-
 ...ransactionOnCluster.MyMasterRpcServices.html |   10 +-
 .../TestRegionMergeTransactionOnCluster.html    |   87 +-
 .../hadoop/hbase/regionserver/package-tree.html |    4 +-
 .../apache/hadoop/hbase/test/package-tree.html  |    4 +-
 .../hbase/ipc/TestSimpleRpcScheduler.html       |  563 ++++-----
 ...egionMergeTransactionOnCluster.MyMaster.html |  941 +++++++--------
 ...ransactionOnCluster.MyMasterRpcServices.html |  941 +++++++--------
 .../TestRegionMergeTransactionOnCluster.html    |  941 +++++++--------
 .../hbase/ipc/TestSimpleRpcScheduler.html       |  563 ++++-----
 .../TestRegionMergeTransactionOnCluster.html    |  941 +++++++--------
 .../hbase/ipc/BalancedQueueRpcExecutor.html     |   51 +-
 .../hadoop/hbase/ipc/RWQueueRpcExecutor.html    |  211 ++--
 .../apache/hadoop/hbase/ipc/RpcExecutor.html    |  341 +++---
 xref/org/apache/hadoop/hbase/ipc/RpcServer.html | 1099 +++++++++---------
 .../hadoop/hbase/ipc/SimpleRpcScheduler.html    |  404 +++----
 .../hadoop/hbase/master/TableStateManager.html  |    2 +-
 .../hbase/tmpl/common/TaskMonitorTmpl.html      |   60 +-
 .../hbase/tmpl/common/TaskMonitorTmplImpl.html  |   16 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |  270 ++---
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |   72 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |  120 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |   32 +-
 207 files changed, 10499 insertions(+), 10083 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 210f743..8b6038b 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -600,7 +600,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 03b536a..a2cadbc 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.6, based on Prawn 1.2.1)
 /Producer (Apache HBase Team)
-/CreationDate (D:20160223152349+00'00')
-/ModDate (D:20160223152349+00'00')
+/CreationDate (D:20160224151227+00'00')
+/ModDate (D:20160224151227+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/apache_hbase_reference_guide.pdfmarks
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdfmarks b/apache_hbase_reference_guide.pdfmarks
index bdbcd2f..63dd81f 100644
--- a/apache_hbase_reference_guide.pdfmarks
+++ b/apache_hbase_reference_guide.pdfmarks
@@ -2,8 +2,8 @@
   /Author (Apache HBase Team)
   /Subject ()
   /Keywords ()
-  /ModDate (D:20160223152541)
-  /CreationDate (D:20160223152541)
+  /ModDate (D:20160224151429)
+  /CreationDate (D:20160224151429)
   /Creator (Asciidoctor PDF 1.5.0.alpha.6, based on Prawn 1.2.1)
   /Producer ()
   /DOCINFO pdfmark

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index e612b86..a30b213 100644
--- a/book.html
+++ b/book.html
@@ -33189,7 +33189,7 @@ The server will return cellblocks compressed using this same compressor as long
 <div id="footer">
 <div id="footer-text">
 Version 2.0.0-SNAPSHOT<br>
-Last updated 2016-02-23 14:53:43 UTC
+Last updated 2016-02-24 14:43:43 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 04b9614..ee71aa8 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -305,7 +305,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 507659b..7fcf382 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <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" />
@@ -6129,12 +6129,12 @@
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#JavadocTagContinuationIndentation">JavadocTagContinuationIndentation</a>
 <ul>
 <li>offset: <tt>&quot;2&quot;</tt></li></ul></td>
-<td>766</td>
+<td>767</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>3400</td>
+<td>3399</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td>misc</td>
@@ -14558,7 +14558,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 64 has parse error. Missed HTML close tag 'code'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/HBaseAdmin.html#L1767">1767</a></td></tr>
 <tr class="b">
@@ -33142,79 +33142,79 @@
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2132">2132</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2135">2135</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2136">2136</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2139">2139</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 46 should have line break after.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2157">2157</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2160">2160</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2167">2167</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2170">2170</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2189">2189</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2192">2192</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2190">2190</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2193">2193</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2263">2263</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2266">2266</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2268">2268</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2271">2271</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2269">2269</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2272">2272</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2362">2362</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2365">2365</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2425">2425</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2428">2428</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2441">2441</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2444">2444</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2446">2446</a></td></tr></table></div>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/RpcServer.html#L2449">2449</a></td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ipc.RpcServerInterface.java">org/apache/hadoop/hbase/ipc/RpcServerInterface.java</h3>
 <table border="0" class="table table-striped">
@@ -33271,55 +33271,55 @@
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L100">100</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L116">116</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L104">104</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L120">120</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def' child have incorrect indentation level 3, expected level should be 4.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L157">157</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L173">173</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def' child have incorrect indentation level 5, expected level should be 6.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L158">158</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L174">174</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>FileTabCharacter</td>
 <td>File contains tab characters (this is the first instance).</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L163">163</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L179">179</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L181">181</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L197">197</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L182">182</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L198">198</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L188">188</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L204">204</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L189">189</a></td></tr></table></div>
+<td><a href="./xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#L205">205</a></td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ipc.TimeLimitedRpcController.java">org/apache/hadoop/hbase/ipc/TimeLimitedRpcController.java</h3>
 <table border="0" class="table table-striped">
@@ -92942,7 +92942,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 1f405a6..8fc0d5d 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -331,7 +331,7 @@ For flagrant violations requiring a firm response the PMC may opt to skip early
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 1b3ffde..02a7b4a 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <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" />
@@ -518,7 +518,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 46c3d43..2682a97 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <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" />
@@ -1631,7 +1631,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 6f911e2..2b570dd 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <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" />
@@ -312,7 +312,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index e4f8253..fd4ab90 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <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" />
@@ -786,7 +786,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index b9fa6c8..9a6c46e 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -8231,6 +8231,25 @@
 </li>
 <li class="blockList">
 <table border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/RpcExecutor.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor</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.ipc.RpcExecutor.DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT">
+<!--   -->
+</a><code>protected&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/ipc/RpcExecutor.html#DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT">DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT</a></code></td>
+<td class="colLast"><code>250</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
 <caption><span>org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/RpcServer.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index bcd8941..0dfdd5b 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -15920,6 +15920,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html#currentQueue">currentQueue</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="./org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler.FairQueue</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/ipc/RpcExecutor.html#currentQueueLimit">currentQueueLimit</a></span> - Variable in class org.apache.hadoop.hbase.ipc.<a href="./org/apache/hadoop/hbase/ipc/RpcExecutor.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/ipc/RpcServer.Listener.html#currentReader">currentReader</a></span> - Variable in class org.apache.hadoop.hbase.ipc.<a href="./org/apache/hadoop/hbase/ipc/RpcServer.Listener.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.Listener</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/ClientScanner.html#currentRegion">currentRegion</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/ClientScanner.html" title="class in org.apache.hadoop.hbase.client">ClientScanner</a></dt>
@@ -16831,6 +16833,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#DEFAULT_CACHE_WAIT_TIME">DEFAULT_CACHE_WAIT_TIME</a></span> - Static variable in class org.apache.hadoop.hbase.io.hfile.bucket.<a href="./org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/ipc/RpcExecutor.html#DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT">DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT</a></span> - Static variable in class org.apache.hadoop.hbase.ipc.<a href="./org/apache/hadoop/hbase/ipc/RpcExecutor.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/mapreduce/ImportTsv.TsvParser.html#DEFAULT_CELL_TTL_COLUMN_INDEX">DEFAULT_CELL_TTL_COLUMN_INDEX</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="./org/apache/hadoop/hbase/mapreduce/ImportTsv.TsvParser.html" title="class in org.apache.hadoop.hbase.mapreduce">ImportTsv.TsvParser</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/mapreduce/ImportTsv.TsvParser.html#DEFAULT_CELL_VISIBILITY_COLUMN_INDEX">DEFAULT_CELL_VISIBILITY_COLUMN_INDEX</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="./org/apache/hadoop/hbase/mapreduce/ImportTsv.TsvParser.html" title="class in org.apache.hadoop.hbase.mapreduce">ImportTsv.TsvParser</a></dt>
@@ -59103,6 +59107,10 @@
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/ipc/RpcServer.html#onConfigurationChange(org.apache.hadoop.conf.Configuration)">onConfigurationChange(Configuration)</a></span> - Method in class org.apache.hadoop.hbase.ipc.<a href="./org/apache/hadoop/hbase/ipc/RpcServer.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#onConfigurationChange(org.apache.hadoop.conf.Configuration)">onConfigurationChange(Configuration)</a></span> - Method in class org.apache.hadoop.hbase.ipc.<a href="./org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">SimpleRpcScheduler</a></dt>
+<dd>
+<div class="block">Resize call queues;</div>
+</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.html#onConfigurationChange(org.apache.hadoop.conf.Configuration)">onConfigurationChange(Configuration)</a></span> - Method in class org.apache.hadoop.hbase.master.balancer.<a href="./org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">BaseLoadBalancer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#onConfigurationChange(org.apache.hadoop.conf.Configuration)">onConfigurationChange(Configuration)</a></span> - Method in class org.apache.hadoop.hbase.master.balancer.<a href="./org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">StochasticLoadBalancer</a></dt>
@@ -71972,6 +71980,10 @@ service.</div>
 <dd>
 <div class="block">BlockCache which is resizable.</div>
 </dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/ipc/RpcExecutor.html#resizeQueues(org.apache.hadoop.conf.Configuration)">resizeQueues(Configuration)</a></span> - Method in class org.apache.hadoop.hbase.ipc.<a href="./org/apache/hadoop/hbase/ipc/RpcExecutor.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor</a></dt>
+<dd>
+<div class="block">Update current soft limit for executor's call queues</div>
+</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/HMobStore.html#resolve(org.apache.hadoop.hbase.Cell,%20boolean)">resolve(Cell, boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/HMobStore.html" title="class in org.apache.hadoop.hbase.regionserver">HMobStore</a></dt>
 <dd>
 <div class="block">Reads the cell from the mob file, and the read point does not count.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html b/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
index dc01766..ef366f9 100644
--- a/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
@@ -80,11 +80,11 @@
 </ul>
 <h2 title="Annotation Type Hierarchy">Annotation Type Hierarchy</h2>
 <ul>
+<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceAudience.Private</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.LimitedPrivate.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceAudience.LimitedPrivate</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Evolving.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceStability.Evolving</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Public.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceAudience.Public</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Evolving.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceStability.Evolving</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Stable.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceStability.Stable</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceAudience.Private</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Unstable.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceStability.Unstable</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/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 c83b245..a87aa3d 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -389,12 +389,12 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/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/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">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="strong">TableState.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcess.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">AsyncProcess.Retry</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="strong">IsolationLevel</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="strong">Consistency</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Admin.CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">Admin.CompactType</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="strong">Durability</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">TableState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Admin.CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">Admin.CompactType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/conf/ConfigurationObserver.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/conf/ConfigurationObserver.html b/devapidocs/org/apache/hadoop/hbase/conf/ConfigurationObserver.html
index 6adbb00..c21c6a5 100644
--- a/devapidocs/org/apache/hadoop/hbase/conf/ConfigurationObserver.html
+++ b/devapidocs/org/apache/hadoop/hbase/conf/ConfigurationObserver.html
@@ -91,7 +91,7 @@
 </dl>
 <dl>
 <dt>All Known Implementing Classes:</dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">BaseLoadBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactSplitThread.html" title="class in org.apache.hadoop.hbase.regionserver">CompactSplitThread</a>, <a href="../../../../../org/apache/hadoop/hbase/master/balancer/FavoredNodeLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">FavoredNodeLoadBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html" title="class in org.apache.hadoop.hbase.master">HMasterCommandLine.LocalHMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HMobStore.html" title="class in org.apache.hadoop.hbase.regionserver">HMobStore</a>, <a href="../../../../../org/a
 pache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.html" title="class in org.apache.hadoop.hbase.master">MasterRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/RSRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">RSRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/master/balancer/SimpleLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">SimpleLoadBa
 lancer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">StochasticLoadBalancer</a></dd>
+<dd><a href="../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">BaseLoadBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactSplitThread.html" title="class in org.apache.hadoop.hbase.regionserver">CompactSplitThread</a>, <a href="../../../../../org/apache/hadoop/hbase/master/balancer/FavoredNodeLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">FavoredNodeLoadBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html" title="class in org.apache.hadoop.hbase.master">HMasterCommandLine.LocalHMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HMobStore.html" title="class in org.apache.hadoop.hbase.regionserver">HMobStore</a>, <a href="../../../../../org/a
 pache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.html" title="class in org.apache.hadoop.hbase.master">MasterRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/RSRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">RSRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/master/balancer/SimpleLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">SimpleLoadBa
 lancer</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">SimpleRpcScheduler</a>, <a href="../../../../../org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">StochasticLoadBalancer</a></dd>
 </dl>
 <hr>
 <br>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/conf/class-use/ConfigurationObserver.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/conf/class-use/ConfigurationObserver.html b/devapidocs/org/apache/hadoop/hbase/conf/class-use/ConfigurationObserver.html
index d2f9960..c156d3f 100644
--- a/devapidocs/org/apache/hadoop/hbase/conf/class-use/ConfigurationObserver.html
+++ b/devapidocs/org/apache/hadoop/hbase/conf/class-use/ConfigurationObserver.html
@@ -173,6 +173,13 @@
 <div class="block">An RPC server that hosts protobuf described Services.</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">SimpleRpcScheduler</a></strong></code>
+<div class="block">A scheduler that maintains isolated handler pools for general,
+ high-priority, and replication requests.</div>
+</td>
+</tr>
 </tbody>
 </table>
 </li>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/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 c60324d..f9256f7 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -270,12 +270,12 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">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="strong">BlockType.BlockCategory</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="strong">Cacheable.MemoryType</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="strong">CacheConfig.ExternalBlockCaches</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="strong">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="strong">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="strong">BlockType.BlockCategory</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">BlockPriority</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="strong">Cacheable.MemoryType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html b/devapidocs/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html
index b36eabc..b020e40 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html
@@ -148,6 +148,13 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" ti
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html#queues">queues</a></strong></code>&nbsp;</td>
 </tr>
 </table>
+<ul class="blockList">
+<li class="blockList"><a name="fields_inherited_from_class_org.apache.hadoop.hbase.ipc.RpcExecutor">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#currentQueueLimit">currentQueueLimit</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT">DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT</a></code></li>
+</ul>
 </li>
 </ul>
 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
@@ -236,7 +243,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" ti
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#consumerLoop(java.util.concurrent.BlockingQueue)">consumerLoop</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#getActiveHandlerCount()">getActiveHandlerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#getBalancer(int)">getBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#start(int)">start</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#startHandlers(int)">startHandlers</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#startHandlers(java.lang.String,%20int,%20java.util.List,%20int,%20int,%20int)">startHandlers</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#stop()">stop</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#consumerLoop(java.util.concurrent.BlockingQueue)">consumerLoop</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#getActiveHandlerCount()">getActiveHandlerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#getBalancer(int)">getBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#resizeQueues(org.apache.hadoop.conf.Configuration)">resizeQueues</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#start(int)">start</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#startHandlers(int)">startHandlers</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#startHandlers(java.lang.String,%20int,%20java.util.List,%20int,%20int,%20int)">startHandlers</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#stop()">stop</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
@@ -364,7 +371,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>dispatch</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html#line.75">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/BalancedQueueRpcExecutor.html#line.79">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="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#dispatch(org.apache.hadoop.hbase.ipc.CallRunner)">RpcExecutor</a></code></strong></div>
 <div class="block">Add the request to the executor queue</div>
@@ -381,7 +388,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getQueueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html#line.81">getQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html#line.90">getQueueLength</a>()</pre>
 <div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#getQueueLength()">RpcExecutor</a></code></strong></div>
 <div class="block">Returns the length of the pending queue</div>
 <dl>
@@ -396,7 +403,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" ti
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getQueues</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html#line.90">getQueues</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html#line.99">getQueues</a>()</pre>
 <div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#getQueues()">RpcExecutor</a></code></strong></div>
 <div class="block">Returns the list of request queues</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html b/devapidocs/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html
index a307ff9..8bd67e3 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html
@@ -185,6 +185,13 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" ti
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html#writeHandlersCount">writeHandlersCount</a></strong></code>&nbsp;</td>
 </tr>
 </table>
+<ul class="blockList">
+<li class="blockList"><a name="fields_inherited_from_class_org.apache.hadoop.hbase.ipc.RpcExecutor">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#currentQueueLimit">currentQueueLimit</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT">DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT</a></code></li>
+</ul>
 </li>
 </ul>
 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
@@ -334,7 +341,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" ti
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#consumerLoop(java.util.concurrent.BlockingQueue)">consumerLoop</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#getActiveHandlerCount()">getActiveHandlerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#getBalancer(int)">getBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#start(int)">start</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#startHandlers(java.lang.String,%20int,%20java.util.List,%20int,%20int,%20int)">startHandlers</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#stop()">stop</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#consumerLoop(java.util.concurrent.BlockingQueue)">consumerLoop</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#getActiveHandlerCount()">getActiveHandlerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#getBalancer(int)">getBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#resizeQueues(org.apache.hadoop.conf.Configuration)">resizeQueues</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#start(int)">start</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#startHandlers(java.lang.String,%20int,%20java.util.List,%20int,%20int,%20int)">startHandlers</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#stop()">stop</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
@@ -593,7 +600,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>startHandlers</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html#line.155">startHandlers</a>(int&nbsp;port)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html#line.165">startHandlers</a>(int&nbsp;port)</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#startHandlers(int)">startHandlers</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor</a></code></dd>
@@ -606,7 +613,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>dispatch</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html#line.163">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/RWQueueRpcExecutor.html#line.173">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="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#dispatch(org.apache.hadoop.hbase.ipc.CallRunner)">RpcExecutor</a></code></strong></div>
 <div class="block">Add the request to the executor queue</div>
@@ -623,7 +630,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>isWriteRequest</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html#line.176">isWriteRequest</a>(org.apache.hadoop.hbase.protobuf.generated.RPCProtos.RequestHeader&nbsp;header,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html#line.191">isWriteRequest</a>(org.apache.hadoop.hbase.protobuf.generated.RPCProtos.RequestHeader&nbsp;header,
                      com.google.protobuf.Message&nbsp;param)</pre>
 </li>
 </ul>
@@ -633,7 +640,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>isScanRequest</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html#line.209">isScanRequest</a>(org.apache.hadoop.hbase.protobuf.generated.RPCProtos.RequestHeader&nbsp;header,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html#line.224">isScanRequest</a>(org.apache.hadoop.hbase.protobuf.generated.RPCProtos.RequestHeader&nbsp;header,
                     com.google.protobuf.Message&nbsp;param)</pre>
 </li>
 </ul>
@@ -643,7 +650,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getQueueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html#line.219">getQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html#line.234">getQueueLength</a>()</pre>
 <div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#getQueueLength()">RpcExecutor</a></code></strong></div>
 <div class="block">Returns the length of the pending queue</div>
 <dl>
@@ -658,7 +665,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getQueues</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html#line.228">getQueues</a>()</pre>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html" title="class in org.apache.hadoop.hbase.ipc">CallRunner</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html#line.243">getQueues</a>()</pre>
 <div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html#getQueues()">RpcExecutor</a></code></strong></div>
 <div class="block">Returns the list of request queues</div>
 <dl>
@@ -673,7 +680,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>calcNumWriters</h4>
-<pre>private static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html#line.236">calcNumWriters</a>(int&nbsp;count,
+<pre>private static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html#line.251">calcNumWriters</a>(int&nbsp;count,
                  float&nbsp;readShare)</pre>
 </li>
 </ul>
@@ -683,7 +690,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" ti
 <ul class="blockListLast">
 <li class="blockList">
 <h4>calcNumReaders</h4>
-<pre>private static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html#line.244">calcNumReaders</a>(int&nbsp;count,
+<pre>private static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html#line.259">calcNumReaders</a>(int&nbsp;count,
                  float&nbsp;readShare)</pre>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html b/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html
index 95be727..c77b110 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre>public abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.172">RpcExecutor.QueueBalancer</a>
+<pre>public abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.175">RpcExecutor.QueueBalancer</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -172,7 +172,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RpcExecutor.QueueBalancer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html#line.172">RpcExecutor.QueueBalancer</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html#line.175">RpcExecutor.QueueBalancer</a>()</pre>
 </li>
 </ul>
 </li>
@@ -189,7 +189,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getNextQueue</h4>
-<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html#line.176">getNextQueue</a>()</pre>
+<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html#line.179">getNextQueue</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the index of the next queue to which a request should be inserted</dd></dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.RandomQueueBalancer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.RandomQueueBalancer.html b/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.RandomQueueBalancer.html
index 5c2c4fe..dbdfb35 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.RandomQueueBalancer.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/RpcExecutor.RandomQueueBalancer.html
@@ -104,7 +104,7 @@
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.202">RpcExecutor.RandomQueueBalancer</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html#line.205">RpcExecutor.RandomQueueBalancer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor.QueueBalancer</a></pre>
 <div class="block">Queue balancer that just randomly selects a queue in the range [0, num queues).</div>
 </li>
@@ -193,7 +193,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBal
 <ul class="blockListLast">
 <li class="blockList">
 <h4>queueSize</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.RandomQueueBalancer.html#line.203">queueSize</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.RandomQueueBalancer.html#line.206">queueSize</a></pre>
 </li>
 </ul>
 </li>
@@ -210,7 +210,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBal
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RpcExecutor.RandomQueueBalancer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.RandomQueueBalancer.html#line.205">RpcExecutor.RandomQueueBalancer</a>(int&nbsp;queueSize)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.RandomQueueBalancer.html#line.208">RpcExecutor.RandomQueueBalancer</a>(int&nbsp;queueSize)</pre>
 </li>
 </ul>
 </li>
@@ -227,7 +227,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBal
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getNextQueue</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.RandomQueueBalancer.html#line.209">getNextQueue</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.RandomQueueBalancer.html#line.212">getNextQueue</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html#getNextQueue()">getNextQueue</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.QueueBalancer.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor.QueueBalancer</a></code></dd>


[27/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
index 257a2c6..515914b 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
@@ -379,166 +379,166 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.110">m_master</a></pre>
 </li>
 </ul>
-<a name="m_frags">
+<a name="m_serverManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_frags</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.122">m_frags</a></pre>
+<h4>m_serverManager</h4>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.122">m_serverManager</a></pre>
 </li>
 </ul>
-<a name="m_frags__IsNotDefault">
+<a name="m_serverManager__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_frags__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.127">m_frags__IsNotDefault</a></pre>
+<h4>m_serverManager__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.127">m_serverManager__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_catalogJanitorEnabled">
+<a name="m_metaLocation">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_catalogJanitorEnabled</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.139">m_catalogJanitorEnabled</a></pre>
+<h4>m_metaLocation</h4>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.139">m_metaLocation</a></pre>
 </li>
 </ul>
-<a name="m_catalogJanitorEnabled__IsNotDefault">
+<a name="m_metaLocation__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_catalogJanitorEnabled__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.144">m_catalogJanitorEnabled__IsNotDefault</a></pre>
+<h4>m_metaLocation__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.144">m_metaLocation__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_filter">
+<a name="m_frags">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_filter</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.156">m_filter</a></pre>
+<h4>m_frags</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.156">m_frags</a></pre>
 </li>
 </ul>
-<a name="m_filter__IsNotDefault">
+<a name="m_frags__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_filter__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.161">m_filter__IsNotDefault</a></pre>
+<h4>m_frags__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.161">m_frags__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_deadServers">
+<a name="m_filter">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_deadServers</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.173">m_deadServers</a></pre>
+<h4>m_filter</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.173">m_filter</a></pre>
 </li>
 </ul>
-<a name="m_deadServers__IsNotDefault">
+<a name="m_filter__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_deadServers__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.178">m_deadServers__IsNotDefault</a></pre>
+<h4>m_filter__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.178">m_filter__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_format">
+<a name="m_deadServers">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_format</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.190">m_format</a></pre>
+<h4>m_deadServers</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.190">m_deadServers</a></pre>
 </li>
 </ul>
-<a name="m_format__IsNotDefault">
+<a name="m_deadServers__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_format__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.195">m_format__IsNotDefault</a></pre>
+<h4>m_deadServers__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.195">m_deadServers__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_servers">
+<a name="m_format">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_servers</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.207">m_servers</a></pre>
+<h4>m_format</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.207">m_format</a></pre>
 </li>
 </ul>
-<a name="m_servers__IsNotDefault">
+<a name="m_format__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_servers__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.212">m_servers__IsNotDefault</a></pre>
+<h4>m_format__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.212">m_format__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_metaLocation">
+<a name="m_assignmentManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_metaLocation</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.224">m_metaLocation</a></pre>
+<h4>m_assignmentManager</h4>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.224">m_assignmentManager</a></pre>
 </li>
 </ul>
-<a name="m_metaLocation__IsNotDefault">
+<a name="m_assignmentManager__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_metaLocation__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.229">m_metaLocation__IsNotDefault</a></pre>
+<h4>m_assignmentManager__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.229">m_assignmentManager__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_assignmentManager">
+<a name="m_servers">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_assignmentManager</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.241">m_assignmentManager</a></pre>
+<h4>m_servers</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.241">m_servers</a></pre>
 </li>
 </ul>
-<a name="m_assignmentManager__IsNotDefault">
+<a name="m_servers__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_assignmentManager__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.246">m_assignmentManager__IsNotDefault</a></pre>
+<h4>m_servers__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.246">m_servers__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_serverManager">
+<a name="m_catalogJanitorEnabled">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_serverManager</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.258">m_serverManager</a></pre>
+<h4>m_catalogJanitorEnabled</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.258">m_catalogJanitorEnabled</a></pre>
 </li>
 </ul>
-<a name="m_serverManager__IsNotDefault">
+<a name="m_catalogJanitorEnabled__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>m_serverManager__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.263">m_serverManager__IsNotDefault</a></pre>
+<h4>m_catalogJanitorEnabled__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.263">m_catalogJanitorEnabled__IsNotDefault</a></pre>
 </li>
 </ul>
 </li>
@@ -584,247 +584,247 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.106">getMaster</a>()</pre>
 </li>
 </ul>
-<a name="setFrags(java.util.Map)">
+<a name="setServerManager(org.apache.hadoop.hbase.master.ServerManager)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFrags</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.112">setFrags</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;frags)</pre>
+<h4>setServerManager</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.112">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;serverManager)</pre>
 </li>
 </ul>
-<a name="getFrags()">
+<a name="getServerManager()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFrags</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.118">getFrags</a>()</pre>
+<h4>getServerManager</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.118">getServerManager</a>()</pre>
 </li>
 </ul>
-<a name="getFrags__IsNotDefault()">
+<a name="getServerManager__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFrags__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.123">getFrags__IsNotDefault</a>()</pre>
+<h4>getServerManager__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.123">getServerManager__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setCatalogJanitorEnabled(boolean)">
+<a name="setMetaLocation(org.apache.hadoop.hbase.ServerName)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setCatalogJanitorEnabled</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.129">setCatalogJanitorEnabled</a>(boolean&nbsp;catalogJanitorEnabled)</pre>
+<h4>setMetaLocation</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.129">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;metaLocation)</pre>
 </li>
 </ul>
-<a name="getCatalogJanitorEnabled()">
+<a name="getMetaLocation()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getCatalogJanitorEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.135">getCatalogJanitorEnabled</a>()</pre>
+<h4>getMetaLocation</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/tmpl/master/MasterStatusTmpl.ImplData.html#line.135">getMetaLocation</a>()</pre>
 </li>
 </ul>
-<a name="getCatalogJanitorEnabled__IsNotDefault()">
+<a name="getMetaLocation__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getCatalogJanitorEnabled__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.140">getCatalogJanitorEnabled__IsNotDefault</a>()</pre>
+<h4>getMetaLocation__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.140">getMetaLocation__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setFilter(java.lang.String)">
+<a name="setFrags(java.util.Map)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.146">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
+<h4>setFrags</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.146">setFrags</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;frags)</pre>
 </li>
 </ul>
-<a name="getFilter()">
+<a name="getFrags()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFilter</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/master/MasterStatusTmpl.ImplData.html#line.152">getFilter</a>()</pre>
+<h4>getFrags</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.152">getFrags</a>()</pre>
 </li>
 </ul>
-<a name="getFilter__IsNotDefault()">
+<a name="getFrags__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFilter__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.157">getFilter__IsNotDefault</a>()</pre>
+<h4>getFrags__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.157">getFrags__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setDeadServers(java.util.Set)">
+<a name="setFilter(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setDeadServers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.163">setDeadServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;deadServers)</pre>
+<h4>setFilter</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.163">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
 </li>
 </ul>
-<a name="getDeadServers()">
+<a name="getFilter()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getDeadServers</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.169">getDeadServers</a>()</pre>
+<h4>getFilter</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/master/MasterStatusTmpl.ImplData.html#line.169">getFilter</a>()</pre>
 </li>
 </ul>
-<a name="getDeadServers__IsNotDefault()">
+<a name="getFilter__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getDeadServers__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.174">getDeadServers__IsNotDefault</a>()</pre>
+<h4>getFilter__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.174">getFilter__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setFormat(java.lang.String)">
+<a name="setDeadServers(java.util.Set)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFormat</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.180">setFormat</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;format)</pre>
+<h4>setDeadServers</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.180">setDeadServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;deadServers)</pre>
 </li>
 </ul>
-<a name="getFormat()">
+<a name="getDeadServers()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFormat</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/master/MasterStatusTmpl.ImplData.html#line.186">getFormat</a>()</pre>
+<h4>getDeadServers</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.186">getDeadServers</a>()</pre>
 </li>
 </ul>
-<a name="getFormat__IsNotDefault()">
+<a name="getDeadServers__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFormat__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.191">getFormat__IsNotDefault</a>()</pre>
+<h4>getDeadServers__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.191">getDeadServers__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setServers(java.util.List)">
+<a name="setFormat(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setServers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.197">setServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</pre>
+<h4>setFormat</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.197">setFormat</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;format)</pre>
 </li>
 </ul>
-<a name="getServers()">
+<a name="getFormat()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getServers</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.203">getServers</a>()</pre>
+<h4>getFormat</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/master/MasterStatusTmpl.ImplData.html#line.203">getFormat</a>()</pre>
 </li>
 </ul>
-<a name="getServers__IsNotDefault()">
+<a name="getFormat__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getServers__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.208">getServers__IsNotDefault</a>()</pre>
+<h4>getFormat__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.208">getFormat__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setMetaLocation(org.apache.hadoop.hbase.ServerName)">
+<a name="setAssignmentManager(org.apache.hadoop.hbase.master.AssignmentManager)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setMetaLocation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.214">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;metaLocation)</pre>
+<h4>setAssignmentManager</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.214">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a>&nbsp;assignmentManager)</pre>
 </li>
 </ul>
-<a name="getMetaLocation()">
+<a name="getAssignmentManager()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getMetaLocation</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/tmpl/master/MasterStatusTmpl.ImplData.html#line.220">getMetaLocation</a>()</pre>
+<h4>getAssignmentManager</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.220">getAssignmentManager</a>()</pre>
 </li>
 </ul>
-<a name="getMetaLocation__IsNotDefault()">
+<a name="getAssignmentManager__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getMetaLocation__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.225">getMetaLocation__IsNotDefault</a>()</pre>
+<h4>getAssignmentManager__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.225">getAssignmentManager__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setAssignmentManager(org.apache.hadoop.hbase.master.AssignmentManager)">
+<a name="setServers(java.util.List)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setAssignmentManager</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.231">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a>&nbsp;assignmentManager)</pre>
+<h4>setServers</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.231">setServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</pre>
 </li>
 </ul>
-<a name="getAssignmentManager()">
+<a name="getServers()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getAssignmentManager</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.237">getAssignmentManager</a>()</pre>
+<h4>getServers</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.237">getServers</a>()</pre>
 </li>
 </ul>
-<a name="getAssignmentManager__IsNotDefault()">
+<a name="getServers__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getAssignmentManager__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.242">getAssignmentManager__IsNotDefault</a>()</pre>
+<h4>getServers__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.242">getServers__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setServerManager(org.apache.hadoop.hbase.master.ServerManager)">
+<a name="setCatalogJanitorEnabled(boolean)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setServerManager</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.248">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;serverManager)</pre>
+<h4>setCatalogJanitorEnabled</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.248">setCatalogJanitorEnabled</a>(boolean&nbsp;catalogJanitorEnabled)</pre>
 </li>
 </ul>
-<a name="getServerManager()">
+<a name="getCatalogJanitorEnabled()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getServerManager</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.254">getServerManager</a>()</pre>
+<h4>getCatalogJanitorEnabled</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.254">getCatalogJanitorEnabled</a>()</pre>
 </li>
 </ul>
-<a name="getServerManager__IsNotDefault()">
+<a name="getCatalogJanitorEnabled__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>getServerManager__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.259">getServerManager__IsNotDefault</a>()</pre>
+<h4>getCatalogJanitorEnabled__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.259">getCatalogJanitorEnabled__IsNotDefault</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
index 1f1378e..78d40a2 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
@@ -323,85 +323,85 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <!--   -->
 </a>
 <h3>Field Detail</h3>
-<a name="frags">
+<a name="serverManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>frags</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.275">frags</a></pre>
+<h4>serverManager</h4>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.275">serverManager</a></pre>
 </li>
 </ul>
-<a name="catalogJanitorEnabled">
+<a name="metaLocation">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>catalogJanitorEnabled</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.282">catalogJanitorEnabled</a></pre>
+<h4>metaLocation</h4>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.282">metaLocation</a></pre>
 </li>
 </ul>
-<a name="filter">
+<a name="frags">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>filter</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.289">filter</a></pre>
+<h4>frags</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.289">frags</a></pre>
 </li>
 </ul>
-<a name="deadServers">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>deadServers</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.296">deadServers</a></pre>
+<h4>filter</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.296">filter</a></pre>
 </li>
 </ul>
-<a name="format">
+<a name="deadServers">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>format</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.303">format</a></pre>
+<h4>deadServers</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.303">deadServers</a></pre>
 </li>
 </ul>
-<a name="servers">
+<a name="format">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>servers</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.310">servers</a></pre>
+<h4>format</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.310">format</a></pre>
 </li>
 </ul>
-<a name="metaLocation">
+<a name="assignmentManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>metaLocation</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.317">metaLocation</a></pre>
+<h4>assignmentManager</h4>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.317">assignmentManager</a></pre>
 </li>
 </ul>
-<a name="assignmentManager">
+<a name="servers">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>assignmentManager</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.324">assignmentManager</a></pre>
+<h4>servers</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.324">servers</a></pre>
 </li>
 </ul>
-<a name="serverManager">
+<a name="catalogJanitorEnabled">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>serverManager</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.331">serverManager</a></pre>
+<h4>catalogJanitorEnabled</h4>
+<pre>protected&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.331">catalogJanitorEnabled</a></pre>
 </li>
 </ul>
 </li>
@@ -473,85 +473,85 @@ extends org.jamon.AbstractTemplateProxy</pre>
 </dl>
 </li>
 </ul>
-<a name="setFrags(java.util.Map)">
+<a name="setServerManager(org.apache.hadoop.hbase.master.ServerManager)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFrags</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.276">setFrags</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;p_frags)</pre>
+<h4>setServerManager</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.276">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;p_serverManager)</pre>
 </li>
 </ul>
-<a name="setCatalogJanitorEnabled(boolean)">
+<a name="setMetaLocation(org.apache.hadoop.hbase.ServerName)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setCatalogJanitorEnabled</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.283">setCatalogJanitorEnabled</a>(boolean&nbsp;p_catalogJanitorEnabled)</pre>
+<h4>setMetaLocation</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.283">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;p_metaLocation)</pre>
 </li>
 </ul>
-<a name="setFilter(java.lang.String)">
+<a name="setFrags(java.util.Map)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFilter</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.290">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_filter)</pre>
+<h4>setFrags</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.290">setFrags</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;p_frags)</pre>
 </li>
 </ul>
-<a name="setDeadServers(java.util.Set)">
+<a name="setFilter(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setDeadServers</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.297">setDeadServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_deadServers)</pre>
+<h4>setFilter</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.297">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_filter)</pre>
 </li>
 </ul>
-<a name="setFormat(java.lang.String)">
+<a name="setDeadServers(java.util.Set)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFormat</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.304">setFormat</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_format)</pre>
+<h4>setDeadServers</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.304">setDeadServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_deadServers)</pre>
 </li>
 </ul>
-<a name="setServers(java.util.List)">
+<a name="setFormat(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setServers</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.311">setServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_servers)</pre>
+<h4>setFormat</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.311">setFormat</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_format)</pre>
 </li>
 </ul>
-<a name="setMetaLocation(org.apache.hadoop.hbase.ServerName)">
+<a name="setAssignmentManager(org.apache.hadoop.hbase.master.AssignmentManager)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setMetaLocation</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.318">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;p_metaLocation)</pre>
+<h4>setAssignmentManager</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.318">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a>&nbsp;p_assignmentManager)</pre>
 </li>
 </ul>
-<a name="setAssignmentManager(org.apache.hadoop.hbase.master.AssignmentManager)">
+<a name="setServers(java.util.List)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setAssignmentManager</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.325">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a>&nbsp;p_assignmentManager)</pre>
+<h4>setServers</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.325">setServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_servers)</pre>
 </li>
 </ul>
-<a name="setServerManager(org.apache.hadoop.hbase.master.ServerManager)">
+<a name="setCatalogJanitorEnabled(boolean)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setServerManager</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.332">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;p_serverManager)</pre>
+<h4>setCatalogJanitorEnabled</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.332">setCatalogJanitorEnabled</a>(boolean&nbsp;p_catalogJanitorEnabled)</pre>
 </li>
 </ul>
 <a name="constructImpl(java.lang.Class)">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
index 7eec126..37c98c9 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
@@ -264,85 +264,85 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.62">master</a></pre>
 </li>
 </ul>
-<a name="frags">
+<a name="serverManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>frags</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.63">frags</a></pre>
+<h4>serverManager</h4>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.63">serverManager</a></pre>
 </li>
 </ul>
-<a name="catalogJanitorEnabled">
+<a name="metaLocation">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>catalogJanitorEnabled</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.64">catalogJanitorEnabled</a></pre>
+<h4>metaLocation</h4>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.64">metaLocation</a></pre>
 </li>
 </ul>
-<a name="filter">
+<a name="frags">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>filter</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.65">filter</a></pre>
+<h4>frags</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.65">frags</a></pre>
 </li>
 </ul>
-<a name="deadServers">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>deadServers</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.66">deadServers</a></pre>
+<h4>filter</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.66">filter</a></pre>
 </li>
 </ul>
-<a name="format">
+<a name="deadServers">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>format</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.67">format</a></pre>
+<h4>deadServers</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.67">deadServers</a></pre>
 </li>
 </ul>
-<a name="servers">
+<a name="format">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>servers</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.68">servers</a></pre>
+<h4>format</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.68">format</a></pre>
 </li>
 </ul>
-<a name="metaLocation">
+<a name="assignmentManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>metaLocation</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.69">metaLocation</a></pre>
+<h4>assignmentManager</h4>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.69">assignmentManager</a></pre>
 </li>
 </ul>
-<a name="assignmentManager">
+<a name="servers">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>assignmentManager</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.70">assignmentManager</a></pre>
+<h4>servers</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.70">servers</a></pre>
 </li>
 </ul>
-<a name="serverManager">
+<a name="catalogJanitorEnabled">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>serverManager</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.71">serverManager</a></pre>
+<h4>catalogJanitorEnabled</h4>
+<pre>private final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.71">catalogJanitorEnabled</a></pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
index 9013517..6f37c59 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
@@ -279,76 +279,76 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.71">m_regionServer</a></pre>
 </li>
 </ul>
-<a name="m_format">
+<a name="m_bcv">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_format</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.83">m_format</a></pre>
+<h4>m_bcv</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.83">m_bcv</a></pre>
 </li>
 </ul>
-<a name="m_format__IsNotDefault">
+<a name="m_bcv__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_format__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.88">m_format__IsNotDefault</a></pre>
+<h4>m_bcv__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.88">m_bcv__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_filter">
+<a name="m_bcn">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_filter</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.100">m_filter</a></pre>
+<h4>m_bcn</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.100">m_bcn</a></pre>
 </li>
 </ul>
-<a name="m_filter__IsNotDefault">
+<a name="m_bcn__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_filter__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.105">m_filter__IsNotDefault</a></pre>
+<h4>m_bcn__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.105">m_bcn__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_bcv">
+<a name="m_format">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_bcv</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.117">m_bcv</a></pre>
+<h4>m_format</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.117">m_format</a></pre>
 </li>
 </ul>
-<a name="m_bcv__IsNotDefault">
+<a name="m_format__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_bcv__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.122">m_bcv__IsNotDefault</a></pre>
+<h4>m_format__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.122">m_format__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_bcn">
+<a name="m_filter">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_bcn</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.134">m_bcn</a></pre>
+<h4>m_filter</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.134">m_filter</a></pre>
 </li>
 </ul>
-<a name="m_bcn__IsNotDefault">
+<a name="m_filter__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>m_bcn__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.139">m_bcn__IsNotDefault</a></pre>
+<h4>m_filter__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.139">m_filter__IsNotDefault</a></pre>
 </li>
 </ul>
 </li>
@@ -394,112 +394,112 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.67">getRegionServer</a>()</pre>
 </li>
 </ul>
-<a name="setFormat(java.lang.String)">
+<a name="setBcv(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFormat</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.73">setFormat</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;format)</pre>
+<h4>setBcv</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.73">setBcv</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcv)</pre>
 </li>
 </ul>
-<a name="getFormat()">
+<a name="getBcv()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFormat</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.79">getFormat</a>()</pre>
+<h4>getBcv</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.79">getBcv</a>()</pre>
 </li>
 </ul>
-<a name="getFormat__IsNotDefault()">
+<a name="getBcv__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFormat__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.84">getFormat__IsNotDefault</a>()</pre>
+<h4>getBcv__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.84">getBcv__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setFilter(java.lang.String)">
+<a name="setBcn(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.90">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
+<h4>setBcn</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.90">setBcn</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcn)</pre>
 </li>
 </ul>
-<a name="getFilter()">
+<a name="getBcn()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFilter</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.96">getFilter</a>()</pre>
+<h4>getBcn</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.96">getBcn</a>()</pre>
 </li>
 </ul>
-<a name="getFilter__IsNotDefault()">
+<a name="getBcn__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFilter__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.101">getFilter__IsNotDefault</a>()</pre>
+<h4>getBcn__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.101">getBcn__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setBcv(java.lang.String)">
+<a name="setFormat(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setBcv</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.107">setBcv</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcv)</pre>
+<h4>setFormat</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.107">setFormat</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;format)</pre>
 </li>
 </ul>
-<a name="getBcv()">
+<a name="getFormat()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getBcv</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.113">getBcv</a>()</pre>
+<h4>getFormat</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.113">getFormat</a>()</pre>
 </li>
 </ul>
-<a name="getBcv__IsNotDefault()">
+<a name="getFormat__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getBcv__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.118">getBcv__IsNotDefault</a>()</pre>
+<h4>getFormat__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.118">getFormat__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setBcn(java.lang.String)">
+<a name="setFilter(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setBcn</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.124">setBcn</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcn)</pre>
+<h4>setFilter</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.124">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
 </li>
 </ul>
-<a name="getBcn()">
+<a name="getFilter()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getBcn</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.130">getBcn</a>()</pre>
+<h4>getFilter</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.130">getFilter</a>()</pre>
 </li>
 </ul>
-<a name="getBcn__IsNotDefault()">
+<a name="getFilter__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>getBcn__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.135">getBcn__IsNotDefault</a>()</pre>
+<h4>getFilter__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.135">getFilter__IsNotDefault</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
index 7dad6c4..6d53054 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
@@ -283,40 +283,40 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <!--   -->
 </a>
 <h3>Field Detail</h3>
-<a name="format">
+<a name="bcv">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>format</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.151">format</a></pre>
+<h4>bcv</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.151">bcv</a></pre>
 </li>
 </ul>
-<a name="filter">
+<a name="bcn">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>filter</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.158">filter</a></pre>
+<h4>bcn</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.158">bcn</a></pre>
 </li>
 </ul>
-<a name="bcv">
+<a name="format">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>bcv</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.165">bcv</a></pre>
+<h4>format</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.165">format</a></pre>
 </li>
 </ul>
-<a name="bcn">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>bcn</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.172">bcn</a></pre>
+<h4>filter</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.172">filter</a></pre>
 </li>
 </ul>
 </li>
@@ -388,40 +388,40 @@ extends org.jamon.AbstractTemplateProxy</pre>
 </dl>
 </li>
 </ul>
-<a name="setFormat(java.lang.String)">
+<a name="setBcv(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFormat</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.152">setFormat</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_format)</pre>
+<h4>setBcv</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.152">setBcv</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_bcv)</pre>
 </li>
 </ul>
-<a name="setFilter(java.lang.String)">
+<a name="setBcn(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFilter</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.159">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_filter)</pre>
+<h4>setBcn</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.159">setBcn</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_bcn)</pre>
 </li>
 </ul>
-<a name="setBcv(java.lang.String)">
+<a name="setFormat(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setBcv</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.166">setBcv</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_bcv)</pre>
+<h4>setFormat</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.166">setFormat</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_format)</pre>
 </li>
 </ul>
-<a name="setBcn(java.lang.String)">
+<a name="setFilter(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setBcn</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.173">setBcn</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_bcn)</pre>
+<h4>setFilter</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.173">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_filter)</pre>
 </li>
 </ul>
 <a name="constructImpl(java.lang.Class)">


[26/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
index e27531a..c56cb96 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
@@ -224,40 +224,40 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/
 <pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.28">regionServer</a></pre>
 </li>
 </ul>
-<a name="format">
+<a name="bcv">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>format</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.29">format</a></pre>
+<h4>bcv</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.29">bcv</a></pre>
 </li>
 </ul>
-<a name="filter">
+<a name="bcn">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>filter</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.30">filter</a></pre>
+<h4>bcn</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.30">bcn</a></pre>
 </li>
 </ul>
-<a name="bcv">
+<a name="format">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>bcv</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.31">bcv</a></pre>
+<h4>format</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.31">format</a></pre>
 </li>
 </ul>
-<a name="bcn">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>bcn</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.32">bcn</a></pre>
+<h4>filter</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.32">filter</a></pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/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 98cd86f..52b8280 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -463,12 +463,12 @@
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/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/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">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/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">PrettyPrinter.Unit</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">Order</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="strong">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">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/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">PrettyPrinter.Unit</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">PoolMap.PoolType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">ChecksumType</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="strong">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/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 1f810f3..8260133 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -148,9 +148,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/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/WALKey.Version.html" title="enum in org.apache.hadoop.hbase.wal"><span class="strong">WALKey.Version</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="strong">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="strong">RegionGroupingProvider.Strategies</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALKey.Version.html" title="enum in org.apache.hadoop.hbase.wal"><span class="strong">WALKey.Version</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/overview-tree.html b/devapidocs/overview-tree.html
index be4ca28..2a614f4 100644
--- a/devapidocs/overview-tree.html
+++ b/devapidocs/overview-tree.html
@@ -2554,7 +2554,7 @@
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/RpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc"><span class="strong">RpcScheduler</span></a>
 <ul>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FifoRpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc"><span class="strong">FifoRpcScheduler</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc"><span class="strong">SimpleRpcScheduler</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc"><span class="strong">SimpleRpcScheduler</span></a> (implements org.apache.hadoop.hbase.conf.<a href="org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">ConfigurationObserver</a>)</li>
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html" title="class in org.apache.hadoop.hbase.ipc"><span class="strong">RpcScheduler.Context</span></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html
index 9cc5117..995dd78 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html
@@ -74,31 +74,40 @@
 <span class="sourceLineNo">066</span><a name="line.66"></a>
 <span class="sourceLineNo">067</span>  protected void initializeQueues(final int numQueues,<a name="line.67"></a>
 <span class="sourceLineNo">068</span>      final Class&lt;? extends BlockingQueue&gt; queueClass, Object... initargs) {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    for (int i = 0; i &lt; numQueues; ++i) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      queues.add((BlockingQueue&lt;CallRunner&gt;) ReflectionUtils.newInstance(queueClass, initargs));<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    }<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  @Override<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  public boolean dispatch(final CallRunner callTask) throws InterruptedException {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    int queueIndex = balancer.getNextQueue();<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    return queues.get(queueIndex).offer(callTask);<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  }<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  @Override<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public int getQueueLength() {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    int length = 0;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    for (final BlockingQueue&lt;CallRunner&gt; queue : queues) {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      length += queue.size();<a name="line.84"></a>
+<span class="sourceLineNo">069</span>    if (initargs.length &gt; 0) {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      currentQueueLimit = (int) initargs[0];<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      initargs[0] = Math.max((int) initargs[0], DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT);<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    }<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    for (int i = 0; i &lt; numQueues; ++i) {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      queues.add((BlockingQueue&lt;CallRunner&gt;) ReflectionUtils.newInstance(queueClass, initargs));<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><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  @Override<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public boolean dispatch(final CallRunner callTask) throws InterruptedException {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    int queueIndex = balancer.getNextQueue();<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    BlockingQueue&lt;CallRunner&gt; queue = queues.get(queueIndex);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    // that means we can overflow by at most &lt;num reader&gt; size (5), that's ok<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    if (queue.size() &gt;= currentQueueLimit) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      return false;<a name="line.84"></a>
 <span class="sourceLineNo">085</span>    }<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    return length;<a name="line.86"></a>
+<span class="sourceLineNo">086</span>    return queue.offer(callTask);<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>  @Override<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  public List&lt;BlockingQueue&lt;CallRunner&gt;&gt; getQueues() {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    return queues;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  }<a name="line.92"></a>
-<span class="sourceLineNo">093</span>}<a name="line.93"></a>
+<span class="sourceLineNo">090</span>  public int getQueueLength() {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    int length = 0;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    for (final BlockingQueue&lt;CallRunner&gt; queue : queues) {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      length += queue.size();<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    return length;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>  @Override<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  public List&lt;BlockingQueue&lt;CallRunner&gt;&gt; getQueues() {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    return queues;<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html
index 7695dac..cf243f8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html
@@ -147,112 +147,127 @@
 <span class="sourceLineNo">139</span>              " readQueues=" + numReadQueues + " readHandlers=" + readHandlersCount +<a name="line.139"></a>
 <span class="sourceLineNo">140</span>              ((numScanQueues == 0) ? "" : " scanQueues=" + numScanQueues +<a name="line.140"></a>
 <span class="sourceLineNo">141</span>                " scanHandlers=" + scanHandlersCount));<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    for (int i = 0; i &lt; numWriteQueues; ++i) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      queues.add((BlockingQueue&lt;CallRunner&gt;)<a name="line.144"></a>
-<span class="sourceLineNo">145</span>        ReflectionUtils.newInstance(writeQueueClass, writeQueueInitArgs));<a name="line.145"></a>
+<span class="sourceLineNo">142</span>    if (writeQueueInitArgs.length &gt; 0) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      currentQueueLimit = (int) writeQueueInitArgs[0];<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      writeQueueInitArgs[0] = Math.max((int) writeQueueInitArgs[0],<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT);<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>    for (int i = 0; i &lt; (numReadQueues + numScanQueues); ++i) {<a name="line.148"></a>
+<span class="sourceLineNo">147</span>    for (int i = 0; i &lt; numWriteQueues; ++i) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
 <span class="sourceLineNo">149</span>      queues.add((BlockingQueue&lt;CallRunner&gt;)<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        ReflectionUtils.newInstance(readQueueClass, readQueueInitArgs));<a name="line.150"></a>
+<span class="sourceLineNo">150</span>        ReflectionUtils.newInstance(writeQueueClass, writeQueueInitArgs));<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><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  @Override<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  protected void startHandlers(final int port) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    startHandlers(".write", writeHandlersCount, queues, 0, numWriteQueues, port);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    startHandlers(".read", readHandlersCount, queues, numWriteQueues, numReadQueues, port);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    startHandlers(".scan", scanHandlersCount, queues,<a name="line.158"></a>
-<span class="sourceLineNo">159</span>                  numWriteQueues + numReadQueues, numScanQueues, port);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  @Override<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  public boolean dispatch(final CallRunner callTask) throws InterruptedException {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    RpcServer.Call call = callTask.getCall();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    int queueIndex;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    if (isWriteRequest(call.getHeader(), call.param)) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      queueIndex = writeBalancer.getNextQueue();<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    } else if (numScanQueues &gt; 0 &amp;&amp; isScanRequest(call.getHeader(), call.param)) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      queueIndex = numWriteQueues + numReadQueues + scanBalancer.getNextQueue();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    } else {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      queueIndex = numWriteQueues + readBalancer.getNextQueue();<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    return queues.get(queueIndex).offer(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>  private boolean isWriteRequest(final RequestHeader header, final Message param) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    // TODO: Is there a better way to do this?<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    if (param instanceof MultiRequest) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      MultiRequest multi = (MultiRequest)param;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      for (RegionAction regionAction : multi.getRegionActionList()) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        for (Action action: regionAction.getActionList()) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          if (action.hasMutation()) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>            return true;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>          }<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      }<a name="line.186"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    if (readQueueInitArgs.length &gt; 0) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      currentQueueLimit = (int) readQueueInitArgs[0];<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      readQueueInitArgs[0] = Math.max((int) readQueueInitArgs[0],<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    for (int i = 0; i &lt; (numReadQueues + numScanQueues); ++i) {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      queues.add((BlockingQueue&lt;CallRunner&gt;)<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        ReflectionUtils.newInstance(readQueueClass, readQueueInitArgs));<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><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  @Override<a name="line.164"></a>
+<span class="sourceLineNo">165</span>  protected void startHandlers(final int port) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    startHandlers(".write", writeHandlersCount, queues, 0, numWriteQueues, port);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    startHandlers(".read", readHandlersCount, queues, numWriteQueues, numReadQueues, port);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    startHandlers(".scan", scanHandlersCount, queues,<a name="line.168"></a>
+<span class="sourceLineNo">169</span>                  numWriteQueues + numReadQueues, numScanQueues, port);<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>  @Override<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public boolean dispatch(final CallRunner callTask) throws InterruptedException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    RpcServer.Call call = callTask.getCall();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    int queueIndex;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    if (isWriteRequest(call.getHeader(), call.param)) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      queueIndex = writeBalancer.getNextQueue();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    } else if (numScanQueues &gt; 0 &amp;&amp; isScanRequest(call.getHeader(), call.param)) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      queueIndex = numWriteQueues + numReadQueues + scanBalancer.getNextQueue();<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    } else {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      queueIndex = numWriteQueues + readBalancer.getNextQueue();<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>    BlockingQueue&lt;CallRunner&gt; queue = queues.get(queueIndex);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    if (queue.size() &gt;= currentQueueLimit) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      return false;<a name="line.186"></a>
 <span class="sourceLineNo">187</span>    }<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    if (param instanceof MutateRequest) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      return true;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    // Below here are methods for master. It's a pretty brittle version of this.<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    // Not sure that master actually needs a read/write queue since 90% of requests to<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    // master are writing to status or changing the meta table.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    // All other read requests are admin generated and can be processed whenever.<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // However changing that would require a pretty drastic change and should be done for<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // the next major release and not as a fix for HBASE-14239<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    if (param instanceof RegionServerStatusProtos.ReportRegionStateTransitionRequest) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      return true;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    if (param instanceof RegionServerStatusProtos.RegionServerStartupRequest) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      return true;<a name="line.201"></a>
+<span class="sourceLineNo">188</span>    return queue.offer(callTask);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private boolean isWriteRequest(final RequestHeader header, final Message param) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // TODO: Is there a better way to do this?<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    if (param instanceof MultiRequest) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      MultiRequest multi = (MultiRequest)param;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      for (RegionAction regionAction : multi.getRegionActionList()) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        for (Action action: regionAction.getActionList()) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>          if (action.hasMutation()) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>            return true;<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>      }<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    if (param instanceof RegionServerStatusProtos.RegionServerReportRequest) {<a name="line.203"></a>
+<span class="sourceLineNo">203</span>    if (param instanceof MutateRequest) {<a name="line.203"></a>
 <span class="sourceLineNo">204</span>      return true;<a name="line.204"></a>
 <span class="sourceLineNo">205</span>    }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    return false;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  private boolean isScanRequest(final RequestHeader header, final Message param) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    if (param instanceof ScanRequest) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      // The first scan request will be executed as a "short read"<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      ScanRequest request = (ScanRequest)param;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      return request.hasScannerId();<a name="line.213"></a>
+<span class="sourceLineNo">206</span>    // Below here are methods for master. It's a pretty brittle version of this.<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    // Not sure that master actually needs a read/write queue since 90% of requests to<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    // master are writing to status or changing the meta table.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    // All other read requests are admin generated and can be processed whenever.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    // However changing that would require a pretty drastic change and should be done for<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    // the next major release and not as a fix for HBASE-14239<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    if (param instanceof RegionServerStatusProtos.ReportRegionStateTransitionRequest) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      return true;<a name="line.213"></a>
 <span class="sourceLineNo">214</span>    }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    return false;<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 int getQueueLength() {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int length = 0;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    for (final BlockingQueue&lt;CallRunner&gt; queue: queues) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      length += queue.size();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    return length;<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>  protected List&lt;BlockingQueue&lt;CallRunner&gt;&gt; getQueues() {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    return queues;<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>   * Calculate the number of writers based on the "total count" and the read share.<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   * You'll get at least one writer.<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  private static int calcNumWriters(final int count, final float readShare) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return Math.max(1, count - Math.max(1, (int)Math.round(count * readShare)));<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /*<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * Calculate the number of readers based on the "total count" and the read share.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * You'll get at least one reader.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   */<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  private static int calcNumReaders(final int count, final float readShare) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    return count - calcNumWriters(count, readShare);<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">215</span>    if (param instanceof RegionServerStatusProtos.RegionServerStartupRequest) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      return true;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    if (param instanceof RegionServerStatusProtos.RegionServerReportRequest) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      return true;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    return false;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>  private boolean isScanRequest(final RequestHeader header, final Message param) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    if (param instanceof ScanRequest) {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      // The first scan request will be executed as a "short read"<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      ScanRequest request = (ScanRequest)param;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      return request.hasScannerId();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    return false;<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 getQueueLength() {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    int length = 0;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    for (final BlockingQueue&lt;CallRunner&gt; queue: queues) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      length += queue.size();<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    }<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return length;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  @Override<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  protected List&lt;BlockingQueue&lt;CallRunner&gt;&gt; getQueues() {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    return queues;<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>   * Calculate the number of writers based on the "total count" and the read share.<a name="line.248"></a>
+<span class="sourceLineNo">249</span>   * You'll get at least one writer.<a name="line.249"></a>
+<span class="sourceLineNo">250</span>   */<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  private static int calcNumWriters(final int count, final float readShare) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    return Math.max(1, count - Math.max(1, (int)Math.round(count * readShare)));<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>   * Calculate the number of readers based on the "total count" and the read share.<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * You'll get at least one reader.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  private static int calcNumReaders(final int count, final float readShare) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    return count - calcNumWriters(count, readShare);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>  }<a name="line.261"></a>
+<span class="sourceLineNo">262</span>}<a name="line.262"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/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 88ac539..5754645 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
@@ -50,175 +50,186 @@
 <span class="sourceLineNo">042</span>public abstract class RpcExecutor {<a name="line.42"></a>
 <span class="sourceLineNo">043</span>  private static final Log LOG = LogFactory.getLog(RpcExecutor.class);<a name="line.43"></a>
 <span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>  private final AtomicInteger activeHandlerCount = new AtomicInteger(0);<a name="line.45"></a>
-<span class="sourceLineNo">046</span>  private final List&lt;Thread&gt; handlers;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private final int handlerCount;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private final String name;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  private final AtomicInteger failedHandlerCount = new AtomicInteger(0);<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>  private boolean running;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>  private Configuration conf = null;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  private Abortable abortable = null;<a name="line.54"></a>
+<span class="sourceLineNo">045</span>  protected static final int DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT = 250;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>  protected volatile int currentQueueLimit;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>  private final AtomicInteger activeHandlerCount = new AtomicInteger(0);<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private final List&lt;Thread&gt; handlers;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private final int handlerCount;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private final String name;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private final AtomicInteger failedHandlerCount = new AtomicInteger(0);<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private boolean running;<a name="line.54"></a>
 <span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  public RpcExecutor(final String name, final int handlerCount) {<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    this.handlers = new ArrayList&lt;Thread&gt;(handlerCount);<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    this.handlerCount = handlerCount;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    this.name = Strings.nullToEmpty(name);<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  public RpcExecutor(final String name, final int handlerCount, final Configuration conf,<a name="line.62"></a>
-<span class="sourceLineNo">063</span>      final Abortable abortable) {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    this(name, handlerCount);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    this.conf = conf;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    this.abortable = abortable;<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 void start(final int port) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    running = true;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    startHandlers(port);<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 stop() {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    running = false;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    for (Thread handler : handlers) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      handler.interrupt();<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public int getActiveHandlerCount() {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    return activeHandlerCount.get();<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>  /** Returns the length of the pending queue */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public abstract int getQueueLength();<a name="line.86"></a>
+<span class="sourceLineNo">056</span>  private Configuration conf = null;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private Abortable abortable = null;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  public RpcExecutor(final String name, final int handlerCount) {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    this.handlers = new ArrayList&lt;Thread&gt;(handlerCount);<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    this.handlerCount = handlerCount;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    this.name = Strings.nullToEmpty(name);<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public RpcExecutor(final String name, final int handlerCount, final Configuration conf,<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      final Abortable abortable) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    this(name, handlerCount);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    this.conf = conf;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    this.abortable = abortable;<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 void start(final int port) {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    running = true;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    startHandlers(port);<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 void stop() {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    running = false;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    for (Thread handler : handlers) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      handler.interrupt();<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><a name="line.83"></a>
+<span class="sourceLineNo">084</span>  public int getActiveHandlerCount() {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    return activeHandlerCount.get();<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>  /** Add the request to the executor queue */<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  public abstract boolean dispatch(final CallRunner callTask) throws InterruptedException;<a name="line.89"></a>
+<span class="sourceLineNo">088</span>  /** Returns the length of the pending queue */<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  public abstract int getQueueLength();<a name="line.89"></a>
 <span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  /** Returns the list of request queues */<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  protected abstract List&lt;BlockingQueue&lt;CallRunner&gt;&gt; getQueues();<a name="line.92"></a>
+<span class="sourceLineNo">091</span>  /** Add the request to the executor queue */<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  public abstract boolean dispatch(final CallRunner callTask) throws InterruptedException;<a name="line.92"></a>
 <span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>  protected void startHandlers(final int port) {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    List&lt;BlockingQueue&lt;CallRunner&gt;&gt; callQueues = getQueues();<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    startHandlers(null, handlerCount, callQueues, 0, callQueues.size(), port);<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>  protected void startHandlers(final String nameSuffix, final int numHandlers,<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      final List&lt;BlockingQueue&lt;CallRunner&gt;&gt; callQueues,<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      final int qindex, final int qsize, final int port) {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    final String threadPrefix = name + Strings.nullToEmpty(nameSuffix);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    for (int i = 0; i &lt; numHandlers; i++) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>      final int index = qindex + (i % qsize);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      Thread t = new Thread(new Runnable() {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>        @Override<a name="line.106"></a>
-<span class="sourceLineNo">107</span>        public void run() {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>          consumerLoop(callQueues.get(index));<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>      t.setDaemon(true);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      t.setName(threadPrefix + "RpcServer.handler=" + handlers.size() +<a name="line.112"></a>
-<span class="sourceLineNo">113</span>        ",queue=" + index + ",port=" + port);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      t.start();<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      LOG.debug(threadPrefix + " Start Handler index=" + handlers.size() + " queue=" + index);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      handlers.add(t);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>  protected void consumerLoop(final BlockingQueue&lt;CallRunner&gt; myQueue) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    boolean interrupted = false;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    double handlerFailureThreshhold =<a name="line.122"></a>
-<span class="sourceLineNo">123</span>        conf == null ? 1.0 : conf.getDouble(HConstants.REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT,<a name="line.123"></a>
-<span class="sourceLineNo">124</span>          HConstants.DEFAULT_REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    try {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      while (running) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>        try {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>          MonitoredRPCHandler status = RpcServer.getStatus();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>          CallRunner task = myQueue.take();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>          task.setStatus(status);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>          try {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>            activeHandlerCount.incrementAndGet();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>            task.run();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>          } catch (Throwable e) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>            if (e instanceof Error) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>              int failedCount = failedHandlerCount.incrementAndGet();<a name="line.136"></a>
-<span class="sourceLineNo">137</span>              if (handlerFailureThreshhold &gt;= 0<a name="line.137"></a>
-<span class="sourceLineNo">138</span>                  &amp;&amp; failedCount &gt; handlerCount * handlerFailureThreshhold) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>                String message =<a name="line.139"></a>
-<span class="sourceLineNo">140</span>                    "Number of failed RpcServer handler exceeded threshhold "<a name="line.140"></a>
-<span class="sourceLineNo">141</span>                        + handlerFailureThreshhold + "  with failed reason: "<a name="line.141"></a>
-<span class="sourceLineNo">142</span>                        + StringUtils.stringifyException(e);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>                if (abortable != null) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>                  abortable.abort(message, e);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>                } else {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>                  LOG.error("Received " + StringUtils.stringifyException(e)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>                    + " but not aborting due to abortable being null");<a name="line.147"></a>
-<span class="sourceLineNo">148</span>                  throw e;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>                }<a name="line.149"></a>
-<span class="sourceLineNo">150</span>              } else {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>                LOG.warn("RpcServer handler threads encountered errors "<a name="line.151"></a>
-<span class="sourceLineNo">152</span>                    + StringUtils.stringifyException(e));<a name="line.152"></a>
-<span class="sourceLineNo">153</span>              }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>            } else {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>              LOG.warn("RpcServer handler threads encountered exceptions "<a name="line.155"></a>
-<span class="sourceLineNo">156</span>                  + StringUtils.stringifyException(e));<a name="line.156"></a>
-<span class="sourceLineNo">157</span>            }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>          } finally {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>            activeHandlerCount.decrementAndGet();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        } catch (InterruptedException e) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          interrupted = true;<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>    } finally {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      if (interrupted) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        Thread.currentThread().interrupt();<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><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  public static abstract class QueueBalancer {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    /**<a name="line.173"></a>
-<span class="sourceLineNo">174</span>     * @return the index of the next queue to which a request should be inserted<a name="line.174"></a>
-<span class="sourceLineNo">175</span>     */<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    public abstract int getNextQueue();<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>  public static QueueBalancer getBalancer(int queueSize) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    Preconditions.checkArgument(queueSize &gt; 0, "Queue size is &lt;= 0, must be at least 1");<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    if (queueSize == 1) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      return ONE_QUEUE;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    } else {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      return new RandomQueueBalancer(queueSize);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  }<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>  /**<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * All requests go to the first queue, at index 0<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   */<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  private static QueueBalancer ONE_QUEUE = new QueueBalancer() {<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>    @Override<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    public int getNextQueue() {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return 0;<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><a name="line.198"></a>
-<span class="sourceLineNo">199</span>  /**<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * Queue balancer that just randomly selects a queue in the range [0, num queues).<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   */<a name="line.201"></a>
-<span class="sourceLineNo">202</span>  private static class RandomQueueBalancer extends QueueBalancer {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    private final int queueSize;<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span>    public RandomQueueBalancer(int queueSize) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      this.queueSize = queueSize;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    public int getNextQueue() {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      return ThreadLocalRandom.current().nextInt(queueSize);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>}<a name="line.213"></a>
+<span class="sourceLineNo">094</span>  /** Returns the list of request queues */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  protected abstract List&lt;BlockingQueue&lt;CallRunner&gt;&gt; getQueues();<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  protected void startHandlers(final int port) {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    List&lt;BlockingQueue&lt;CallRunner&gt;&gt; callQueues = getQueues();<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    startHandlers(null, handlerCount, callQueues, 0, callQueues.size(), port);<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>  protected void startHandlers(final String nameSuffix, final int numHandlers,<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      final List&lt;BlockingQueue&lt;CallRunner&gt;&gt; callQueues,<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      final int qindex, final int qsize, final int port) {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    final String threadPrefix = name + Strings.nullToEmpty(nameSuffix);<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    for (int i = 0; i &lt; numHandlers; i++) {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      final int index = qindex + (i % qsize);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      Thread t = new Thread(new Runnable() {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>        @Override<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        public void run() {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>          consumerLoop(callQueues.get(index));<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>      t.setDaemon(true);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      t.setName(threadPrefix + "RpcServer.handler=" + handlers.size() +<a name="line.115"></a>
+<span class="sourceLineNo">116</span>        ",queue=" + index + ",port=" + port);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      t.start();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      LOG.debug(threadPrefix + " Start Handler index=" + handlers.size() + " queue=" + index);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      handlers.add(t);<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>  protected void consumerLoop(final BlockingQueue&lt;CallRunner&gt; myQueue) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    boolean interrupted = false;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    double handlerFailureThreshhold =<a name="line.125"></a>
+<span class="sourceLineNo">126</span>        conf == null ? 1.0 : conf.getDouble(HConstants.REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT,<a name="line.126"></a>
+<span class="sourceLineNo">127</span>          HConstants.DEFAULT_REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    try {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      while (running) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        try {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>          MonitoredRPCHandler status = RpcServer.getStatus();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>          CallRunner task = myQueue.take();<a name="line.132"></a>
+<span class="sourceLineNo">133</span>          task.setStatus(status);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          try {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>            activeHandlerCount.incrementAndGet();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>            task.run();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>          } catch (Throwable e) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>            if (e instanceof Error) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>              int failedCount = failedHandlerCount.incrementAndGet();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>              if (handlerFailureThreshhold &gt;= 0<a name="line.140"></a>
+<span class="sourceLineNo">141</span>                  &amp;&amp; failedCount &gt; handlerCount * handlerFailureThreshhold) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>                String message =<a name="line.142"></a>
+<span class="sourceLineNo">143</span>                    "Number of failed RpcServer handler exceeded threshhold "<a name="line.143"></a>
+<span class="sourceLineNo">144</span>                        + handlerFailureThreshhold + "  with failed reason: "<a name="line.144"></a>
+<span class="sourceLineNo">145</span>                        + StringUtils.stringifyException(e);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>                if (abortable != null) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>                  abortable.abort(message, e);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>                } else {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>                  LOG.error("Received " + StringUtils.stringifyException(e)<a name="line.149"></a>
+<span class="sourceLineNo">150</span>                    + " but not aborting due to abortable being null");<a name="line.150"></a>
+<span class="sourceLineNo">151</span>                  throw e;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>                }<a name="line.152"></a>
+<span class="sourceLineNo">153</span>              } else {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>                LOG.warn("RpcServer handler threads encountered errors "<a name="line.154"></a>
+<span class="sourceLineNo">155</span>                    + StringUtils.stringifyException(e));<a name="line.155"></a>
+<span class="sourceLineNo">156</span>              }<a name="line.156"></a>
+<span class="sourceLineNo">157</span>            } else {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>              LOG.warn("RpcServer handler threads encountered exceptions "<a name="line.158"></a>
+<span class="sourceLineNo">159</span>                  + StringUtils.stringifyException(e));<a name="line.159"></a>
+<span class="sourceLineNo">160</span>            }<a name="line.160"></a>
+<span class="sourceLineNo">161</span>          } finally {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>            activeHandlerCount.decrementAndGet();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>          }<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        } catch (InterruptedException e) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          interrupted = true;<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>    } finally {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      if (interrupted) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        Thread.currentThread().interrupt();<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      }<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  }<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  public static abstract class QueueBalancer {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    /**<a name="line.176"></a>
+<span class="sourceLineNo">177</span>     * @return the index of the next queue to which a request should be inserted<a name="line.177"></a>
+<span class="sourceLineNo">178</span>     */<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    public abstract int getNextQueue();<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>  public static QueueBalancer getBalancer(int queueSize) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    Preconditions.checkArgument(queueSize &gt; 0, "Queue size is &lt;= 0, must be at least 1");<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    if (queueSize == 1) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      return ONE_QUEUE;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    } else {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      return new RandomQueueBalancer(queueSize);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * All requests go to the first queue, at index 0<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   */<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  private static QueueBalancer ONE_QUEUE = new QueueBalancer() {<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>    @Override<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    public int getNextQueue() {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      return 0;<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><a name="line.201"></a>
+<span class="sourceLineNo">202</span>  /**<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   * Queue balancer that just randomly selects a queue in the range [0, num queues).<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   */<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  private static class RandomQueueBalancer extends QueueBalancer {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    private final int queueSize;<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public RandomQueueBalancer(int queueSize) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      this.queueSize = queueSize;<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>    public int getNextQueue() {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      return ThreadLocalRandom.current().nextInt(queueSize);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>  /**<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * Update current soft limit for executor's call queues<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * @param conf updated configuration<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  public void resizeQueues(Configuration conf) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    currentQueueLimit = conf.getInt("hbase.ipc.server.max.callqueue.length", currentQueueLimit);<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>
 
 
 


[13/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 488c54f..ee311a3 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <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" />
@@ -422,7 +422,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index 1715bde..ee82554 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Continuous Integration</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -290,7 +290,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 39af680..819d32f 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Tracking</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -287,7 +287,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index b7b5c4a..39de4ad 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project License</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -490,7 +490,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 1c31557..30e9b88 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <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" />
@@ -340,7 +340,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 4d8e13a..ada6fe9 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -458,7 +458,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 


[09/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html
index 1bdbf69..f83e138 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html
@@ -86,478 +86,483 @@
 <span class="sourceLineNo">078</span>import org.junit.Rule;<a name="line.78"></a>
 <span class="sourceLineNo">079</span>import org.junit.Test;<a name="line.79"></a>
 <span class="sourceLineNo">080</span>import org.junit.experimental.categories.Category;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.junit.rules.TestRule;<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>import com.google.common.base.Joiner;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import com.google.protobuf.RpcController;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import com.google.protobuf.ServiceException;<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> * Like {@link TestRegionMergeTransaction} in that we're testing<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * {@link RegionMergeTransactionImpl} only the below tests are against a running<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * cluster where {@link TestRegionMergeTransaction} is tests against bare<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * {@link HRegion}.<a name="line.91"></a>
-<span class="sourceLineNo">092</span> */<a name="line.92"></a>
-<span class="sourceLineNo">093</span>@Category({RegionServerTests.class, LargeTests.class})<a name="line.93"></a>
-<span class="sourceLineNo">094</span>public class TestRegionMergeTransactionOnCluster {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private static final Log LOG = LogFactory<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      .getLog(TestRegionMergeTransactionOnCluster.class);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().withTimeout(this.getClass()).<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      withLookingForStuckThread(true).build();<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private static final int NB_SERVERS = 3;<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  private static final byte[] FAMILYNAME = Bytes.toBytes("fam");<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  private static final byte[] QUALIFIER = Bytes.toBytes("q");<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private static byte[] ROW = Bytes.toBytes("testRow");<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private static final int INITIAL_REGION_NUM = 10;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  private static final int ROWSIZE = 200;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  private static byte[][] ROWS = makeN(ROW, ROWSIZE);<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private static int waitTime = 60 * 1000;<a name="line.109"></a>
+<span class="sourceLineNo">081</span>import org.junit.rules.TestName;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.junit.rules.TestRule;<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>import com.google.common.base.Joiner;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import com.google.protobuf.RpcController;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import com.google.protobuf.ServiceException;<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> * Like {@link TestRegionMergeTransaction} in that we're testing<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * {@link RegionMergeTransactionImpl} only the below tests are against a running<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * cluster where {@link TestRegionMergeTransaction} is tests against bare<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * {@link HRegion}.<a name="line.92"></a>
+<span class="sourceLineNo">093</span> */<a name="line.93"></a>
+<span class="sourceLineNo">094</span>@Category({RegionServerTests.class, LargeTests.class})<a name="line.94"></a>
+<span class="sourceLineNo">095</span>public class TestRegionMergeTransactionOnCluster {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private static final Log LOG = LogFactory<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      .getLog(TestRegionMergeTransactionOnCluster.class);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  @Rule public TestName name = new TestName();<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().withTimeout(this.getClass()).<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      withLookingForStuckThread(true).build();<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  private static final int NB_SERVERS = 3;<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  private static final byte[] FAMILYNAME = Bytes.toBytes("fam");<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private static final byte[] QUALIFIER = Bytes.toBytes("q");<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>  private static byte[] ROW = Bytes.toBytes("testRow");<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  private static final int INITIAL_REGION_NUM = 10;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private static final int ROWSIZE = 200;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  private static byte[][] ROWS = makeN(ROW, ROWSIZE);<a name="line.109"></a>
 <span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.111"></a>
+<span class="sourceLineNo">111</span>  private static int waitTime = 60 * 1000;<a name="line.111"></a>
 <span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>  private static HMaster MASTER;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static Admin ADMIN;<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>  @BeforeClass<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public static void beforeAllTests() throws Exception {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    // Start a cluster<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    TEST_UTIL.startMiniCluster(1, NB_SERVERS, null, MyMaster.class, null);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    MASTER = cluster.getMaster();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    MASTER.balanceSwitch(false);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    ADMIN = TEST_UTIL.getConnection().getAdmin();<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>  @AfterClass<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public static void afterAllTests() throws Exception {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    if (ADMIN != null) ADMIN.close();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  @Test<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  public void testWholesomeMerge() throws Exception {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    LOG.info("Starting testWholesomeMerge");<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    final TableName tableName =<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        TableName.valueOf("testWholesomeMerge");<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>    // Create table and load data.<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    Table table = createTableAndLoadData(MASTER, tableName);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    // Merge 1st and 2nd region<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1,<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        INITIAL_REGION_NUM - 1);<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>    // Merge 2nd and 3th region<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions =<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 1, 2,<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        INITIAL_REGION_NUM - 2);<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>    verifyRowCount(table, ROWSIZE);<a name="line.149"></a>
+<span class="sourceLineNo">113</span>  static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static HMaster MASTER;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static Admin ADMIN;<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  @BeforeClass<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  public static void beforeAllTests() throws Exception {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    // Start a cluster<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    TEST_UTIL.startMiniCluster(1, NB_SERVERS, null, MyMaster.class, null);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    MASTER = cluster.getMaster();<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    MASTER.balanceSwitch(false);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    ADMIN = TEST_UTIL.getConnection().getAdmin();<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>  @AfterClass<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  public static void afterAllTests() throws Exception {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    if (ADMIN != null) ADMIN.close();<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>  @Test<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public void testWholesomeMerge() throws Exception {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    LOG.info("Starting testWholesomeMerge");<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    final TableName tableName =<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        TableName.valueOf("testWholesomeMerge");<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>    // Create table and load data.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    Table table = createTableAndLoadData(MASTER, tableName);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    // Merge 1st and 2nd region<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1,<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        INITIAL_REGION_NUM - 1);<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    // Merge 2nd and 3th region<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions =<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 1, 2,<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        INITIAL_REGION_NUM - 2);<a name="line.149"></a>
 <span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span>    // Randomly choose one of the two merged regions<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    HRegionInfo hri = RandomUtils.nextBoolean() ?<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      mergedRegions.getFirst() : mergedRegions.getSecond();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    AssignmentManager am = cluster.getMaster().getAssignmentManager();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    RegionStates regionStates = am.getRegionStates();<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    long start = EnvironmentEdgeManager.currentTime();<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    while (!regionStates.isRegionInState(hri, State.MERGED)) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      assertFalse("Timed out in waiting one merged region to be in state MERGED",<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        EnvironmentEdgeManager.currentTime() - start &gt; 60000);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      Thread.sleep(500);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>    // We should not be able to assign it again<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    am.assign(hri, true);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    assertFalse("Merged region can't be assigned",<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      regionStates.isRegionInTransition(hri));<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    assertTrue(regionStates.isRegionInState(hri, State.MERGED));<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>    // We should not be able to unassign it either<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    am.unassign(hri, null);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    assertFalse("Merged region can't be unassigned",<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      regionStates.isRegionInTransition(hri));<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    assertTrue(regionStates.isRegionInState(hri, State.MERGED));<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>    table.close();<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>   * Not really restarting the master. Simulate it by clear of new region<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * state since it is not persisted, will be lost after master restarts.<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   */<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  @Test<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  public void testMergeAndRestartingMaster() throws Exception {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    LOG.info("Starting testMergeAndRestartingMaster");<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    final TableName tableName = TableName.valueOf("testMergeAndRestartingMaster");<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>    // Create table and load data.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    Table table = createTableAndLoadData(MASTER, tableName);<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>    try {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      MyMasterRpcServices.enabled.set(true);<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>      // Merge 1st and 2nd region<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1, INITIAL_REGION_NUM - 1);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    } finally {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      MyMasterRpcServices.enabled.set(false);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    table.close();<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>  @Test<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  public void testCleanMergeReference() throws Exception {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    LOG.info("Starting testCleanMergeReference");<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    ADMIN.enableCatalogJanitor(false);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    try {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      final TableName tableName =<a name="line.208"></a>
-<span class="sourceLineNo">209</span>          TableName.valueOf("testCleanMergeReference");<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      // Create table and load data.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      Table table = createTableAndLoadData(MASTER, tableName);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      // Merge 1st and 2nd region<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1,<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          INITIAL_REGION_NUM - 1);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      verifyRowCount(table, ROWSIZE);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      table.close();<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>      List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions = MetaTableAccessor<a name="line.218"></a>
-<span class="sourceLineNo">219</span>          .getTableRegionsAndLocations(MASTER.getConnection(), tableName);<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      HRegionInfo mergedRegionInfo = tableRegions.get(0).getFirst();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      HTableDescriptor tableDescriptor = MASTER.getTableDescriptors().get(<a name="line.221"></a>
-<span class="sourceLineNo">222</span>          tableName);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      Result mergedRegionResult = MetaTableAccessor.getRegionResult(<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        MASTER.getConnection(), mergedRegionInfo.getRegionName());<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>      // contains merge reference in META<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.227"></a>
-<span class="sourceLineNo">228</span>          HConstants.MERGEA_QUALIFIER) != null);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.229"></a>
-<span class="sourceLineNo">230</span>          HConstants.MERGEB_QUALIFIER) != null);<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>      // merging regions' directory are in the file system all the same<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      PairOfSameType&lt;HRegionInfo&gt; p = MetaTableAccessor.getMergeRegions(mergedRegionResult);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      HRegionInfo regionA = p.getFirst();<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      HRegionInfo regionB = p.getSecond();<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      FileSystem fs = MASTER.getMasterFileSystem().getFileSystem();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      Path rootDir = MASTER.getMasterFileSystem().getRootDir();<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>      Path tabledir = FSUtils.getTableDir(rootDir, mergedRegionInfo.getTable());<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      Path regionAdir = new Path(tabledir, regionA.getEncodedName());<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      Path regionBdir = new Path(tabledir, regionB.getEncodedName());<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      assertTrue(fs.exists(regionAdir));<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      assertTrue(fs.exists(regionBdir));<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>      HColumnDescriptor[] columnFamilies = tableDescriptor.getColumnFamilies();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      HRegionFileSystem hrfs = new HRegionFileSystem(<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        TEST_UTIL.getConfiguration(), fs, tabledir, mergedRegionInfo);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      int count = 0;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        count += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      ADMIN.compactRegion(mergedRegionInfo.getRegionName());<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      // clean up the merged region store files<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      // wait until merged region have reference file<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      long timeout = System.currentTimeMillis() + waitTime;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      int newcount = 0;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      while (System.currentTimeMillis() &lt; timeout) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          newcount += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        }<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        if(newcount &gt; count) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>          break;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        }<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        Thread.sleep(50);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      assertTrue(newcount &gt; count);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      List&lt;RegionServerThread&gt; regionServerThreads = TEST_UTIL.getHBaseCluster()<a name="line.267"></a>
-<span class="sourceLineNo">268</span>          .getRegionServerThreads();<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      for (RegionServerThread rs : regionServerThreads) {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        CompactedHFilesDischarger cleaner = new CompactedHFilesDischarger(100, null,<a name="line.270"></a>
-<span class="sourceLineNo">271</span>            rs.getRegionServer(), false);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        cleaner.chore();<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        Thread.sleep(1000);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      }<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      while (System.currentTimeMillis() &lt; timeout) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        int newcount1 = 0;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>          newcount1 += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        }<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        if(newcount1 &lt;= 1) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          break;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        Thread.sleep(50);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      // run CatalogJanitor to clean merge references in hbase:meta and archive the<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      // files of merging regions<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      int cleaned = 0;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      while (cleaned == 0) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        cleaned = ADMIN.runCatalogScan();<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        LOG.debug("catalog janitor returned " + cleaned);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        Thread.sleep(50);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      assertFalse(regionAdir.toString(), fs.exists(regionAdir));<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      assertFalse(regionBdir.toString(), fs.exists(regionBdir));<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      assertTrue(cleaned &gt; 0);<a name="line.295"></a>
-<span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>      mergedRegionResult = MetaTableAccessor.getRegionResult(<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        TEST_UTIL.getConnection(), mergedRegionInfo.getRegionName());<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          HConstants.MERGEA_QUALIFIER) != null);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.301"></a>
-<span class="sourceLineNo">302</span>          HConstants.MERGEB_QUALIFIER) != null);<a name="line.302"></a>
-<span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>    } finally {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      ADMIN.enableCatalogJanitor(true);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  /**<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * This test tests 1, merging region not online;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * 2, merging same two regions; 3, merging unknown regions.<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * They are in one test case so that we don't have to create<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * many tables, and these tests are simple.<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  @Test<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  public void testMerge() throws Exception {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    LOG.info("Starting testMerge");<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    final TableName tableName = TableName.valueOf("testMerge");<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>    try {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      // Create table and load data.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      Table table = createTableAndLoadData(MASTER, tableName);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      RegionStates regionStates = MASTER.getAssignmentManager().getRegionStates();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      List&lt;HRegionInfo&gt; regions = regionStates.getRegionsOfTable(tableName);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      // Fake offline one region<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      HRegionInfo a = regions.get(0);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      HRegionInfo b = regions.get(1);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      regionStates.regionOffline(a);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      try {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        // Merge offline region. Region a is offline here<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        ADMIN.mergeRegions(a.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), false);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        fail("Offline regions should not be able to merge");<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      } catch (IOException ie) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        System.out.println(ie);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        assertTrue("Exception should mention regions not online",<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          StringUtils.stringifyException(ie).contains("regions not online")<a name="line.336"></a>
-<span class="sourceLineNo">337</span>            &amp;&amp; ie instanceof MergeRegionException);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      try {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        // Merge the same region: b and b.<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        ADMIN.mergeRegions(b.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), true);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        fail("A region should not be able to merge with itself, even forcifully");<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      } catch (IOException ie) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        assertTrue("Exception should mention regions not online",<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          StringUtils.stringifyException(ie).contains("region to itself")<a name="line.345"></a>
-<span class="sourceLineNo">346</span>            &amp;&amp; ie instanceof MergeRegionException);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      try {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        // Merge unknown regions<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        ADMIN.mergeRegions(Bytes.toBytes("-f1"), Bytes.toBytes("-f2"), true);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        fail("Unknown region could not be merged");<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      } catch (IOException ie) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        assertTrue("UnknownRegionException should be thrown",<a name="line.353"></a>
-<span class="sourceLineNo">354</span>          ie instanceof UnknownRegionException);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      table.close();<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    } finally {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      TEST_UTIL.deleteTable(tableName);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  @Test<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  public void testMergeWithReplicas() throws Exception {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    final TableName tableName = TableName.valueOf("testMergeWithReplicas");<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    // Create table and load data.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    createTableAndLoadData(MASTER, tableName, 5, 2);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; initialRegionToServers =<a name="line.367"></a>
-<span class="sourceLineNo">368</span>        MetaTableAccessor.getTableRegionsAndLocations(<a name="line.368"></a>
-<span class="sourceLineNo">369</span>            TEST_UTIL.getConnection(), tableName);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    // Merge 1st and 2nd region<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions = mergeRegionsAndVerifyRegionNum(MASTER, tableName,<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        0, 2, 5 * 2 - 2);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; currentRegionToServers =<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        MetaTableAccessor.getTableRegionsAndLocations(<a name="line.374"></a>
-<span class="sourceLineNo">375</span>            TEST_UTIL.getConnection(), tableName);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    List&lt;HRegionInfo&gt; initialRegions = new ArrayList&lt;HRegionInfo&gt;();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    for (Pair&lt;HRegionInfo, ServerName&gt; p : initialRegionToServers) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      initialRegions.add(p.getFirst());<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    }<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    List&lt;HRegionInfo&gt; currentRegions = new ArrayList&lt;HRegionInfo&gt;();<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    for (Pair&lt;HRegionInfo, ServerName&gt; p : currentRegionToServers) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      currentRegions.add(p.getFirst());<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    assertTrue(initialRegions.contains(mergedRegions.getFirst())); //this is the first region<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    assertTrue(initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        mergedRegions.getFirst(), 1))); //this is the replica of the first region<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    assertTrue(initialRegions.contains(mergedRegions.getSecond())); //this is the second region<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    assertTrue(initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.388"></a>
-<span class="sourceLineNo">389</span>        mergedRegions.getSecond(), 1))); //this is the replica of the second region<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    assertTrue(!initialRegions.contains(currentRegions.get(0))); //this is the new region<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    assertTrue(!initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        currentRegions.get(0), 1))); //replica of the new region<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    assertTrue(currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        currentRegions.get(0), 1))); //replica of the new region<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertTrue(!currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        mergedRegions.getFirst(), 1))); //replica of the merged region<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    assertTrue(!currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        mergedRegions.getSecond(), 1))); //replica of the merged region<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  }<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private PairOfSameType&lt;HRegionInfo&gt; mergeRegionsAndVerifyRegionNum(<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      HMaster master, TableName tablename,<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      int regionAnum, int regionBnum, int expectedRegionNum) throws Exception {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions =<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      requestMergeRegion(master, tablename, regionAnum, regionBnum);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    waitAndVerifyRegionNum(master, tablename, expectedRegionNum);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    return mergedRegions;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  }<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private PairOfSameType&lt;HRegionInfo&gt; requestMergeRegion(<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      HMaster master, TableName tablename,<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      int regionAnum, int regionBnum) throws Exception {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions = MetaTableAccessor<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        .getTableRegionsAndLocations(<a name="line.414"></a>
-<span class="sourceLineNo">415</span>            TEST_UTIL.getConnection(), tablename);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    HRegionInfo regionA = tableRegions.get(regionAnum).getFirst();<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    HRegionInfo regionB = tableRegions.get(regionBnum).getFirst();<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    ADMIN.mergeRegions(<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      regionA.getEncodedNameAsBytes(),<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      regionB.getEncodedNameAsBytes(), false);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    return new PairOfSameType&lt;HRegionInfo&gt;(regionA, regionB);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  }<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>  private void waitAndVerifyRegionNum(HMaster master, TableName tablename,<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      int expectedRegionNum) throws Exception {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegionsInMeta;<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    List&lt;HRegionInfo&gt; tableRegionsInMaster;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    long timeout = System.currentTimeMillis() + waitTime;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    while (System.currentTimeMillis() &lt; timeout) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      tableRegionsInMeta = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        TEST_UTIL.getConnection(), tablename);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      tableRegionsInMaster = master.getAssignmentManager().getRegionStates()<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          .getRegionsOfTable(tablename);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      if (tableRegionsInMeta.size() == expectedRegionNum<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          &amp;&amp; tableRegionsInMaster.size() == expectedRegionNum) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>        break;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      Thread.sleep(250);<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>    tableRegionsInMeta = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        TEST_UTIL.getConnection(), tablename);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    LOG.info("Regions after merge:" + Joiner.on(',').join(tableRegionsInMeta));<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    assertEquals(expectedRegionNum, tableRegionsInMeta.size());<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  private Table createTableAndLoadData(HMaster master, TableName tablename)<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      throws Exception {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    return createTableAndLoadData(master, tablename, INITIAL_REGION_NUM, 1);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private Table createTableAndLoadData(HMaster master, TableName tablename,<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      int numRegions, int replication) throws Exception {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    assertTrue("ROWSIZE must &gt; numregions:" + numRegions, ROWSIZE &gt; numRegions);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    byte[][] splitRows = new byte[numRegions - 1][];<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    for (int i = 0; i &lt; splitRows.length; i++) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      splitRows[i] = ROWS[(i + 1) * ROWSIZE / numRegions];<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>    Table table = TEST_UTIL.createTable(tablename, FAMILYNAME, splitRows);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    if (replication &gt; 1) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      HBaseTestingUtility.setReplicas(ADMIN, tablename, replication);<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    }<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    loadData(table);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    verifyRowCount(table, ROWSIZE);<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    // sleep here is an ugly hack to allow region transitions to finish<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    long timeout = System.currentTimeMillis() + waitTime;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    while (System.currentTimeMillis() &lt; timeout) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      tableRegions = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.471"></a>
-<span class="sourceLineNo">472</span>          TEST_UTIL.getConnection(), tablename);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      if (tableRegions.size() == numRegions * replication)<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        break;<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      Thread.sleep(250);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>    tableRegions = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        TEST_UTIL.getConnection(), tablename);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    LOG.info("Regions after load: " + Joiner.on(',').join(tableRegions));<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    assertEquals(numRegions * replication, tableRegions.size());<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    return table;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  }<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span>  private static byte[][] makeN(byte[] base, int n) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    byte[][] ret = new byte[n][];<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    for (int i = 0; i &lt; n; i++) {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      ret[i] = Bytes.add(base, Bytes.toBytes(String.format("%04d", i)));<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    }<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    return ret;<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>  private void loadData(Table table) throws IOException {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    for (int i = 0; i &lt; ROWSIZE; i++) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      Put put = new Put(ROWS[i]);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      put.addColumn(FAMILYNAME, QUALIFIER, Bytes.toBytes(i));<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      table.put(put);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    }<a name="line.498"></a>
-<span class="sourceLineNo">499</span>  }<a name="line.499"></a>
-<span class="sourceLineNo">500</span><a name="line.500"></a>
-<span class="sourceLineNo">501</span>  private void verifyRowCount(Table table, int expectedRegionNum)<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      throws IOException {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    ResultScanner scanner = table.getScanner(new Scan());<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    int rowCount = 0;<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    while (scanner.next() != null) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      rowCount++;<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    }<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    assertEquals(expectedRegionNum, rowCount);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    scanner.close();<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>  // Make it public so that JVMClusterUtil can access it.<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  public static class MyMaster extends HMaster {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    public MyMaster(Configuration conf, CoordinatedStateManager cp)<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      throws IOException, KeeperException,<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        InterruptedException {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      super(conf, cp);<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>    @Override<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    protected RSRpcServices createRpcServices() throws IOException {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      return new MyMasterRpcServices(this);<a name="line.522"></a>
+<span class="sourceLineNo">151</span>    verifyRowCount(table, ROWSIZE);<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    // Randomly choose one of the two merged regions<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    HRegionInfo hri = RandomUtils.nextBoolean() ?<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      mergedRegions.getFirst() : mergedRegions.getSecond();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    AssignmentManager am = cluster.getMaster().getAssignmentManager();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    RegionStates regionStates = am.getRegionStates();<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    long start = EnvironmentEdgeManager.currentTime();<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    while (!regionStates.isRegionInState(hri, State.MERGED)) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      assertFalse("Timed out in waiting one merged region to be in state MERGED",<a name="line.161"></a>
+<span class="sourceLineNo">162</span>        EnvironmentEdgeManager.currentTime() - start &gt; 60000);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      Thread.sleep(500);<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>    // We should not be able to assign it again<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    am.assign(hri, true);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    assertFalse("Merged region can't be assigned",<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      regionStates.isRegionInTransition(hri));<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    assertTrue(regionStates.isRegionInState(hri, State.MERGED));<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>    // We should not be able to unassign it either<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    am.unassign(hri, null);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    assertFalse("Merged region can't be unassigned",<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      regionStates.isRegionInTransition(hri));<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    assertTrue(regionStates.isRegionInState(hri, State.MERGED));<a name="line.176"></a>
+<span class="sourceLineNo">177</span><a name="line.177"></a>
+<span class="sourceLineNo">178</span>    table.close();<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>  /**<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * Not really restarting the master. Simulate it by clear of new region<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * state since it is not persisted, will be lost after master restarts.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   */<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @Test<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public void testMergeAndRestartingMaster() throws Exception {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    final TableName tableName = TableName.valueOf("testMergeAndRestartingMaster");<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>    // Create table and load data.<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    Table table = createTableAndLoadData(MASTER, tableName);<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>    try {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      MyMasterRpcServices.enabled.set(true);<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>      // Merge 1st and 2nd region<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1, INITIAL_REGION_NUM - 1);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    } finally {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      MyMasterRpcServices.enabled.set(false);<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>    table.close();<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>  @Test<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  public void testCleanMergeReference() throws Exception {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    LOG.info("Starting testCleanMergeReference");<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    ADMIN.enableCatalogJanitor(false);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    try {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      final TableName tableName =<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          TableName.valueOf("testCleanMergeReference");<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      // Create table and load data.<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      Table table = createTableAndLoadData(MASTER, tableName);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      // Merge 1st and 2nd region<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1,<a name="line.214"></a>
+<span class="sourceLineNo">215</span>          INITIAL_REGION_NUM - 1);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      verifyRowCount(table, ROWSIZE);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      table.close();<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>      List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions = MetaTableAccessor<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          .getTableRegionsAndLocations(MASTER.getConnection(), tableName);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      HRegionInfo mergedRegionInfo = tableRegions.get(0).getFirst();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      HTableDescriptor tableDescriptor = MASTER.getTableDescriptors().get(<a name="line.222"></a>
+<span class="sourceLineNo">223</span>          tableName);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      Result mergedRegionResult = MetaTableAccessor.getRegionResult(<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        MASTER.getConnection(), mergedRegionInfo.getRegionName());<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>      // contains merge reference in META<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.228"></a>
+<span class="sourceLineNo">229</span>          HConstants.MERGEA_QUALIFIER) != null);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.230"></a>
+<span class="sourceLineNo">231</span>          HConstants.MERGEB_QUALIFIER) != null);<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>      // merging regions' directory are in the file system all the same<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      PairOfSameType&lt;HRegionInfo&gt; p = MetaTableAccessor.getMergeRegions(mergedRegionResult);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      HRegionInfo regionA = p.getFirst();<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      HRegionInfo regionB = p.getSecond();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      FileSystem fs = MASTER.getMasterFileSystem().getFileSystem();<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      Path rootDir = MASTER.getMasterFileSystem().getRootDir();<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>      Path tabledir = FSUtils.getTableDir(rootDir, mergedRegionInfo.getTable());<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      Path regionAdir = new Path(tabledir, regionA.getEncodedName());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      Path regionBdir = new Path(tabledir, regionB.getEncodedName());<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      assertTrue(fs.exists(regionAdir));<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      assertTrue(fs.exists(regionBdir));<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>      HColumnDescriptor[] columnFamilies = tableDescriptor.getColumnFamilies();<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      HRegionFileSystem hrfs = new HRegionFileSystem(<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        TEST_UTIL.getConfiguration(), fs, tabledir, mergedRegionInfo);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      int count = 0;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        count += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      ADMIN.compactRegion(mergedRegionInfo.getRegionName());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      // clean up the merged region store files<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      // wait until merged region have reference file<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      long timeout = System.currentTimeMillis() + waitTime;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      int newcount = 0;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      while (System.currentTimeMillis() &lt; timeout) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          newcount += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        }<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        if(newcount &gt; count) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          break;<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        Thread.sleep(50);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      }<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      assertTrue(newcount &gt; count);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      List&lt;RegionServerThread&gt; regionServerThreads = TEST_UTIL.getHBaseCluster()<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          .getRegionServerThreads();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      for (RegionServerThread rs : regionServerThreads) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        CompactedHFilesDischarger cleaner = new CompactedHFilesDischarger(100, null,<a name="line.271"></a>
+<span class="sourceLineNo">272</span>            rs.getRegionServer(), false);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        cleaner.chore();<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        Thread.sleep(1000);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      while (System.currentTimeMillis() &lt; timeout) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        int newcount1 = 0;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>          newcount1 += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        if(newcount1 &lt;= 1) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          break;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        Thread.sleep(50);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      // run CatalogJanitor to clean merge references in hbase:meta and archive the<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      // files of merging regions<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      int cleaned = 0;<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      while (cleaned == 0) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        cleaned = ADMIN.runCatalogScan();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        LOG.debug("catalog janitor returned " + cleaned);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        Thread.sleep(50);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      }<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      assertFalse(regionAdir.toString(), fs.exists(regionAdir));<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      assertFalse(regionBdir.toString(), fs.exists(regionBdir));<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      assertTrue(cleaned &gt; 0);<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>      mergedRegionResult = MetaTableAccessor.getRegionResult(<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        TEST_UTIL.getConnection(), mergedRegionInfo.getRegionName());<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          HConstants.MERGEA_QUALIFIER) != null);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          HConstants.MERGEB_QUALIFIER) != null);<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>    } finally {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      ADMIN.enableCatalogJanitor(true);<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><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /**<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * This test tests 1, merging region not online;<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * 2, merging same two regions; 3, merging unknown regions.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * They are in one test case so that we don't have to create<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * many tables, and these tests are simple.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   */<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  @Test<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public void testMerge() throws Exception {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    LOG.info("Starting testMerge");<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    final TableName tableName = TableName.valueOf("testMerge");<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>    try {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      // Create table and load data.<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      Table table = createTableAndLoadData(MASTER, tableName);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      RegionStates regionStates = MASTER.getAssignmentManager().getRegionStates();<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      List&lt;HRegionInfo&gt; regions = regionStates.getRegionsOfTable(tableName);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      // Fake offline one region<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      HRegionInfo a = regions.get(0);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      HRegionInfo b = regions.get(1);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      regionStates.regionOffline(a);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      try {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        // Merge offline region. Region a is offline here<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        ADMIN.mergeRegions(a.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), false);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>        fail("Offline regions should not be able to merge");<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      } catch (IOException ie) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        System.out.println(ie);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        assertTrue("Exception should mention regions not online",<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          StringUtils.stringifyException(ie).contains("regions not online")<a name="line.337"></a>
+<span class="sourceLineNo">338</span>            &amp;&amp; ie instanceof MergeRegionException);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      try {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        // Merge the same region: b and b.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        ADMIN.mergeRegions(b.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), true);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        fail("A region should not be able to merge with itself, even forcifully");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      } catch (IOException ie) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        assertTrue("Exception should mention regions not online",<a name="line.345"></a>
+<span class="sourceLineNo">346</span>          StringUtils.stringifyException(ie).contains("region to itself")<a name="line.346"></a>
+<span class="sourceLineNo">347</span>            &amp;&amp; ie instanceof MergeRegionException);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      try {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        // Merge unknown regions<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        ADMIN.mergeRegions(Bytes.toBytes("-f1"), Bytes.toBytes("-f2"), true);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        fail("Unknown region could not be merged");<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      } catch (IOException ie) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        assertTrue("UnknownRegionException should be thrown",<a name="line.354"></a>
+<span class="sourceLineNo">355</span>          ie instanceof UnknownRegionException);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      table.close();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    } finally {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      TEST_UTIL.deleteTable(tableName);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  @Test<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  public void testMergeWithReplicas() throws Exception {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    final TableName tableName = TableName.valueOf("testMergeWithReplicas");<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    // Create table and load data.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    createTableAndLoadData(MASTER, tableName, 5, 2);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; initialRegionToServers =<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        MetaTableAccessor.getTableRegionsAndLocations(<a name="line.369"></a>
+<span class="sourceLineNo">370</span>            TEST_UTIL.getConnection(), tableName);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    // Merge 1st and 2nd region<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions = mergeRegionsAndVerifyRegionNum(MASTER, tableName,<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        0, 2, 5 * 2 - 2);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; currentRegionToServers =<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        MetaTableAccessor.getTableRegionsAndLocations(<a name="line.375"></a>
+<span class="sourceLineNo">376</span>            TEST_UTIL.getConnection(), tableName);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    List&lt;HRegionInfo&gt; initialRegions = new ArrayList&lt;HRegionInfo&gt;();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    for (Pair&lt;HRegionInfo, ServerName&gt; p : initialRegionToServers) {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      initialRegions.add(p.getFirst());<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    List&lt;HRegionInfo&gt; currentRegions = new ArrayList&lt;HRegionInfo&gt;();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    for (Pair&lt;HRegionInfo, ServerName&gt; p : currentRegionToServers) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      currentRegions.add(p.getFirst());<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    assertTrue(initialRegions.contains(mergedRegions.getFirst())); //this is the first region<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    assertTrue(initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        mergedRegions.getFirst(), 1))); //this is the replica of the first region<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    assertTrue(initialRegions.contains(mergedRegions.getSecond())); //this is the second region<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    assertTrue(initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        mergedRegions.getSecond(), 1))); //this is the replica of the second region<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    assertTrue(!initialRegions.contains(currentRegions.get(0))); //this is the new region<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    assertTrue(!initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        currentRegions.get(0), 1))); //replica of the new region<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    assertTrue(currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        currentRegions.get(0), 1))); //replica of the new region<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertTrue(!currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        mergedRegions.getFirst(), 1))); //replica of the merged region<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    assertTrue(!currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        mergedRegions.getSecond(), 1))); //replica of the merged region<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>  private PairOfSameType&lt;HRegionInfo&gt; mergeRegionsAndVerifyRegionNum(<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      HMaster master, TableName tablename,<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      int regionAnum, int regionBnum, int expectedRegionNum) throws Exception {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions =<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      requestMergeRegion(master, tablename, regionAnum, regionBnum);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    waitAndVerifyRegionNum(master, tablename, expectedRegionNum);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    return mergedRegions;<a name="line.408"></a>
+<span class="sourceLineNo">409</span>  }<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>  private PairOfSameType&lt;HRegionInfo&gt; requestMergeRegion(<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      HMaster master, TableName tablename,<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      int regionAnum, int regionBnum) throws Exception {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions = MetaTableAccessor<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        .getTableRegionsAndLocations(<a name="line.415"></a>
+<span class="sourceLineNo">416</span>            TEST_UTIL.getConnection(), tablename);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    HRegionInfo regionA = tableRegions.get(regionAnum).getFirst();<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    HRegionInfo regionB = tableRegions.get(regionBnum).getFirst();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    ADMIN.mergeRegions(<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      regionA.getEncodedNameAsBytes(),<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      regionB.getEncodedNameAsBytes(), false);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    return new PairOfSameType&lt;HRegionInfo&gt;(regionA, regionB);<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>  private void waitAndVerifyRegionNum(HMaster master, TableName tablename,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      int expectedRegionNum) throws Exception {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegionsInMeta;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    List&lt;HRegionInfo&gt; tableRegionsInMaster;<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    long timeout = System.currentTimeMillis() + waitTime;<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    while (System.currentTimeMillis() &lt; timeout) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      tableRegionsInMeta = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.431"></a>
+<span class="sourceLineNo">432</span>        TEST_UTIL.getConnection(), tablename);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      tableRegionsInMaster = master.getAssignmentManager().getRegionStates()<a name="line.433"></a>
+<span class="sourceLineNo">434</span>          .getRegionsOfTable(tablename);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      if (tableRegionsInMeta.size() == expectedRegionNum<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          &amp;&amp; tableRegionsInMaster.size() == expectedRegionNum) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        break;<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      Thread.sleep(250);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>    tableRegionsInMeta = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        TEST_UTIL.getConnection(), tablename);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    LOG.info("Regions after merge:" + Joiner.on(',').join(tableRegionsInMeta));<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    assertEquals(expectedRegionNum, tableRegionsInMeta.size());<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  private Table createTableAndLoadData(HMaster master, TableName tablename)<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      throws Exception {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    return createTableAndLoadData(master, tablename, INITIAL_REGION_NUM, 1);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  }<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>  private Table createTableAndLoadData(HMaster master, TableName tablename,<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      int numRegions, int replication) throws Exception {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertTrue("ROWSIZE must &gt; numregions:" + numRegions, ROWSIZE &gt; numRegions);<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    byte[][] splitRows = new byte[numRegions - 1][];<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    for (int i = 0; i &lt; splitRows.length; i++) {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      splitRows[i] = ROWS[(i + 1) * ROWSIZE / numRegions];<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    }<a name="line.459"></a>
+<span class="sourceLineNo">460</span><a name="line.460"></a>
+<span class="sourceLineNo">461</span>    Table table = TEST_UTIL.createTable(tablename, FAMILYNAME, splitRows);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    LOG.info("Created " + table.getName());<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    if (replication &gt; 1) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      HBaseTestingUtility.setReplicas(ADMIN, tablename, replication);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      LOG.info("Set replication of " + replication + " on " + table.getName());<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    loadData(table);<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    LOG.info("Loaded " + table.getName());<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    verifyRowCount(table, ROWSIZE);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    LOG.info("Verified " + table.getName());<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>    // sleep here is an ugly hack to allow region transitions to finish<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    long timeout = System.currentTimeMillis() + waitTime;<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    while (System.currentTimeMillis() &lt; timeout) {<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      tableRegions = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.476"></a>
+<span class="sourceLineNo">477</span>          TEST_UTIL.getConnection(), tablename);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      if (tableRegions.size() == numRegions * replication)<a name="line.478"></a>
+<span class="sourceLineNo">479</span>        break;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      Thread.sleep(250);<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    LOG.info("Getting regions of " + table.getName());<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    tableRegions = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.483"></a>
+<span class="sourceLineNo">484</span>        TEST_UTIL.getConnection(), tablename);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    LOG.info("Regions after load: " + Joiner.on(',').join(tableRegions));<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    assertEquals(numRegions * replication, tableRegions.size());<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    return table;<a name="line.487"></a>
+<span class="sourceLineNo">488</span>  }<a name="line.488"></a>
+<span class="sourceLineNo">489</span><a name="line.489"></a>
+<span class="sourceLineNo">490</span>  private static byte[][] makeN(byte[] base, int n) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    byte[][] ret = new byte[n][];<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    for (int i = 0; i &lt; n; i++) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>      ret[i] = Bytes.add(base, Bytes.toBytes(String.format("%04d", i)));<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    return ret;<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>  private void loadData(Table table) throws IOException {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    for (int i = 0; i &lt; ROWSIZE; i++) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      Put put = new P

<TRUNCATED>

[07/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/xref-test/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html b/xref-test/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html
index 3a2e696..b6783ba 100644
--- a/xref-test/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html
+++ b/xref-test/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html
@@ -66,274 +66,313 @@
 <a class="jxr_linenumber" name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.CountDownLatch;
 <a class="jxr_linenumber" name="57" href="#57">57</a>  
 <a class="jxr_linenumber" name="58" href="#58">58</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertEquals;
-<a class="jxr_linenumber" name="59" href="#59">59</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertNotEquals;
-<a class="jxr_linenumber" name="60" href="#60">60</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
-<a class="jxr_linenumber" name="61" href="#61">61</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyObject;
-<a class="jxr_linenumber" name="62" href="#62">62</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.eq;
-<a class="jxr_linenumber" name="63" href="#63">63</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doAnswer;
-<a class="jxr_linenumber" name="64" href="#64">64</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.mock;
-<a class="jxr_linenumber" name="65" href="#65">65</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.timeout;
-<a class="jxr_linenumber" name="66" href="#66">66</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.verify;
-<a class="jxr_linenumber" name="67" href="#67">67</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.when;
-<a class="jxr_linenumber" name="68" href="#68">68</a>  
-<a class="jxr_linenumber" name="69" href="#69">69</a>  @Category({RPCTests.<strong class="jxr_keyword">class</strong>, SmallTests.<strong class="jxr_keyword">class</strong>})
-<a class="jxr_linenumber" name="70" href="#70">70</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html">TestSimpleRpcScheduler</a> {
-<a class="jxr_linenumber" name="71" href="#71">71</a>    @Rule <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> TestRule timeout = CategoryBasedTimeout.builder().withTimeout(<strong class="jxr_keyword">this</strong>.getClass()).
-<a class="jxr_linenumber" name="72" href="#72">72</a>        withLookingForStuckThread(<strong class="jxr_keyword">true</strong>).build();
-<a class="jxr_linenumber" name="73" href="#73">73</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(TestSimpleRpcScheduler.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="74" href="#74">74</a>  
-<a class="jxr_linenumber" name="75" href="#75">75</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> RpcScheduler.Context CONTEXT = <strong class="jxr_keyword">new</strong> RpcScheduler.Context() {
-<a class="jxr_linenumber" name="76" href="#76">76</a>      @Override
-<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">public</strong> InetSocketAddress getListenerAddress() {
-<a class="jxr_linenumber" name="78" href="#78">78</a>        <strong class="jxr_keyword">return</strong> InetSocketAddress.createUnresolved(<span class="jxr_string">"127.0.0.1"</span>, 1000);
-<a class="jxr_linenumber" name="79" href="#79">79</a>      }
-<a class="jxr_linenumber" name="80" href="#80">80</a>    };
-<a class="jxr_linenumber" name="81" href="#81">81</a>    <strong class="jxr_keyword">private</strong> Configuration conf;
-<a class="jxr_linenumber" name="82" href="#82">82</a>  
-<a class="jxr_linenumber" name="83" href="#83">83</a>    @Before
-<a class="jxr_linenumber" name="84" href="#84">84</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() {
-<a class="jxr_linenumber" name="85" href="#85">85</a>      conf = HBaseConfiguration.create();
-<a class="jxr_linenumber" name="86" href="#86">86</a>    }
-<a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>    @Test
-<a class="jxr_linenumber" name="89" href="#89">89</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testBasic() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
-<a class="jxr_linenumber" name="90" href="#90">90</a>      PriorityFunction qosFunction = mock(PriorityFunction.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="91" href="#91">91</a>      RpcScheduler scheduler = <strong class="jxr_keyword">new</strong> SimpleRpcScheduler(
-<a class="jxr_linenumber" name="92" href="#92">92</a>          conf, 10, 0, 0, qosFunction, 0);
-<a class="jxr_linenumber" name="93" href="#93">93</a>      scheduler.init(CONTEXT);
-<a class="jxr_linenumber" name="94" href="#94">94</a>      scheduler.start();
-<a class="jxr_linenumber" name="95" href="#95">95</a>      CallRunner task = createMockTask();
-<a class="jxr_linenumber" name="96" href="#96">96</a>      task.setStatus(<strong class="jxr_keyword">new</strong> MonitoredRPCHandlerImpl());
-<a class="jxr_linenumber" name="97" href="#97">97</a>      scheduler.dispatch(task);
-<a class="jxr_linenumber" name="98" href="#98">98</a>      verify(task, timeout(1000)).run();
-<a class="jxr_linenumber" name="99" href="#99">99</a>      scheduler.stop();
-<a class="jxr_linenumber" name="100" href="#100">100</a>   }
-<a class="jxr_linenumber" name="101" href="#101">101</a> 
-<a class="jxr_linenumber" name="102" href="#102">102</a>   @Test
-<a class="jxr_linenumber" name="103" href="#103">103</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testHandlerIsolation() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
-<a class="jxr_linenumber" name="104" href="#104">104</a>     CallRunner generalTask = createMockTask();
-<a class="jxr_linenumber" name="105" href="#105">105</a>     CallRunner priorityTask = createMockTask();
-<a class="jxr_linenumber" name="106" href="#106">106</a>     CallRunner replicationTask = createMockTask();
-<a class="jxr_linenumber" name="107" href="#107">107</a>     List&lt;CallRunner&gt; tasks = ImmutableList.of(
-<a class="jxr_linenumber" name="108" href="#108">108</a>         generalTask,
-<a class="jxr_linenumber" name="109" href="#109">109</a>         priorityTask,
-<a class="jxr_linenumber" name="110" href="#110">110</a>         replicationTask);
-<a class="jxr_linenumber" name="111" href="#111">111</a>     Map&lt;CallRunner, Integer&gt; qos = ImmutableMap.of(
-<a class="jxr_linenumber" name="112" href="#112">112</a>         generalTask, 0,
-<a class="jxr_linenumber" name="113" href="#113">113</a>         priorityTask, HConstants.HIGH_QOS + 1,
-<a class="jxr_linenumber" name="114" href="#114">114</a>         replicationTask, HConstants.REPLICATION_QOS);
-<a class="jxr_linenumber" name="115" href="#115">115</a>     PriorityFunction qosFunction = mock(PriorityFunction.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="116" href="#116">116</a>     <strong class="jxr_keyword">final</strong> Map&lt;CallRunner, Thread&gt; handlerThreads = Maps.newHashMap();
-<a class="jxr_linenumber" name="117" href="#117">117</a>     <strong class="jxr_keyword">final</strong> CountDownLatch countDownLatch = <strong class="jxr_keyword">new</strong> CountDownLatch(tasks.size());
-<a class="jxr_linenumber" name="118" href="#118">118</a>     Answer&lt;Void&gt; answerToRun = <strong class="jxr_keyword">new</strong> Answer&lt;Void&gt;() {
-<a class="jxr_linenumber" name="119" href="#119">119</a>       @Override
-<a class="jxr_linenumber" name="120" href="#120">120</a>       <strong class="jxr_keyword">public</strong> Void answer(InvocationOnMock invocationOnMock) <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="121" href="#121">121</a>         <strong class="jxr_keyword">synchronized</strong> (handlerThreads) {
-<a class="jxr_linenumber" name="122" href="#122">122</a>           handlerThreads.put(
-<a class="jxr_linenumber" name="123" href="#123">123</a>               (CallRunner) invocationOnMock.getMock(),
-<a class="jxr_linenumber" name="124" href="#124">124</a>               Thread.currentThread());
-<a class="jxr_linenumber" name="125" href="#125">125</a>         }
-<a class="jxr_linenumber" name="126" href="#126">126</a>         countDownLatch.countDown();
-<a class="jxr_linenumber" name="127" href="#127">127</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="128" href="#128">128</a>       }
-<a class="jxr_linenumber" name="129" href="#129">129</a>     };
-<a class="jxr_linenumber" name="130" href="#130">130</a>     <strong class="jxr_keyword">for</strong> (CallRunner task : tasks) {
-<a class="jxr_linenumber" name="131" href="#131">131</a>       task.setStatus(<strong class="jxr_keyword">new</strong> MonitoredRPCHandlerImpl());
-<a class="jxr_linenumber" name="132" href="#132">132</a>       doAnswer(answerToRun).when(task).run();
-<a class="jxr_linenumber" name="133" href="#133">133</a>     }
-<a class="jxr_linenumber" name="134" href="#134">134</a> 
-<a class="jxr_linenumber" name="135" href="#135">135</a>     RpcScheduler scheduler = <strong class="jxr_keyword">new</strong> SimpleRpcScheduler(
-<a class="jxr_linenumber" name="136" href="#136">136</a>         conf, 1, 1 ,1, qosFunction, HConstants.HIGH_QOS);
-<a class="jxr_linenumber" name="137" href="#137">137</a>     scheduler.init(CONTEXT);
-<a class="jxr_linenumber" name="138" href="#138">138</a>     scheduler.start();
-<a class="jxr_linenumber" name="139" href="#139">139</a>     <strong class="jxr_keyword">for</strong> (CallRunner task : tasks) {
-<a class="jxr_linenumber" name="140" href="#140">140</a>       when(qosFunction.getPriority((RPCProtos.RequestHeader) anyObject(),
-<a class="jxr_linenumber" name="141" href="#141">141</a>         (Message) anyObject(), (User) anyObject()))
-<a class="jxr_linenumber" name="142" href="#142">142</a>           .thenReturn(qos.get(task));
-<a class="jxr_linenumber" name="143" href="#143">143</a>       scheduler.dispatch(task);
-<a class="jxr_linenumber" name="144" href="#144">144</a>     }
-<a class="jxr_linenumber" name="145" href="#145">145</a>     <strong class="jxr_keyword">for</strong> (CallRunner task : tasks) {
-<a class="jxr_linenumber" name="146" href="#146">146</a>       verify(task, timeout(1000)).run();
-<a class="jxr_linenumber" name="147" href="#147">147</a>     }
-<a class="jxr_linenumber" name="148" href="#148">148</a>     scheduler.stop();
-<a class="jxr_linenumber" name="149" href="#149">149</a> 
-<a class="jxr_linenumber" name="150" href="#150">150</a>     <em class="jxr_comment">// Tests that these requests are handled by three distinct threads.</em>
-<a class="jxr_linenumber" name="151" href="#151">151</a>     countDownLatch.await();
-<a class="jxr_linenumber" name="152" href="#152">152</a>     assertEquals(3, ImmutableSet.copyOf(handlerThreads.values()).size());
-<a class="jxr_linenumber" name="153" href="#153">153</a>   }
-<a class="jxr_linenumber" name="154" href="#154">154</a> 
-<a class="jxr_linenumber" name="155" href="#155">155</a>   <strong class="jxr_keyword">private</strong> CallRunner createMockTask() {
-<a class="jxr_linenumber" name="156" href="#156">156</a>     Call call = mock(Call.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="157" href="#157">157</a>     CallRunner task = mock(CallRunner.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="158" href="#158">158</a>     when(task.getCall()).thenReturn(call);
-<a class="jxr_linenumber" name="159" href="#159">159</a>     <strong class="jxr_keyword">return</strong> task;
-<a class="jxr_linenumber" name="160" href="#160">160</a>   }
-<a class="jxr_linenumber" name="161" href="#161">161</a> 
-<a class="jxr_linenumber" name="162" href="#162">162</a>   @Test
-<a class="jxr_linenumber" name="163" href="#163">163</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testRpcScheduler() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="164" href="#164">164</a>     testRpcScheduler(SimpleRpcScheduler.CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE);
-<a class="jxr_linenumber" name="165" href="#165">165</a>     testRpcScheduler(SimpleRpcScheduler.CALL_QUEUE_TYPE_FIFO_CONF_VALUE);
-<a class="jxr_linenumber" name="166" href="#166">166</a>   }
-<a class="jxr_linenumber" name="167" href="#167">167</a> 
-<a class="jxr_linenumber" name="168" href="#168">168</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> testRpcScheduler(<strong class="jxr_keyword">final</strong> String queueType) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="169" href="#169">169</a>     Configuration schedConf = HBaseConfiguration.create();
-<a class="jxr_linenumber" name="170" href="#170">170</a>     schedConf.set(SimpleRpcScheduler.CALL_QUEUE_TYPE_CONF_KEY, queueType);
-<a class="jxr_linenumber" name="171" href="#171">171</a> 
-<a class="jxr_linenumber" name="172" href="#172">172</a>     PriorityFunction priority = mock(PriorityFunction.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="173" href="#173">173</a>     when(priority.getPriority(any(RequestHeader.<strong class="jxr_keyword">class</strong>),
-<a class="jxr_linenumber" name="174" href="#174">174</a>       any(Message.<strong class="jxr_keyword">class</strong>), any(User.<strong class="jxr_keyword">class</strong>)))
-<a class="jxr_linenumber" name="175" href="#175">175</a>       .thenReturn(HConstants.NORMAL_QOS);
-<a class="jxr_linenumber" name="176" href="#176">176</a> 
-<a class="jxr_linenumber" name="177" href="#177">177</a>     RpcScheduler scheduler = <strong class="jxr_keyword">new</strong> SimpleRpcScheduler(schedConf, 1, 1, 1, priority,
-<a class="jxr_linenumber" name="178" href="#178">178</a>                                                     HConstants.QOS_THRESHOLD);
-<a class="jxr_linenumber" name="179" href="#179">179</a>     <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="180" href="#180">180</a>       scheduler.start();
-<a class="jxr_linenumber" name="181" href="#181">181</a> 
-<a class="jxr_linenumber" name="182" href="#182">182</a>       CallRunner smallCallTask = mock(CallRunner.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="183" href="#183">183</a>       RpcServer.Call smallCall = mock(RpcServer.Call.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="184" href="#184">184</a>       RequestHeader smallHead = RequestHeader.newBuilder().setCallId(1).build();
-<a class="jxr_linenumber" name="185" href="#185">185</a>       when(smallCallTask.getCall()).thenReturn(smallCall);
-<a class="jxr_linenumber" name="186" href="#186">186</a>       when(smallCall.getHeader()).thenReturn(smallHead);
-<a class="jxr_linenumber" name="187" href="#187">187</a> 
-<a class="jxr_linenumber" name="188" href="#188">188</a>       CallRunner largeCallTask = mock(CallRunner.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="189" href="#189">189</a>       RpcServer.Call largeCall = mock(RpcServer.Call.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="190" href="#190">190</a>       RequestHeader largeHead = RequestHeader.newBuilder().setCallId(50).build();
-<a class="jxr_linenumber" name="191" href="#191">191</a>       when(largeCallTask.getCall()).thenReturn(largeCall);
-<a class="jxr_linenumber" name="192" href="#192">192</a>       when(largeCall.getHeader()).thenReturn(largeHead);
-<a class="jxr_linenumber" name="193" href="#193">193</a> 
-<a class="jxr_linenumber" name="194" href="#194">194</a>       CallRunner hugeCallTask = mock(CallRunner.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="195" href="#195">195</a>       RpcServer.Call hugeCall = mock(RpcServer.Call.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="196" href="#196">196</a>       RequestHeader hugeHead = RequestHeader.newBuilder().setCallId(100).build();
-<a class="jxr_linenumber" name="197" href="#197">197</a>       when(hugeCallTask.getCall()).thenReturn(hugeCall);
-<a class="jxr_linenumber" name="198" href="#198">198</a>       when(hugeCall.getHeader()).thenReturn(hugeHead);
-<a class="jxr_linenumber" name="199" href="#199">199</a> 
-<a class="jxr_linenumber" name="200" href="#200">200</a>       when(priority.getDeadline(eq(smallHead), any(Message.<strong class="jxr_keyword">class</strong>))).thenReturn(0L);
-<a class="jxr_linenumber" name="201" href="#201">201</a>       when(priority.getDeadline(eq(largeHead), any(Message.<strong class="jxr_keyword">class</strong>))).thenReturn(50L);
-<a class="jxr_linenumber" name="202" href="#202">202</a>       when(priority.getDeadline(eq(hugeHead), any(Message.<strong class="jxr_keyword">class</strong>))).thenReturn(100L);
-<a class="jxr_linenumber" name="203" href="#203">203</a> 
-<a class="jxr_linenumber" name="204" href="#204">204</a>       <strong class="jxr_keyword">final</strong> ArrayList&lt;Integer&gt; work = <strong class="jxr_keyword">new</strong> ArrayList&lt;Integer&gt;();
-<a class="jxr_linenumber" name="205" href="#205">205</a>       doAnswerTaskExecution(smallCallTask, work, 10, 250);
-<a class="jxr_linenumber" name="206" href="#206">206</a>       doAnswerTaskExecution(largeCallTask, work, 50, 250);
-<a class="jxr_linenumber" name="207" href="#207">207</a>       doAnswerTaskExecution(hugeCallTask, work, 100, 250);
-<a class="jxr_linenumber" name="208" href="#208">208</a> 
-<a class="jxr_linenumber" name="209" href="#209">209</a>       scheduler.dispatch(smallCallTask);
-<a class="jxr_linenumber" name="210" href="#210">210</a>       scheduler.dispatch(smallCallTask);
+<a class="jxr_linenumber" name="59" href="#59">59</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertFalse;
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertNotEquals;
+<a class="jxr_linenumber" name="61" href="#61">61</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertTrue;
+<a class="jxr_linenumber" name="62" href="#62">62</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
+<a class="jxr_linenumber" name="63" href="#63">63</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyObject;
+<a class="jxr_linenumber" name="64" href="#64">64</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.eq;
+<a class="jxr_linenumber" name="65" href="#65">65</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doAnswer;
+<a class="jxr_linenumber" name="66" href="#66">66</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.mock;
+<a class="jxr_linenumber" name="67" href="#67">67</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.timeout;
+<a class="jxr_linenumber" name="68" href="#68">68</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.verify;
+<a class="jxr_linenumber" name="69" href="#69">69</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.when;
+<a class="jxr_linenumber" name="70" href="#70">70</a>  
+<a class="jxr_linenumber" name="71" href="#71">71</a>  @Category({RPCTests.<strong class="jxr_keyword">class</strong>, SmallTests.<strong class="jxr_keyword">class</strong>})
+<a class="jxr_linenumber" name="72" href="#72">72</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html">TestSimpleRpcScheduler</a> {
+<a class="jxr_linenumber" name="73" href="#73">73</a>    @Rule <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> TestRule timeout = CategoryBasedTimeout.builder().withTimeout(<strong class="jxr_keyword">this</strong>.getClass()).
+<a class="jxr_linenumber" name="74" href="#74">74</a>        withLookingForStuckThread(<strong class="jxr_keyword">true</strong>).build();
+<a class="jxr_linenumber" name="75" href="#75">75</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(TestSimpleRpcScheduler.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="76" href="#76">76</a>  
+<a class="jxr_linenumber" name="77" href="#77">77</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> RpcScheduler.Context CONTEXT = <strong class="jxr_keyword">new</strong> RpcScheduler.Context() {
+<a class="jxr_linenumber" name="78" href="#78">78</a>      @Override
+<a class="jxr_linenumber" name="79" href="#79">79</a>      <strong class="jxr_keyword">public</strong> InetSocketAddress getListenerAddress() {
+<a class="jxr_linenumber" name="80" href="#80">80</a>        <strong class="jxr_keyword">return</strong> InetSocketAddress.createUnresolved(<span class="jxr_string">"127.0.0.1"</span>, 1000);
+<a class="jxr_linenumber" name="81" href="#81">81</a>      }
+<a class="jxr_linenumber" name="82" href="#82">82</a>    };
+<a class="jxr_linenumber" name="83" href="#83">83</a>    <strong class="jxr_keyword">private</strong> Configuration conf;
+<a class="jxr_linenumber" name="84" href="#84">84</a>  
+<a class="jxr_linenumber" name="85" href="#85">85</a>    @Before
+<a class="jxr_linenumber" name="86" href="#86">86</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() {
+<a class="jxr_linenumber" name="87" href="#87">87</a>      conf = HBaseConfiguration.create();
+<a class="jxr_linenumber" name="88" href="#88">88</a>    }
+<a class="jxr_linenumber" name="89" href="#89">89</a>  
+<a class="jxr_linenumber" name="90" href="#90">90</a>    @Test
+<a class="jxr_linenumber" name="91" href="#91">91</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testBasic() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
+<a class="jxr_linenumber" name="92" href="#92">92</a>      PriorityFunction qosFunction = mock(PriorityFunction.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="93" href="#93">93</a>      RpcScheduler scheduler = <strong class="jxr_keyword">new</strong> SimpleRpcScheduler(
+<a class="jxr_linenumber" name="94" href="#94">94</a>          conf, 10, 0, 0, qosFunction, 0);
+<a class="jxr_linenumber" name="95" href="#95">95</a>      scheduler.init(CONTEXT);
+<a class="jxr_linenumber" name="96" href="#96">96</a>      scheduler.start();
+<a class="jxr_linenumber" name="97" href="#97">97</a>      CallRunner task = createMockTask();
+<a class="jxr_linenumber" name="98" href="#98">98</a>      task.setStatus(<strong class="jxr_keyword">new</strong> MonitoredRPCHandlerImpl());
+<a class="jxr_linenumber" name="99" href="#99">99</a>      scheduler.dispatch(task);
+<a class="jxr_linenumber" name="100" href="#100">100</a>     verify(task, timeout(1000)).run();
+<a class="jxr_linenumber" name="101" href="#101">101</a>     scheduler.stop();
+<a class="jxr_linenumber" name="102" href="#102">102</a>   }
+<a class="jxr_linenumber" name="103" href="#103">103</a> 
+<a class="jxr_linenumber" name="104" href="#104">104</a>   @Test
+<a class="jxr_linenumber" name="105" href="#105">105</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testHandlerIsolation() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
+<a class="jxr_linenumber" name="106" href="#106">106</a>     CallRunner generalTask = createMockTask();
+<a class="jxr_linenumber" name="107" href="#107">107</a>     CallRunner priorityTask = createMockTask();
+<a class="jxr_linenumber" name="108" href="#108">108</a>     CallRunner replicationTask = createMockTask();
+<a class="jxr_linenumber" name="109" href="#109">109</a>     List&lt;CallRunner&gt; tasks = ImmutableList.of(
+<a class="jxr_linenumber" name="110" href="#110">110</a>         generalTask,
+<a class="jxr_linenumber" name="111" href="#111">111</a>         priorityTask,
+<a class="jxr_linenumber" name="112" href="#112">112</a>         replicationTask);
+<a class="jxr_linenumber" name="113" href="#113">113</a>     Map&lt;CallRunner, Integer&gt; qos = ImmutableMap.of(
+<a class="jxr_linenumber" name="114" href="#114">114</a>         generalTask, 0,
+<a class="jxr_linenumber" name="115" href="#115">115</a>         priorityTask, HConstants.HIGH_QOS + 1,
+<a class="jxr_linenumber" name="116" href="#116">116</a>         replicationTask, HConstants.REPLICATION_QOS);
+<a class="jxr_linenumber" name="117" href="#117">117</a>     PriorityFunction qosFunction = mock(PriorityFunction.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="118" href="#118">118</a>     <strong class="jxr_keyword">final</strong> Map&lt;CallRunner, Thread&gt; handlerThreads = Maps.newHashMap();
+<a class="jxr_linenumber" name="119" href="#119">119</a>     <strong class="jxr_keyword">final</strong> CountDownLatch countDownLatch = <strong class="jxr_keyword">new</strong> CountDownLatch(tasks.size());
+<a class="jxr_linenumber" name="120" href="#120">120</a>     Answer&lt;Void&gt; answerToRun = <strong class="jxr_keyword">new</strong> Answer&lt;Void&gt;() {
+<a class="jxr_linenumber" name="121" href="#121">121</a>       @Override
+<a class="jxr_linenumber" name="122" href="#122">122</a>       <strong class="jxr_keyword">public</strong> Void answer(InvocationOnMock invocationOnMock) <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="123" href="#123">123</a>         <strong class="jxr_keyword">synchronized</strong> (handlerThreads) {
+<a class="jxr_linenumber" name="124" href="#124">124</a>           handlerThreads.put(
+<a class="jxr_linenumber" name="125" href="#125">125</a>               (CallRunner) invocationOnMock.getMock(),
+<a class="jxr_linenumber" name="126" href="#126">126</a>               Thread.currentThread());
+<a class="jxr_linenumber" name="127" href="#127">127</a>         }
+<a class="jxr_linenumber" name="128" href="#128">128</a>         countDownLatch.countDown();
+<a class="jxr_linenumber" name="129" href="#129">129</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="130" href="#130">130</a>       }
+<a class="jxr_linenumber" name="131" href="#131">131</a>     };
+<a class="jxr_linenumber" name="132" href="#132">132</a>     <strong class="jxr_keyword">for</strong> (CallRunner task : tasks) {
+<a class="jxr_linenumber" name="133" href="#133">133</a>       task.setStatus(<strong class="jxr_keyword">new</strong> MonitoredRPCHandlerImpl());
+<a class="jxr_linenumber" name="134" href="#134">134</a>       doAnswer(answerToRun).when(task).run();
+<a class="jxr_linenumber" name="135" href="#135">135</a>     }
+<a class="jxr_linenumber" name="136" href="#136">136</a> 
+<a class="jxr_linenumber" name="137" href="#137">137</a>     RpcScheduler scheduler = <strong class="jxr_keyword">new</strong> SimpleRpcScheduler(
+<a class="jxr_linenumber" name="138" href="#138">138</a>         conf, 1, 1 ,1, qosFunction, HConstants.HIGH_QOS);
+<a class="jxr_linenumber" name="139" href="#139">139</a>     scheduler.init(CONTEXT);
+<a class="jxr_linenumber" name="140" href="#140">140</a>     scheduler.start();
+<a class="jxr_linenumber" name="141" href="#141">141</a>     <strong class="jxr_keyword">for</strong> (CallRunner task : tasks) {
+<a class="jxr_linenumber" name="142" href="#142">142</a>       when(qosFunction.getPriority((RPCProtos.RequestHeader) anyObject(),
+<a class="jxr_linenumber" name="143" href="#143">143</a>         (Message) anyObject(), (User) anyObject()))
+<a class="jxr_linenumber" name="144" href="#144">144</a>           .thenReturn(qos.get(task));
+<a class="jxr_linenumber" name="145" href="#145">145</a>       scheduler.dispatch(task);
+<a class="jxr_linenumber" name="146" href="#146">146</a>     }
+<a class="jxr_linenumber" name="147" href="#147">147</a>     <strong class="jxr_keyword">for</strong> (CallRunner task : tasks) {
+<a class="jxr_linenumber" name="148" href="#148">148</a>       verify(task, timeout(1000)).run();
+<a class="jxr_linenumber" name="149" href="#149">149</a>     }
+<a class="jxr_linenumber" name="150" href="#150">150</a>     scheduler.stop();
+<a class="jxr_linenumber" name="151" href="#151">151</a> 
+<a class="jxr_linenumber" name="152" href="#152">152</a>     <em class="jxr_comment">// Tests that these requests are handled by three distinct threads.</em>
+<a class="jxr_linenumber" name="153" href="#153">153</a>     countDownLatch.await();
+<a class="jxr_linenumber" name="154" href="#154">154</a>     assertEquals(3, ImmutableSet.copyOf(handlerThreads.values()).size());
+<a class="jxr_linenumber" name="155" href="#155">155</a>   }
+<a class="jxr_linenumber" name="156" href="#156">156</a> 
+<a class="jxr_linenumber" name="157" href="#157">157</a>   <strong class="jxr_keyword">private</strong> CallRunner createMockTask() {
+<a class="jxr_linenumber" name="158" href="#158">158</a>     Call call = mock(Call.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="159" href="#159">159</a>     CallRunner task = mock(CallRunner.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="160" href="#160">160</a>     when(task.getCall()).thenReturn(call);
+<a class="jxr_linenumber" name="161" href="#161">161</a>     <strong class="jxr_keyword">return</strong> task;
+<a class="jxr_linenumber" name="162" href="#162">162</a>   }
+<a class="jxr_linenumber" name="163" href="#163">163</a> 
+<a class="jxr_linenumber" name="164" href="#164">164</a>   @Test
+<a class="jxr_linenumber" name="165" href="#165">165</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testRpcScheduler() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="166" href="#166">166</a>     testRpcScheduler(SimpleRpcScheduler.CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE);
+<a class="jxr_linenumber" name="167" href="#167">167</a>     testRpcScheduler(SimpleRpcScheduler.CALL_QUEUE_TYPE_FIFO_CONF_VALUE);
+<a class="jxr_linenumber" name="168" href="#168">168</a>   }
+<a class="jxr_linenumber" name="169" href="#169">169</a> 
+<a class="jxr_linenumber" name="170" href="#170">170</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> testRpcScheduler(<strong class="jxr_keyword">final</strong> String queueType) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="171" href="#171">171</a>     Configuration schedConf = HBaseConfiguration.create();
+<a class="jxr_linenumber" name="172" href="#172">172</a>     schedConf.set(SimpleRpcScheduler.CALL_QUEUE_TYPE_CONF_KEY, queueType);
+<a class="jxr_linenumber" name="173" href="#173">173</a> 
+<a class="jxr_linenumber" name="174" href="#174">174</a>     PriorityFunction priority = mock(PriorityFunction.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="175" href="#175">175</a>     when(priority.getPriority(any(RequestHeader.<strong class="jxr_keyword">class</strong>),
+<a class="jxr_linenumber" name="176" href="#176">176</a>       any(Message.<strong class="jxr_keyword">class</strong>), any(User.<strong class="jxr_keyword">class</strong>)))
+<a class="jxr_linenumber" name="177" href="#177">177</a>       .thenReturn(HConstants.NORMAL_QOS);
+<a class="jxr_linenumber" name="178" href="#178">178</a> 
+<a class="jxr_linenumber" name="179" href="#179">179</a>     RpcScheduler scheduler = <strong class="jxr_keyword">new</strong> SimpleRpcScheduler(schedConf, 1, 1, 1, priority,
+<a class="jxr_linenumber" name="180" href="#180">180</a>                                                     HConstants.QOS_THRESHOLD);
+<a class="jxr_linenumber" name="181" href="#181">181</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="182" href="#182">182</a>       scheduler.start();
+<a class="jxr_linenumber" name="183" href="#183">183</a> 
+<a class="jxr_linenumber" name="184" href="#184">184</a>       CallRunner smallCallTask = mock(CallRunner.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="185" href="#185">185</a>       RpcServer.Call smallCall = mock(RpcServer.Call.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="186" href="#186">186</a>       RequestHeader smallHead = RequestHeader.newBuilder().setCallId(1).build();
+<a class="jxr_linenumber" name="187" href="#187">187</a>       when(smallCallTask.getCall()).thenReturn(smallCall);
+<a class="jxr_linenumber" name="188" href="#188">188</a>       when(smallCall.getHeader()).thenReturn(smallHead);
+<a class="jxr_linenumber" name="189" href="#189">189</a> 
+<a class="jxr_linenumber" name="190" href="#190">190</a>       CallRunner largeCallTask = mock(CallRunner.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="191" href="#191">191</a>       RpcServer.Call largeCall = mock(RpcServer.Call.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="192" href="#192">192</a>       RequestHeader largeHead = RequestHeader.newBuilder().setCallId(50).build();
+<a class="jxr_linenumber" name="193" href="#193">193</a>       when(largeCallTask.getCall()).thenReturn(largeCall);
+<a class="jxr_linenumber" name="194" href="#194">194</a>       when(largeCall.getHeader()).thenReturn(largeHead);
+<a class="jxr_linenumber" name="195" href="#195">195</a> 
+<a class="jxr_linenumber" name="196" href="#196">196</a>       CallRunner hugeCallTask = mock(CallRunner.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="197" href="#197">197</a>       RpcServer.Call hugeCall = mock(RpcServer.Call.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="198" href="#198">198</a>       RequestHeader hugeHead = RequestHeader.newBuilder().setCallId(100).build();
+<a class="jxr_linenumber" name="199" href="#199">199</a>       when(hugeCallTask.getCall()).thenReturn(hugeCall);
+<a class="jxr_linenumber" name="200" href="#200">200</a>       when(hugeCall.getHeader()).thenReturn(hugeHead);
+<a class="jxr_linenumber" name="201" href="#201">201</a> 
+<a class="jxr_linenumber" name="202" href="#202">202</a>       when(priority.getDeadline(eq(smallHead), any(Message.<strong class="jxr_keyword">class</strong>))).thenReturn(0L);
+<a class="jxr_linenumber" name="203" href="#203">203</a>       when(priority.getDeadline(eq(largeHead), any(Message.<strong class="jxr_keyword">class</strong>))).thenReturn(50L);
+<a class="jxr_linenumber" name="204" href="#204">204</a>       when(priority.getDeadline(eq(hugeHead), any(Message.<strong class="jxr_keyword">class</strong>))).thenReturn(100L);
+<a class="jxr_linenumber" name="205" href="#205">205</a> 
+<a class="jxr_linenumber" name="206" href="#206">206</a>       <strong class="jxr_keyword">final</strong> ArrayList&lt;Integer&gt; work = <strong class="jxr_keyword">new</strong> ArrayList&lt;Integer&gt;();
+<a class="jxr_linenumber" name="207" href="#207">207</a>       doAnswerTaskExecution(smallCallTask, work, 10, 250);
+<a class="jxr_linenumber" name="208" href="#208">208</a>       doAnswerTaskExecution(largeCallTask, work, 50, 250);
+<a class="jxr_linenumber" name="209" href="#209">209</a>       doAnswerTaskExecution(hugeCallTask, work, 100, 250);
+<a class="jxr_linenumber" name="210" href="#210">210</a> 
 <a class="jxr_linenumber" name="211" href="#211">211</a>       scheduler.dispatch(smallCallTask);
-<a class="jxr_linenumber" name="212" href="#212">212</a>       scheduler.dispatch(hugeCallTask);
+<a class="jxr_linenumber" name="212" href="#212">212</a>       scheduler.dispatch(smallCallTask);
 <a class="jxr_linenumber" name="213" href="#213">213</a>       scheduler.dispatch(smallCallTask);
-<a class="jxr_linenumber" name="214" href="#214">214</a>       scheduler.dispatch(largeCallTask);
+<a class="jxr_linenumber" name="214" href="#214">214</a>       scheduler.dispatch(hugeCallTask);
 <a class="jxr_linenumber" name="215" href="#215">215</a>       scheduler.dispatch(smallCallTask);
-<a class="jxr_linenumber" name="216" href="#216">216</a>       scheduler.dispatch(smallCallTask);
-<a class="jxr_linenumber" name="217" href="#217">217</a> 
-<a class="jxr_linenumber" name="218" href="#218">218</a>       <strong class="jxr_keyword">while</strong> (work.size() &lt; 8) {
-<a class="jxr_linenumber" name="219" href="#219">219</a>         Threads.sleepWithoutInterrupt(100);
-<a class="jxr_linenumber" name="220" href="#220">220</a>       }
-<a class="jxr_linenumber" name="221" href="#221">221</a> 
-<a class="jxr_linenumber" name="222" href="#222">222</a>       <strong class="jxr_keyword">int</strong> seqSum = 0;
-<a class="jxr_linenumber" name="223" href="#223">223</a>       <strong class="jxr_keyword">int</strong> totalTime = 0;
-<a class="jxr_linenumber" name="224" href="#224">224</a>       <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; work.size(); ++i) {
-<a class="jxr_linenumber" name="225" href="#225">225</a>         LOG.debug(<span class="jxr_string">"Request i="</span> + i + <span class="jxr_string">" value="</span> + work.get(i));
-<a class="jxr_linenumber" name="226" href="#226">226</a>         seqSum += work.get(i);
-<a class="jxr_linenumber" name="227" href="#227">227</a>         totalTime += seqSum;
-<a class="jxr_linenumber" name="228" href="#228">228</a>       }
-<a class="jxr_linenumber" name="229" href="#229">229</a>       LOG.debug(<span class="jxr_string">"Total Time: "</span> + totalTime);
-<a class="jxr_linenumber" name="230" href="#230">230</a> 
-<a class="jxr_linenumber" name="231" href="#231">231</a>       <em class="jxr_comment">// -&gt; [small small small huge small large small small]</em>
-<a class="jxr_linenumber" name="232" href="#232">232</a>       <em class="jxr_comment">// -&gt; NO REORDER   [10 10 10 100 10 50 10 10] -&gt; 930 (FIFO Queue)</em>
-<a class="jxr_linenumber" name="233" href="#233">233</a>       <em class="jxr_comment">// -&gt; WITH REORDER [10 10 10 10 10 10 50 100] -&gt; 530 (Deadline Queue)</em>
-<a class="jxr_linenumber" name="234" href="#234">234</a>       <strong class="jxr_keyword">if</strong> (queueType.equals(SimpleRpcScheduler.CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE)) {
-<a class="jxr_linenumber" name="235" href="#235">235</a>         assertEquals(530, totalTime);
-<a class="jxr_linenumber" name="236" href="#236">236</a>       } <strong class="jxr_keyword">else</strong> <em class="jxr_comment">/*<em class="jxr_comment"> if (queueType.equals(SimpleRpcScheduler.CALL_QUEUE_TYPE_FIFO_CONF_VALUE)) */</em> {</em>
-<a class="jxr_linenumber" name="237" href="#237">237</a>         assertEquals(930, totalTime);
-<a class="jxr_linenumber" name="238" href="#238">238</a>       }
-<a class="jxr_linenumber" name="239" href="#239">239</a>     } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="240" href="#240">240</a>       scheduler.stop();
-<a class="jxr_linenumber" name="241" href="#241">241</a>     }
-<a class="jxr_linenumber" name="242" href="#242">242</a>   }
-<a class="jxr_linenumber" name="243" href="#243">243</a> 
-<a class="jxr_linenumber" name="244" href="#244">244</a>   @Test
-<a class="jxr_linenumber" name="245" href="#245">245</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanQueues() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="246" href="#246">246</a>     Configuration schedConf = HBaseConfiguration.create();
-<a class="jxr_linenumber" name="247" href="#247">247</a>     schedConf.setFloat(SimpleRpcScheduler.CALL_QUEUE_HANDLER_FACTOR_CONF_KEY, 1.0f);
-<a class="jxr_linenumber" name="248" href="#248">248</a>     schedConf.setFloat(SimpleRpcScheduler.CALL_QUEUE_READ_SHARE_CONF_KEY, 0.7f);
-<a class="jxr_linenumber" name="249" href="#249">249</a>     schedConf.setFloat(SimpleRpcScheduler.CALL_QUEUE_SCAN_SHARE_CONF_KEY, 0.5f);
-<a class="jxr_linenumber" name="250" href="#250">250</a> 
-<a class="jxr_linenumber" name="251" href="#251">251</a>     PriorityFunction priority = mock(PriorityFunction.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="252" href="#252">252</a>     when(priority.getPriority(any(RequestHeader.<strong class="jxr_keyword">class</strong>), any(Message.<strong class="jxr_keyword">class</strong>),
-<a class="jxr_linenumber" name="253" href="#253">253</a>       any(User.<strong class="jxr_keyword">class</strong>))).thenReturn(HConstants.NORMAL_QOS);
-<a class="jxr_linenumber" name="254" href="#254">254</a> 
-<a class="jxr_linenumber" name="255" href="#255">255</a>     RpcScheduler scheduler = <strong class="jxr_keyword">new</strong> SimpleRpcScheduler(schedConf, 3, 1, 1, priority,
-<a class="jxr_linenumber" name="256" href="#256">256</a>                                                     HConstants.QOS_THRESHOLD);
-<a class="jxr_linenumber" name="257" href="#257">257</a>     <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="258" href="#258">258</a>       scheduler.start();
-<a class="jxr_linenumber" name="259" href="#259">259</a> 
-<a class="jxr_linenumber" name="260" href="#260">260</a>       CallRunner putCallTask = mock(CallRunner.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="261" href="#261">261</a>       RpcServer.Call putCall = mock(RpcServer.Call.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="262" href="#262">262</a>       putCall.param = RequestConverter.buildMutateRequest(
-<a class="jxr_linenumber" name="263" href="#263">263</a>           Bytes.toBytes(<span class="jxr_string">"abc"</span>), <strong class="jxr_keyword">new</strong> Put(Bytes.toBytes(<span class="jxr_string">"row"</span>)));
-<a class="jxr_linenumber" name="264" href="#264">264</a>       RequestHeader putHead = RequestHeader.newBuilder().setMethodName(<span class="jxr_string">"mutate"</span>).build();
-<a class="jxr_linenumber" name="265" href="#265">265</a>       when(putCallTask.getCall()).thenReturn(putCall);
-<a class="jxr_linenumber" name="266" href="#266">266</a>       when(putCall.getHeader()).thenReturn(putHead);
-<a class="jxr_linenumber" name="267" href="#267">267</a> 
-<a class="jxr_linenumber" name="268" href="#268">268</a>       CallRunner getCallTask = mock(CallRunner.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="269" href="#269">269</a>       RpcServer.Call getCall = mock(RpcServer.Call.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="270" href="#270">270</a>       RequestHeader getHead = RequestHeader.newBuilder().setMethodName(<span class="jxr_string">"get"</span>).build();
-<a class="jxr_linenumber" name="271" href="#271">271</a>       when(getCallTask.getCall()).thenReturn(getCall);
-<a class="jxr_linenumber" name="272" href="#272">272</a>       when(getCall.getHeader()).thenReturn(getHead);
-<a class="jxr_linenumber" name="273" href="#273">273</a> 
-<a class="jxr_linenumber" name="274" href="#274">274</a>       CallRunner scanCallTask = mock(CallRunner.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="275" href="#275">275</a>       RpcServer.Call scanCall = mock(RpcServer.Call.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="276" href="#276">276</a>       scanCall.param = ScanRequest.newBuilder().setScannerId(1).build();
-<a class="jxr_linenumber" name="277" href="#277">277</a>       RequestHeader scanHead = RequestHeader.newBuilder().setMethodName(<span class="jxr_string">"scan"</span>).build();
-<a class="jxr_linenumber" name="278" href="#278">278</a>       when(scanCallTask.getCall()).thenReturn(scanCall);
-<a class="jxr_linenumber" name="279" href="#279">279</a>       when(scanCall.getHeader()).thenReturn(scanHead);
-<a class="jxr_linenumber" name="280" href="#280">280</a> 
-<a class="jxr_linenumber" name="281" href="#281">281</a>       ArrayList&lt;Integer&gt; work = <strong class="jxr_keyword">new</strong> ArrayList&lt;Integer&gt;();
-<a class="jxr_linenumber" name="282" href="#282">282</a>       doAnswerTaskExecution(putCallTask, work, 1, 1000);
-<a class="jxr_linenumber" name="283" href="#283">283</a>       doAnswerTaskExecution(getCallTask, work, 2, 1000);
-<a class="jxr_linenumber" name="284" href="#284">284</a>       doAnswerTaskExecution(scanCallTask, work, 3, 1000);
-<a class="jxr_linenumber" name="285" href="#285">285</a> 
-<a class="jxr_linenumber" name="286" href="#286">286</a>       <em class="jxr_comment">// There are 3 queues: [puts], [gets], [scans]</em>
-<a class="jxr_linenumber" name="287" href="#287">287</a>       <em class="jxr_comment">// so the calls will be interleaved</em>
-<a class="jxr_linenumber" name="288" href="#288">288</a>       scheduler.dispatch(putCallTask);
-<a class="jxr_linenumber" name="289" href="#289">289</a>       scheduler.dispatch(putCallTask);
+<a class="jxr_linenumber" name="216" href="#216">216</a>       scheduler.dispatch(largeCallTask);
+<a class="jxr_linenumber" name="217" href="#217">217</a>       scheduler.dispatch(smallCallTask);
+<a class="jxr_linenumber" name="218" href="#218">218</a>       scheduler.dispatch(smallCallTask);
+<a class="jxr_linenumber" name="219" href="#219">219</a> 
+<a class="jxr_linenumber" name="220" href="#220">220</a>       <strong class="jxr_keyword">while</strong> (work.size() &lt; 8) {
+<a class="jxr_linenumber" name="221" href="#221">221</a>         Threads.sleepWithoutInterrupt(100);
+<a class="jxr_linenumber" name="222" href="#222">222</a>       }
+<a class="jxr_linenumber" name="223" href="#223">223</a> 
+<a class="jxr_linenumber" name="224" href="#224">224</a>       <strong class="jxr_keyword">int</strong> seqSum = 0;
+<a class="jxr_linenumber" name="225" href="#225">225</a>       <strong class="jxr_keyword">int</strong> totalTime = 0;
+<a class="jxr_linenumber" name="226" href="#226">226</a>       <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; work.size(); ++i) {
+<a class="jxr_linenumber" name="227" href="#227">227</a>         LOG.debug(<span class="jxr_string">"Request i="</span> + i + <span class="jxr_string">" value="</span> + work.get(i));
+<a class="jxr_linenumber" name="228" href="#228">228</a>         seqSum += work.get(i);
+<a class="jxr_linenumber" name="229" href="#229">229</a>         totalTime += seqSum;
+<a class="jxr_linenumber" name="230" href="#230">230</a>       }
+<a class="jxr_linenumber" name="231" href="#231">231</a>       LOG.debug(<span class="jxr_string">"Total Time: "</span> + totalTime);
+<a class="jxr_linenumber" name="232" href="#232">232</a> 
+<a class="jxr_linenumber" name="233" href="#233">233</a>       <em class="jxr_comment">// -&gt; [small small small huge small large small small]</em>
+<a class="jxr_linenumber" name="234" href="#234">234</a>       <em class="jxr_comment">// -&gt; NO REORDER   [10 10 10 100 10 50 10 10] -&gt; 930 (FIFO Queue)</em>
+<a class="jxr_linenumber" name="235" href="#235">235</a>       <em class="jxr_comment">// -&gt; WITH REORDER [10 10 10 10 10 10 50 100] -&gt; 530 (Deadline Queue)</em>
+<a class="jxr_linenumber" name="236" href="#236">236</a>       <strong class="jxr_keyword">if</strong> (queueType.equals(SimpleRpcScheduler.CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE)) {
+<a class="jxr_linenumber" name="237" href="#237">237</a>         assertEquals(530, totalTime);
+<a class="jxr_linenumber" name="238" href="#238">238</a>       } <strong class="jxr_keyword">else</strong> <em class="jxr_comment">/*<em class="jxr_comment"> if (queueType.equals(SimpleRpcScheduler.CALL_QUEUE_TYPE_FIFO_CONF_VALUE)) */</em> {</em>
+<a class="jxr_linenumber" name="239" href="#239">239</a>         assertEquals(930, totalTime);
+<a class="jxr_linenumber" name="240" href="#240">240</a>       }
+<a class="jxr_linenumber" name="241" href="#241">241</a>     } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="242" href="#242">242</a>       scheduler.stop();
+<a class="jxr_linenumber" name="243" href="#243">243</a>     }
+<a class="jxr_linenumber" name="244" href="#244">244</a>   }
+<a class="jxr_linenumber" name="245" href="#245">245</a> 
+<a class="jxr_linenumber" name="246" href="#246">246</a>   @Test
+<a class="jxr_linenumber" name="247" href="#247">247</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanQueues() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="248" href="#248">248</a>     Configuration schedConf = HBaseConfiguration.create();
+<a class="jxr_linenumber" name="249" href="#249">249</a>     schedConf.setFloat(SimpleRpcScheduler.CALL_QUEUE_HANDLER_FACTOR_CONF_KEY, 1.0f);
+<a class="jxr_linenumber" name="250" href="#250">250</a>     schedConf.setFloat(SimpleRpcScheduler.CALL_QUEUE_READ_SHARE_CONF_KEY, 0.7f);
+<a class="jxr_linenumber" name="251" href="#251">251</a>     schedConf.setFloat(SimpleRpcScheduler.CALL_QUEUE_SCAN_SHARE_CONF_KEY, 0.5f);
+<a class="jxr_linenumber" name="252" href="#252">252</a> 
+<a class="jxr_linenumber" name="253" href="#253">253</a>     PriorityFunction priority = mock(PriorityFunction.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="254" href="#254">254</a>     when(priority.getPriority(any(RequestHeader.<strong class="jxr_keyword">class</strong>), any(Message.<strong class="jxr_keyword">class</strong>),
+<a class="jxr_linenumber" name="255" href="#255">255</a>       any(User.<strong class="jxr_keyword">class</strong>))).thenReturn(HConstants.NORMAL_QOS);
+<a class="jxr_linenumber" name="256" href="#256">256</a> 
+<a class="jxr_linenumber" name="257" href="#257">257</a>     RpcScheduler scheduler = <strong class="jxr_keyword">new</strong> SimpleRpcScheduler(schedConf, 3, 1, 1, priority,
+<a class="jxr_linenumber" name="258" href="#258">258</a>                                                     HConstants.QOS_THRESHOLD);
+<a class="jxr_linenumber" name="259" href="#259">259</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="260" href="#260">260</a>       scheduler.start();
+<a class="jxr_linenumber" name="261" href="#261">261</a> 
+<a class="jxr_linenumber" name="262" href="#262">262</a>       CallRunner putCallTask = mock(CallRunner.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="263" href="#263">263</a>       RpcServer.Call putCall = mock(RpcServer.Call.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="264" href="#264">264</a>       putCall.param = RequestConverter.buildMutateRequest(
+<a class="jxr_linenumber" name="265" href="#265">265</a>           Bytes.toBytes(<span class="jxr_string">"abc"</span>), <strong class="jxr_keyword">new</strong> Put(Bytes.toBytes(<span class="jxr_string">"row"</span>)));
+<a class="jxr_linenumber" name="266" href="#266">266</a>       RequestHeader putHead = RequestHeader.newBuilder().setMethodName(<span class="jxr_string">"mutate"</span>).build();
+<a class="jxr_linenumber" name="267" href="#267">267</a>       when(putCallTask.getCall()).thenReturn(putCall);
+<a class="jxr_linenumber" name="268" href="#268">268</a>       when(putCall.getHeader()).thenReturn(putHead);
+<a class="jxr_linenumber" name="269" href="#269">269</a> 
+<a class="jxr_linenumber" name="270" href="#270">270</a>       CallRunner getCallTask = mock(CallRunner.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="271" href="#271">271</a>       RpcServer.Call getCall = mock(RpcServer.Call.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="272" href="#272">272</a>       RequestHeader getHead = RequestHeader.newBuilder().setMethodName(<span class="jxr_string">"get"</span>).build();
+<a class="jxr_linenumber" name="273" href="#273">273</a>       when(getCallTask.getCall()).thenReturn(getCall);
+<a class="jxr_linenumber" name="274" href="#274">274</a>       when(getCall.getHeader()).thenReturn(getHead);
+<a class="jxr_linenumber" name="275" href="#275">275</a> 
+<a class="jxr_linenumber" name="276" href="#276">276</a>       CallRunner scanCallTask = mock(CallRunner.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="277" href="#277">277</a>       RpcServer.Call scanCall = mock(RpcServer.Call.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="278" href="#278">278</a>       scanCall.param = ScanRequest.newBuilder().setScannerId(1).build();
+<a class="jxr_linenumber" name="279" href="#279">279</a>       RequestHeader scanHead = RequestHeader.newBuilder().setMethodName(<span class="jxr_string">"scan"</span>).build();
+<a class="jxr_linenumber" name="280" href="#280">280</a>       when(scanCallTask.getCall()).thenReturn(scanCall);
+<a class="jxr_linenumber" name="281" href="#281">281</a>       when(scanCall.getHeader()).thenReturn(scanHead);
+<a class="jxr_linenumber" name="282" href="#282">282</a> 
+<a class="jxr_linenumber" name="283" href="#283">283</a>       ArrayList&lt;Integer&gt; work = <strong class="jxr_keyword">new</strong> ArrayList&lt;Integer&gt;();
+<a class="jxr_linenumber" name="284" href="#284">284</a>       doAnswerTaskExecution(putCallTask, work, 1, 1000);
+<a class="jxr_linenumber" name="285" href="#285">285</a>       doAnswerTaskExecution(getCallTask, work, 2, 1000);
+<a class="jxr_linenumber" name="286" href="#286">286</a>       doAnswerTaskExecution(scanCallTask, work, 3, 1000);
+<a class="jxr_linenumber" name="287" href="#287">287</a> 
+<a class="jxr_linenumber" name="288" href="#288">288</a>       <em class="jxr_comment">// There are 3 queues: [puts], [gets], [scans]</em>
+<a class="jxr_linenumber" name="289" href="#289">289</a>       <em class="jxr_comment">// so the calls will be interleaved</em>
 <a class="jxr_linenumber" name="290" href="#290">290</a>       scheduler.dispatch(putCallTask);
-<a class="jxr_linenumber" name="291" href="#291">291</a>       scheduler.dispatch(getCallTask);
-<a class="jxr_linenumber" name="292" href="#292">292</a>       scheduler.dispatch(getCallTask);
+<a class="jxr_linenumber" name="291" href="#291">291</a>       scheduler.dispatch(putCallTask);
+<a class="jxr_linenumber" name="292" href="#292">292</a>       scheduler.dispatch(putCallTask);
 <a class="jxr_linenumber" name="293" href="#293">293</a>       scheduler.dispatch(getCallTask);
-<a class="jxr_linenumber" name="294" href="#294">294</a>       scheduler.dispatch(scanCallTask);
-<a class="jxr_linenumber" name="295" href="#295">295</a>       scheduler.dispatch(scanCallTask);
+<a class="jxr_linenumber" name="294" href="#294">294</a>       scheduler.dispatch(getCallTask);
+<a class="jxr_linenumber" name="295" href="#295">295</a>       scheduler.dispatch(getCallTask);
 <a class="jxr_linenumber" name="296" href="#296">296</a>       scheduler.dispatch(scanCallTask);
-<a class="jxr_linenumber" name="297" href="#297">297</a> 
-<a class="jxr_linenumber" name="298" href="#298">298</a>       <strong class="jxr_keyword">while</strong> (work.size() &lt; 6) {
-<a class="jxr_linenumber" name="299" href="#299">299</a>         Threads.sleepWithoutInterrupt(100);
-<a class="jxr_linenumber" name="300" href="#300">300</a>       }
-<a class="jxr_linenumber" name="301" href="#301">301</a> 
-<a class="jxr_linenumber" name="302" href="#302">302</a>       <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; work.size() - 2; i += 3) {
-<a class="jxr_linenumber" name="303" href="#303">303</a>         assertNotEquals(work.get(i + 0), work.get(i + 1));
-<a class="jxr_linenumber" name="304" href="#304">304</a>         assertNotEquals(work.get(i + 0), work.get(i + 2));
-<a class="jxr_linenumber" name="305" href="#305">305</a>         assertNotEquals(work.get(i + 1), work.get(i + 2));
-<a class="jxr_linenumber" name="306" href="#306">306</a>       }
-<a class="jxr_linenumber" name="307" href="#307">307</a>     } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="308" href="#308">308</a>       scheduler.stop();
-<a class="jxr_linenumber" name="309" href="#309">309</a>     }
-<a class="jxr_linenumber" name="310" href="#310">310</a>   }
-<a class="jxr_linenumber" name="311" href="#311">311</a> 
-<a class="jxr_linenumber" name="312" href="#312">312</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> doAnswerTaskExecution(<strong class="jxr_keyword">final</strong> CallRunner callTask,
-<a class="jxr_linenumber" name="313" href="#313">313</a>       <strong class="jxr_keyword">final</strong> ArrayList&lt;Integer&gt; results, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> value, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> sleepInterval) {
-<a class="jxr_linenumber" name="314" href="#314">314</a>     callTask.setStatus(<strong class="jxr_keyword">new</strong> MonitoredRPCHandlerImpl());
-<a class="jxr_linenumber" name="315" href="#315">315</a>     doAnswer(<strong class="jxr_keyword">new</strong> Answer&lt;Object&gt;() {
-<a class="jxr_linenumber" name="316" href="#316">316</a>       @Override
-<a class="jxr_linenumber" name="317" href="#317">317</a>       <strong class="jxr_keyword">public</strong> Object answer(InvocationOnMock invocation) {
-<a class="jxr_linenumber" name="318" href="#318">318</a>         <strong class="jxr_keyword">synchronized</strong> (results) {
-<a class="jxr_linenumber" name="319" href="#319">319</a>           results.add(value);
-<a class="jxr_linenumber" name="320" href="#320">320</a>         }
-<a class="jxr_linenumber" name="321" href="#321">321</a>         Threads.sleepWithoutInterrupt(sleepInterval);
-<a class="jxr_linenumber" name="322" href="#322">322</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="323" href="#323">323</a>       }
-<a class="jxr_linenumber" name="324" href="#324">324</a>     }).when(callTask).run();
-<a class="jxr_linenumber" name="325" href="#325">325</a>   }
-<a class="jxr_linenumber" name="326" href="#326">326</a> }
+<a class="jxr_linenumber" name="297" href="#297">297</a>       scheduler.dispatch(scanCallTask);
+<a class="jxr_linenumber" name="298" href="#298">298</a>       scheduler.dispatch(scanCallTask);
+<a class="jxr_linenumber" name="299" href="#299">299</a> 
+<a class="jxr_linenumber" name="300" href="#300">300</a>       <strong class="jxr_keyword">while</strong> (work.size() &lt; 6) {
+<a class="jxr_linenumber" name="301" href="#301">301</a>         Threads.sleepWithoutInterrupt(100);
+<a class="jxr_linenumber" name="302" href="#302">302</a>       }
+<a class="jxr_linenumber" name="303" href="#303">303</a> 
+<a class="jxr_linenumber" name="304" href="#304">304</a>       <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; work.size() - 2; i += 3) {
+<a class="jxr_linenumber" name="305" href="#305">305</a>         assertNotEquals(work.get(i + 0), work.get(i + 1));
+<a class="jxr_linenumber" name="306" href="#306">306</a>         assertNotEquals(work.get(i + 0), work.get(i + 2));
+<a class="jxr_linenumber" name="307" href="#307">307</a>         assertNotEquals(work.get(i + 1), work.get(i + 2));
+<a class="jxr_linenumber" name="308" href="#308">308</a>       }
+<a class="jxr_linenumber" name="309" href="#309">309</a>     } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="310" href="#310">310</a>       scheduler.stop();
+<a class="jxr_linenumber" name="311" href="#311">311</a>     }
+<a class="jxr_linenumber" name="312" href="#312">312</a>   }
+<a class="jxr_linenumber" name="313" href="#313">313</a> 
+<a class="jxr_linenumber" name="314" href="#314">314</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> doAnswerTaskExecution(<strong class="jxr_keyword">final</strong> CallRunner callTask,
+<a class="jxr_linenumber" name="315" href="#315">315</a>       <strong class="jxr_keyword">final</strong> ArrayList&lt;Integer&gt; results, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> value, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> sleepInterval) {
+<a class="jxr_linenumber" name="316" href="#316">316</a>     callTask.setStatus(<strong class="jxr_keyword">new</strong> MonitoredRPCHandlerImpl());
+<a class="jxr_linenumber" name="317" href="#317">317</a>     doAnswer(<strong class="jxr_keyword">new</strong> Answer&lt;Object&gt;() {
+<a class="jxr_linenumber" name="318" href="#318">318</a>       @Override
+<a class="jxr_linenumber" name="319" href="#319">319</a>       <strong class="jxr_keyword">public</strong> Object answer(InvocationOnMock invocation) {
+<a class="jxr_linenumber" name="320" href="#320">320</a>         <strong class="jxr_keyword">synchronized</strong> (results) {
+<a class="jxr_linenumber" name="321" href="#321">321</a>           results.add(value);
+<a class="jxr_linenumber" name="322" href="#322">322</a>         }
+<a class="jxr_linenumber" name="323" href="#323">323</a>         Threads.sleepWithoutInterrupt(sleepInterval);
+<a class="jxr_linenumber" name="324" href="#324">324</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="325" href="#325">325</a>       }
+<a class="jxr_linenumber" name="326" href="#326">326</a>     }).when(callTask).run();
+<a class="jxr_linenumber" name="327" href="#327">327</a>   }
+<a class="jxr_linenumber" name="328" href="#328">328</a> 
+<a class="jxr_linenumber" name="329" href="#329">329</a>   @Test
+<a class="jxr_linenumber" name="330" href="#330">330</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSoftAndHardQueueLimits() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="331" href="#331">331</a>     Configuration schedConf = HBaseConfiguration.create();
+<a class="jxr_linenumber" name="332" href="#332">332</a> 
+<a class="jxr_linenumber" name="333" href="#333">333</a>     schedConf.setInt(HConstants.REGION_SERVER_HANDLER_COUNT, 0);
+<a class="jxr_linenumber" name="334" href="#334">334</a>     schedConf.setInt(<span class="jxr_string">"hbase.ipc.server.max.callqueue.length"</span>, 5);
+<a class="jxr_linenumber" name="335" href="#335">335</a> 
+<a class="jxr_linenumber" name="336" href="#336">336</a>     PriorityFunction priority = mock(PriorityFunction.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="337" href="#337">337</a>     when(priority.getPriority(any(RequestHeader.<strong class="jxr_keyword">class</strong>), any(Message.<strong class="jxr_keyword">class</strong>),
+<a class="jxr_linenumber" name="338" href="#338">338</a>       any(User.<strong class="jxr_keyword">class</strong>))).thenReturn(HConstants.NORMAL_QOS);
+<a class="jxr_linenumber" name="339" href="#339">339</a>     SimpleRpcScheduler scheduler = <strong class="jxr_keyword">new</strong> SimpleRpcScheduler(schedConf, 0, 0, 0, priority,
+<a class="jxr_linenumber" name="340" href="#340">340</a>       HConstants.QOS_THRESHOLD);
+<a class="jxr_linenumber" name="341" href="#341">341</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="342" href="#342">342</a>       scheduler.start();
+<a class="jxr_linenumber" name="343" href="#343">343</a> 
+<a class="jxr_linenumber" name="344" href="#344">344</a>       CallRunner putCallTask = mock(CallRunner.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="345" href="#345">345</a>       RpcServer.Call putCall = mock(RpcServer.Call.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="346" href="#346">346</a>       putCall.param = RequestConverter.buildMutateRequest(
+<a class="jxr_linenumber" name="347" href="#347">347</a>         Bytes.toBytes(<span class="jxr_string">"abc"</span>), <strong class="jxr_keyword">new</strong> Put(Bytes.toBytes(<span class="jxr_string">"row"</span>)));
+<a class="jxr_linenumber" name="348" href="#348">348</a>       RequestHeader putHead = RequestHeader.newBuilder().setMethodName(<span class="jxr_string">"mutate"</span>).build();
+<a class="jxr_linenumber" name="349" href="#349">349</a>       when(putCallTask.getCall()).thenReturn(putCall);
+<a class="jxr_linenumber" name="350" href="#350">350</a>       when(putCall.getHeader()).thenReturn(putHead);
+<a class="jxr_linenumber" name="351" href="#351">351</a> 
+<a class="jxr_linenumber" name="352" href="#352">352</a>       assertTrue(scheduler.dispatch(putCallTask));
+<a class="jxr_linenumber" name="353" href="#353">353</a> 
+<a class="jxr_linenumber" name="354" href="#354">354</a>       schedConf.setInt(<span class="jxr_string">"hbase.ipc.server.max.callqueue.length"</span>, 0);
+<a class="jxr_linenumber" name="355" href="#355">355</a>       scheduler.onConfigurationChange(schedConf);
+<a class="jxr_linenumber" name="356" href="#356">356</a>       assertFalse(scheduler.dispatch(putCallTask));
+<a class="jxr_linenumber" name="357" href="#357">357</a> 
+<a class="jxr_linenumber" name="358" href="#358">358</a>       schedConf.setInt(<span class="jxr_string">"hbase.ipc.server.max.callqueue.length"</span>, 1);
+<a class="jxr_linenumber" name="359" href="#359">359</a>       scheduler.onConfigurationChange(schedConf);
+<a class="jxr_linenumber" name="360" href="#360">360</a>       assertTrue(scheduler.dispatch(putCallTask));
+<a class="jxr_linenumber" name="361" href="#361">361</a>     } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="362" href="#362">362</a>       scheduler.stop();
+<a class="jxr_linenumber" name="363" href="#363">363</a>     }
+<a class="jxr_linenumber" name="364" href="#364">364</a>   }
+<a class="jxr_linenumber" name="365" href="#365">365</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[03/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html b/xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html
index e90a138..0549d41 100644
--- a/xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html
+++ b/xref/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html
@@ -38,203 +38,219 @@
 <a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HConstants;
 <a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.classification.InterfaceAudience;
 <a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.classification.InterfaceStability;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.BoundedPriorityBlockingQueue;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> * A scheduler that maintains isolated handler pools for general,</em>
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> * high-priority, and replication requests.</em>
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="37" href="#37">37</a>  @InterfaceAudience.LimitedPrivate({HBaseInterfaceAudience.COPROC, HBaseInterfaceAudience.PHOENIX})
-<a class="jxr_linenumber" name="38" href="#38">38</a>  @InterfaceStability.Evolving
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">SimpleRpcScheduler</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html">RpcScheduler</a> {
-<a class="jxr_linenumber" name="40" href="#40">40</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(SimpleRpcScheduler.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="41" href="#41">41</a>  
-<a class="jxr_linenumber" name="42" href="#42">42</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CALL_QUEUE_READ_SHARE_CONF_KEY =
-<a class="jxr_linenumber" name="43" href="#43">43</a>        <span class="jxr_string">"hbase.ipc.server.callqueue.read.ratio"</span>;
-<a class="jxr_linenumber" name="44" href="#44">44</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CALL_QUEUE_SCAN_SHARE_CONF_KEY =
-<a class="jxr_linenumber" name="45" href="#45">45</a>        <span class="jxr_string">"hbase.ipc.server.callqueue.scan.ratio"</span>;
-<a class="jxr_linenumber" name="46" href="#46">46</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CALL_QUEUE_HANDLER_FACTOR_CONF_KEY =
-<a class="jxr_linenumber" name="47" href="#47">47</a>        <span class="jxr_string">"hbase.ipc.server.callqueue.handler.factor"</span>;
-<a class="jxr_linenumber" name="48" href="#48">48</a>  
-<a class="jxr_linenumber" name="49" href="#49">49</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> If set to 'deadline', uses a priority queue and deprioritize long-running scans */</em>
-<a class="jxr_linenumber" name="50" href="#50">50</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CALL_QUEUE_TYPE_CONF_KEY = <span class="jxr_string">"hbase.ipc.server.callqueue.type"</span>;
-<a class="jxr_linenumber" name="51" href="#51">51</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE = <span class="jxr_string">"deadline"</span>;
-<a class="jxr_linenumber" name="52" href="#52">52</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CALL_QUEUE_TYPE_FIFO_CONF_VALUE = <span class="jxr_string">"fifo"</span>;
-<a class="jxr_linenumber" name="53" href="#53">53</a>  
-<a class="jxr_linenumber" name="54" href="#54">54</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> max delay in msec used to bound the deprioritized requests */</em>
-<a class="jxr_linenumber" name="55" href="#55">55</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String QUEUE_MAX_CALL_DELAY_CONF_KEY
-<a class="jxr_linenumber" name="56" href="#56">56</a>        = <span class="jxr_string">"hbase.ipc.server.queue.max.call.delay"</span>;
-<a class="jxr_linenumber" name="57" href="#57">57</a>  
-<a class="jxr_linenumber" name="58" href="#58">58</a>    <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment">   * Comparator used by the "normal callQueue" if DEADLINE_CALL_QUEUE_CONF_KEY is set to true.</em>
-<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment">   * It uses the calculated "deadline" e.g. to deprioritize long-running job</em>
-<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment">   * If multiple requests have the same deadline BoundedPriorityBlockingQueue will order them in</em>
-<a class="jxr_linenumber" name="63" href="#63">63</a>  <em class="jxr_javadoccomment">   * FIFO (first-in-first-out) manner.</em>
-<a class="jxr_linenumber" name="64" href="#64">64</a>  <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="65" href="#65">65</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">CallPriorityComparator</a> <strong class="jxr_keyword">implements</strong> Comparator&lt;CallRunner&gt; {
-<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> DEFAULT_MAX_CALL_DELAY = 5000;
-<a class="jxr_linenumber" name="67" href="#67">67</a>  
-<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/PriorityFunction.html">PriorityFunction</a> priority;
-<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> maxDelay;
-<a class="jxr_linenumber" name="70" href="#70">70</a>  
-<a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">CallPriorityComparator</a>(<strong class="jxr_keyword">final</strong> Configuration conf, <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/PriorityFunction.html">PriorityFunction</a> priority) {
-<a class="jxr_linenumber" name="72" href="#72">72</a>        <strong class="jxr_keyword">this</strong>.priority = priority;
-<a class="jxr_linenumber" name="73" href="#73">73</a>        <strong class="jxr_keyword">this</strong>.maxDelay = conf.getInt(QUEUE_MAX_CALL_DELAY_CONF_KEY, DEFAULT_MAX_CALL_DELAY);
-<a class="jxr_linenumber" name="74" href="#74">74</a>      }
-<a class="jxr_linenumber" name="75" href="#75">75</a>  
-<a class="jxr_linenumber" name="76" href="#76">76</a>      @Override
-<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> compare(<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html">CallRunner</a> a, <a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html">CallRunner</a> b) {
-<a class="jxr_linenumber" name="78" href="#78">78</a>        RpcServer.Call callA = a.getCall();
-<a class="jxr_linenumber" name="79" href="#79">79</a>        RpcServer.Call callB = b.getCall();
-<a class="jxr_linenumber" name="80" href="#80">80</a>        <strong class="jxr_keyword">long</strong> deadlineA = priority.getDeadline(callA.getHeader(), callA.param);
-<a class="jxr_linenumber" name="81" href="#81">81</a>        <strong class="jxr_keyword">long</strong> deadlineB = priority.getDeadline(callB.getHeader(), callB.param);
-<a class="jxr_linenumber" name="82" href="#82">82</a>        deadlineA = callA.timestamp + Math.min(deadlineA, maxDelay);
-<a class="jxr_linenumber" name="83" href="#83">83</a>        deadlineB = callB.timestamp + Math.min(deadlineB, maxDelay);
-<a class="jxr_linenumber" name="84" href="#84">84</a>        <strong class="jxr_keyword">return</strong> (<strong class="jxr_keyword">int</strong>)(deadlineA - deadlineB);
-<a class="jxr_linenumber" name="85" href="#85">85</a>      }
-<a class="jxr_linenumber" name="86" href="#86">86</a>    }
-<a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> port;
-<a class="jxr_linenumber" name="89" href="#89">89</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/PriorityFunction.html">PriorityFunction</a> priority;
-<a class="jxr_linenumber" name="90" href="#90">90</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RpcExecutor</a> callExecutor;
-<a class="jxr_linenumber" name="91" href="#91">91</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RpcExecutor</a> priorityExecutor;
-<a class="jxr_linenumber" name="92" href="#92">92</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RpcExecutor</a> replicationExecutor;
-<a class="jxr_linenumber" name="93" href="#93">93</a>  
-<a class="jxr_linenumber" name="94" href="#94">94</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> What level a high priority call is at. */</em>
-<a class="jxr_linenumber" name="95" href="#95">95</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> highPriorityLevel;
-<a class="jxr_linenumber" name="96" href="#96">96</a>  
-<a class="jxr_linenumber" name="97" href="#97">97</a>    <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/Abortable.html">Abortable</a> abortable = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="98" href="#98">98</a>  
-<a class="jxr_linenumber" name="99" href="#99">99</a>    <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="100" href="#100">100</a> <em class="jxr_javadoccomment">   * @param conf</em>
-<a class="jxr_linenumber" name="101" href="#101">101</a> <em class="jxr_javadoccomment">   * @param handlerCount the number of handler threads that will be used to process calls</em>
-<a class="jxr_linenumber" name="102" href="#102">102</a> <em class="jxr_javadoccomment">   * @param priorityHandlerCount How many threads for priority handling.</em>
-<a class="jxr_linenumber" name="103" href="#103">103</a> <em class="jxr_javadoccomment">   * @param replicationHandlerCount How many threads for replication handling.</em>
-<a class="jxr_linenumber" name="104" href="#104">104</a> <em class="jxr_javadoccomment">   * @param highPriorityLevel</em>
-<a class="jxr_linenumber" name="105" href="#105">105</a> <em class="jxr_javadoccomment">   * @param priority Function to extract request priority.</em>
-<a class="jxr_linenumber" name="106" href="#106">106</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="107" href="#107">107</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">SimpleRpcScheduler</a>(
-<a class="jxr_linenumber" name="108" href="#108">108</a>       Configuration conf,
-<a class="jxr_linenumber" name="109" href="#109">109</a>       <strong class="jxr_keyword">int</strong> handlerCount,
-<a class="jxr_linenumber" name="110" href="#110">110</a>       <strong class="jxr_keyword">int</strong> priorityHandlerCount,
-<a class="jxr_linenumber" name="111" href="#111">111</a>       <strong class="jxr_keyword">int</strong> replicationHandlerCount,
-<a class="jxr_linenumber" name="112" href="#112">112</a>       <a href="../../../../../org/apache/hadoop/hbase/ipc/PriorityFunction.html">PriorityFunction</a> priority,
-<a class="jxr_linenumber" name="113" href="#113">113</a>       <a href="../../../../../org/apache/hadoop/hbase/Abortable.html">Abortable</a> server,
-<a class="jxr_linenumber" name="114" href="#114">114</a>       <strong class="jxr_keyword">int</strong> highPriorityLevel) {
-<a class="jxr_linenumber" name="115" href="#115">115</a>     <strong class="jxr_keyword">int</strong> maxQueueLength = conf.getInt(<span class="jxr_string">"hbase.ipc.server.max.callqueue.length"</span>,
-<a class="jxr_linenumber" name="116" href="#116">116</a>         handlerCount * RpcServer.DEFAULT_MAX_CALLQUEUE_LENGTH_PER_HANDLER);
-<a class="jxr_linenumber" name="117" href="#117">117</a>     <strong class="jxr_keyword">this</strong>.priority = priority;
-<a class="jxr_linenumber" name="118" href="#118">118</a>     <strong class="jxr_keyword">this</strong>.highPriorityLevel = highPriorityLevel;
-<a class="jxr_linenumber" name="119" href="#119">119</a>     <strong class="jxr_keyword">this</strong>.abortable = server;
-<a class="jxr_linenumber" name="120" href="#120">120</a> 
-<a class="jxr_linenumber" name="121" href="#121">121</a>     String callQueueType = conf.get(CALL_QUEUE_TYPE_CONF_KEY, CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE);
-<a class="jxr_linenumber" name="122" href="#122">122</a>     <strong class="jxr_keyword">float</strong> callqReadShare = conf.getFloat(CALL_QUEUE_READ_SHARE_CONF_KEY, 0);
-<a class="jxr_linenumber" name="123" href="#123">123</a>     <strong class="jxr_keyword">float</strong> callqScanShare = conf.getFloat(CALL_QUEUE_SCAN_SHARE_CONF_KEY, 0);
-<a class="jxr_linenumber" name="124" href="#124">124</a> 
-<a class="jxr_linenumber" name="125" href="#125">125</a>     <strong class="jxr_keyword">float</strong> callQueuesHandlersFactor = conf.getFloat(CALL_QUEUE_HANDLER_FACTOR_CONF_KEY, 0);
-<a class="jxr_linenumber" name="126" href="#126">126</a>     <strong class="jxr_keyword">int</strong> numCallQueues = Math.max(1, (<strong class="jxr_keyword">int</strong>)Math.round(handlerCount * callQueuesHandlersFactor));
-<a class="jxr_linenumber" name="127" href="#127">127</a> 
-<a class="jxr_linenumber" name="128" href="#128">128</a>     LOG.info(<span class="jxr_string">"Using "</span> + callQueueType + <span class="jxr_string">" as user call queue, count="</span> + numCallQueues);
-<a class="jxr_linenumber" name="129" href="#129">129</a> 
-<a class="jxr_linenumber" name="130" href="#130">130</a>     <strong class="jxr_keyword">if</strong> (numCallQueues &gt; 1 &amp;&amp; callqReadShare &gt; 0) {
-<a class="jxr_linenumber" name="131" href="#131">131</a>       <em class="jxr_comment">// multiple read/write queues</em>
-<a class="jxr_linenumber" name="132" href="#132">132</a>       <strong class="jxr_keyword">if</strong> (callQueueType.equals(CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE)) {
-<a class="jxr_linenumber" name="133" href="#133">133</a>         <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">CallPriorityComparator</a> callPriority = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">CallPriorityComparator</a>(conf, <strong class="jxr_keyword">this</strong>.priority);
-<a class="jxr_linenumber" name="134" href="#134">134</a>         callExecutor = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html">RWQueueRpcExecutor</a>(<span class="jxr_string">"RW.default"</span>, handlerCount, numCallQueues,
-<a class="jxr_linenumber" name="135" href="#135">135</a>             callqReadShare, callqScanShare, maxQueueLength, conf, abortable,
-<a class="jxr_linenumber" name="136" href="#136">136</a>             BoundedPriorityBlockingQueue.<strong class="jxr_keyword">class</strong>, callPriority);
-<a class="jxr_linenumber" name="137" href="#137">137</a>       } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="138" href="#138">138</a>         callExecutor = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html">RWQueueRpcExecutor</a>(<span class="jxr_string">"RW.default"</span>, handlerCount, numCallQueues,
-<a class="jxr_linenumber" name="139" href="#139">139</a>           callqReadShare, callqScanShare, maxQueueLength, conf, abortable);
-<a class="jxr_linenumber" name="140" href="#140">140</a>       }
-<a class="jxr_linenumber" name="141" href="#141">141</a>     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="142" href="#142">142</a>       <em class="jxr_comment">// multiple queues</em>
-<a class="jxr_linenumber" name="143" href="#143">143</a>       <strong class="jxr_keyword">if</strong> (callQueueType.equals(CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE)) {
-<a class="jxr_linenumber" name="144" href="#144">144</a>         <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">CallPriorityComparator</a> callPriority = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">CallPriorityComparator</a>(conf, <strong class="jxr_keyword">this</strong>.priority);
-<a class="jxr_linenumber" name="145" href="#145">145</a>         callExecutor = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html">BalancedQueueRpcExecutor</a>(<span class="jxr_string">"B.default"</span>, handlerCount, numCallQueues,
-<a class="jxr_linenumber" name="146" href="#146">146</a>           conf, abortable, BoundedPriorityBlockingQueue.<strong class="jxr_keyword">class</strong>, maxQueueLength, callPriority);
-<a class="jxr_linenumber" name="147" href="#147">147</a>       } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="148" href="#148">148</a>         callExecutor = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html">BalancedQueueRpcExecutor</a>(<span class="jxr_string">"B.default"</span>, handlerCount,
-<a class="jxr_linenumber" name="149" href="#149">149</a>             numCallQueues, maxQueueLength, conf, abortable);
-<a class="jxr_linenumber" name="150" href="#150">150</a>       }
-<a class="jxr_linenumber" name="151" href="#151">151</a>     }
-<a class="jxr_linenumber" name="152" href="#152">152</a> 
-<a class="jxr_linenumber" name="153" href="#153">153</a>     <em class="jxr_comment">// Create 2 queues to help priorityExecutor be more scalable.</em>
-<a class="jxr_linenumber" name="154" href="#154">154</a>     <strong class="jxr_keyword">this</strong>.priorityExecutor = priorityHandlerCount &gt; 0 ?
-<a class="jxr_linenumber" name="155" href="#155">155</a>         <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html">BalancedQueueRpcExecutor</a>(<span class="jxr_string">"Priority"</span>, priorityHandlerCount, 2, maxQueueLength) : <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="156" href="#156">156</a> 
-<a class="jxr_linenumber" name="157" href="#157">157</a>    <strong class="jxr_keyword">this</strong>.replicationExecutor =
-<a class="jxr_linenumber" name="158" href="#158">158</a>      replicationHandlerCount &gt; 0 ? <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html">BalancedQueueRpcExecutor</a>(<span class="jxr_string">"Replication"</span>,
-<a class="jxr_linenumber" name="159" href="#159">159</a>        replicationHandlerCount, 1, maxQueueLength, conf, abortable) : <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="160" href="#160">160</a>   }
-<a class="jxr_linenumber" name="161" href="#161">161</a> 
-<a class="jxr_linenumber" name="162" href="#162">162</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">SimpleRpcScheduler</a>(
-<a class="jxr_linenumber" name="163" href="#163">163</a> 	      Configuration conf,
-<a class="jxr_linenumber" name="164" href="#164">164</a> 	      <strong class="jxr_keyword">int</strong> handlerCount,
-<a class="jxr_linenumber" name="165" href="#165">165</a> 	      <strong class="jxr_keyword">int</strong> priorityHandlerCount,
-<a class="jxr_linenumber" name="166" href="#166">166</a> 	      <strong class="jxr_keyword">int</strong> replicationHandlerCount,
-<a class="jxr_linenumber" name="167" href="#167">167</a> 	      PriorityFunction priority,
-<a class="jxr_linenumber" name="168" href="#168">168</a> 	      <strong class="jxr_keyword">int</strong> highPriorityLevel) {
-<a class="jxr_linenumber" name="169" href="#169">169</a> 	  <strong class="jxr_keyword">this</strong>(conf, handlerCount, priorityHandlerCount, replicationHandlerCount, priority,
-<a class="jxr_linenumber" name="170" href="#170">170</a> 	    <strong class="jxr_keyword">null</strong>, highPriorityLevel);
-<a class="jxr_linenumber" name="171" href="#171">171</a>   }
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.conf.ConfigurationObserver;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.BoundedPriorityBlockingQueue;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> * A scheduler that maintains isolated handler pools for general,</em>
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> * high-priority, and replication requests.</em>
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="38" href="#38">38</a>  @InterfaceAudience.LimitedPrivate({HBaseInterfaceAudience.COPROC, HBaseInterfaceAudience.PHOENIX})
+<a class="jxr_linenumber" name="39" href="#39">39</a>  @InterfaceStability.Evolving
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">SimpleRpcScheduler</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html">RpcScheduler</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html">ConfigurationObserver</a> {
+<a class="jxr_linenumber" name="41" href="#41">41</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(SimpleRpcScheduler.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="42" href="#42">42</a>  
+<a class="jxr_linenumber" name="43" href="#43">43</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CALL_QUEUE_READ_SHARE_CONF_KEY =
+<a class="jxr_linenumber" name="44" href="#44">44</a>        <span class="jxr_string">"hbase.ipc.server.callqueue.read.ratio"</span>;
+<a class="jxr_linenumber" name="45" href="#45">45</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CALL_QUEUE_SCAN_SHARE_CONF_KEY =
+<a class="jxr_linenumber" name="46" href="#46">46</a>        <span class="jxr_string">"hbase.ipc.server.callqueue.scan.ratio"</span>;
+<a class="jxr_linenumber" name="47" href="#47">47</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CALL_QUEUE_HANDLER_FACTOR_CONF_KEY =
+<a class="jxr_linenumber" name="48" href="#48">48</a>        <span class="jxr_string">"hbase.ipc.server.callqueue.handler.factor"</span>;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  
+<a class="jxr_linenumber" name="50" href="#50">50</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> If set to 'deadline', uses a priority queue and deprioritize long-running scans */</em>
+<a class="jxr_linenumber" name="51" href="#51">51</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CALL_QUEUE_TYPE_CONF_KEY = <span class="jxr_string">"hbase.ipc.server.callqueue.type"</span>;
+<a class="jxr_linenumber" name="52" href="#52">52</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE = <span class="jxr_string">"deadline"</span>;
+<a class="jxr_linenumber" name="53" href="#53">53</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CALL_QUEUE_TYPE_FIFO_CONF_VALUE = <span class="jxr_string">"fifo"</span>;
+<a class="jxr_linenumber" name="54" href="#54">54</a>  
+<a class="jxr_linenumber" name="55" href="#55">55</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> max delay in msec used to bound the deprioritized requests */</em>
+<a class="jxr_linenumber" name="56" href="#56">56</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String QUEUE_MAX_CALL_DELAY_CONF_KEY
+<a class="jxr_linenumber" name="57" href="#57">57</a>        = <span class="jxr_string">"hbase.ipc.server.queue.max.call.delay"</span>;
+<a class="jxr_linenumber" name="58" href="#58">58</a>  
+<a class="jxr_linenumber" name="59" href="#59">59</a>    <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment">   * Resize call queues;</em>
+<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment">   * @param conf new configuration</em>
+<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="63" href="#63">63</a>    @Override
+<a class="jxr_linenumber" name="64" href="#64">64</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onConfigurationChange(Configuration conf) {
+<a class="jxr_linenumber" name="65" href="#65">65</a>      callExecutor.resizeQueues(conf);
+<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">if</strong> (priorityExecutor != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="67" href="#67">67</a>        priorityExecutor.resizeQueues(conf);
+<a class="jxr_linenumber" name="68" href="#68">68</a>      }
+<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">if</strong> (replicationExecutor != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="70" href="#70">70</a>        replicationExecutor.resizeQueues(conf);
+<a class="jxr_linenumber" name="71" href="#71">71</a>      }
+<a class="jxr_linenumber" name="72" href="#72">72</a>    }
+<a class="jxr_linenumber" name="73" href="#73">73</a>  
+<a class="jxr_linenumber" name="74" href="#74">74</a>    <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="75" href="#75">75</a>  <em class="jxr_javadoccomment">   * Comparator used by the "normal callQueue" if DEADLINE_CALL_QUEUE_CONF_KEY is set to true.</em>
+<a class="jxr_linenumber" name="76" href="#76">76</a>  <em class="jxr_javadoccomment">   * It uses the calculated "deadline" e.g. to deprioritize long-running job</em>
+<a class="jxr_linenumber" name="77" href="#77">77</a>  <em class="jxr_javadoccomment">   *</em>
+<a class="jxr_linenumber" name="78" href="#78">78</a>  <em class="jxr_javadoccomment">   * If multiple requests have the same deadline BoundedPriorityBlockingQueue will order them in</em>
+<a class="jxr_linenumber" name="79" href="#79">79</a>  <em class="jxr_javadoccomment">   * FIFO (first-in-first-out) manner.</em>
+<a class="jxr_linenumber" name="80" href="#80">80</a>  <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="81" href="#81">81</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">CallPriorityComparator</a> <strong class="jxr_keyword">implements</strong> Comparator&lt;CallRunner&gt; {
+<a class="jxr_linenumber" name="82" href="#82">82</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> DEFAULT_MAX_CALL_DELAY = 5000;
+<a class="jxr_linenumber" name="83" href="#83">83</a>  
+<a class="jxr_linenumber" name="84" href="#84">84</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/PriorityFunction.html">PriorityFunction</a> priority;
+<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> maxDelay;
+<a class="jxr_linenumber" name="86" href="#86">86</a>  
+<a class="jxr_linenumber" name="87" href="#87">87</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">CallPriorityComparator</a>(<strong class="jxr_keyword">final</strong> Configuration conf, <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/PriorityFunction.html">PriorityFunction</a> priority) {
+<a class="jxr_linenumber" name="88" href="#88">88</a>        <strong class="jxr_keyword">this</strong>.priority = priority;
+<a class="jxr_linenumber" name="89" href="#89">89</a>        <strong class="jxr_keyword">this</strong>.maxDelay = conf.getInt(QUEUE_MAX_CALL_DELAY_CONF_KEY, DEFAULT_MAX_CALL_DELAY);
+<a class="jxr_linenumber" name="90" href="#90">90</a>      }
+<a class="jxr_linenumber" name="91" href="#91">91</a>  
+<a class="jxr_linenumber" name="92" href="#92">92</a>      @Override
+<a class="jxr_linenumber" name="93" href="#93">93</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> compare(<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html">CallRunner</a> a, <a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html">CallRunner</a> b) {
+<a class="jxr_linenumber" name="94" href="#94">94</a>        RpcServer.Call callA = a.getCall();
+<a class="jxr_linenumber" name="95" href="#95">95</a>        RpcServer.Call callB = b.getCall();
+<a class="jxr_linenumber" name="96" href="#96">96</a>        <strong class="jxr_keyword">long</strong> deadlineA = priority.getDeadline(callA.getHeader(), callA.param);
+<a class="jxr_linenumber" name="97" href="#97">97</a>        <strong class="jxr_keyword">long</strong> deadlineB = priority.getDeadline(callB.getHeader(), callB.param);
+<a class="jxr_linenumber" name="98" href="#98">98</a>        deadlineA = callA.timestamp + Math.min(deadlineA, maxDelay);
+<a class="jxr_linenumber" name="99" href="#99">99</a>        deadlineB = callB.timestamp + Math.min(deadlineB, maxDelay);
+<a class="jxr_linenumber" name="100" href="#100">100</a>       <strong class="jxr_keyword">return</strong> (<strong class="jxr_keyword">int</strong>)(deadlineA - deadlineB);
+<a class="jxr_linenumber" name="101" href="#101">101</a>     }
+<a class="jxr_linenumber" name="102" href="#102">102</a>   }
+<a class="jxr_linenumber" name="103" href="#103">103</a> 
+<a class="jxr_linenumber" name="104" href="#104">104</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> port;
+<a class="jxr_linenumber" name="105" href="#105">105</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/PriorityFunction.html">PriorityFunction</a> priority;
+<a class="jxr_linenumber" name="106" href="#106">106</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RpcExecutor</a> callExecutor;
+<a class="jxr_linenumber" name="107" href="#107">107</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RpcExecutor</a> priorityExecutor;
+<a class="jxr_linenumber" name="108" href="#108">108</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RpcExecutor</a> replicationExecutor;
+<a class="jxr_linenumber" name="109" href="#109">109</a> 
+<a class="jxr_linenumber" name="110" href="#110">110</a>   <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> What level a high priority call is at. */</em>
+<a class="jxr_linenumber" name="111" href="#111">111</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> highPriorityLevel;
+<a class="jxr_linenumber" name="112" href="#112">112</a> 
+<a class="jxr_linenumber" name="113" href="#113">113</a>   <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/Abortable.html">Abortable</a> abortable = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="114" href="#114">114</a> 
+<a class="jxr_linenumber" name="115" href="#115">115</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="116" href="#116">116</a> <em class="jxr_javadoccomment">   * @param conf</em>
+<a class="jxr_linenumber" name="117" href="#117">117</a> <em class="jxr_javadoccomment">   * @param handlerCount the number of handler threads that will be used to process calls</em>
+<a class="jxr_linenumber" name="118" href="#118">118</a> <em class="jxr_javadoccomment">   * @param priorityHandlerCount How many threads for priority handling.</em>
+<a class="jxr_linenumber" name="119" href="#119">119</a> <em class="jxr_javadoccomment">   * @param replicationHandlerCount How many threads for replication handling.</em>
+<a class="jxr_linenumber" name="120" href="#120">120</a> <em class="jxr_javadoccomment">   * @param highPriorityLevel</em>
+<a class="jxr_linenumber" name="121" href="#121">121</a> <em class="jxr_javadoccomment">   * @param priority Function to extract request priority.</em>
+<a class="jxr_linenumber" name="122" href="#122">122</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="123" href="#123">123</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">SimpleRpcScheduler</a>(
+<a class="jxr_linenumber" name="124" href="#124">124</a>       Configuration conf,
+<a class="jxr_linenumber" name="125" href="#125">125</a>       <strong class="jxr_keyword">int</strong> handlerCount,
+<a class="jxr_linenumber" name="126" href="#126">126</a>       <strong class="jxr_keyword">int</strong> priorityHandlerCount,
+<a class="jxr_linenumber" name="127" href="#127">127</a>       <strong class="jxr_keyword">int</strong> replicationHandlerCount,
+<a class="jxr_linenumber" name="128" href="#128">128</a>       <a href="../../../../../org/apache/hadoop/hbase/ipc/PriorityFunction.html">PriorityFunction</a> priority,
+<a class="jxr_linenumber" name="129" href="#129">129</a>       <a href="../../../../../org/apache/hadoop/hbase/Abortable.html">Abortable</a> server,
+<a class="jxr_linenumber" name="130" href="#130">130</a>       <strong class="jxr_keyword">int</strong> highPriorityLevel) {
+<a class="jxr_linenumber" name="131" href="#131">131</a>     <strong class="jxr_keyword">int</strong> maxQueueLength = conf.getInt(<span class="jxr_string">"hbase.ipc.server.max.callqueue.length"</span>,
+<a class="jxr_linenumber" name="132" href="#132">132</a>         handlerCount * RpcServer.DEFAULT_MAX_CALLQUEUE_LENGTH_PER_HANDLER);
+<a class="jxr_linenumber" name="133" href="#133">133</a>     <strong class="jxr_keyword">this</strong>.priority = priority;
+<a class="jxr_linenumber" name="134" href="#134">134</a>     <strong class="jxr_keyword">this</strong>.highPriorityLevel = highPriorityLevel;
+<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">this</strong>.abortable = server;
+<a class="jxr_linenumber" name="136" href="#136">136</a> 
+<a class="jxr_linenumber" name="137" href="#137">137</a>     String callQueueType = conf.get(CALL_QUEUE_TYPE_CONF_KEY, CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE);
+<a class="jxr_linenumber" name="138" href="#138">138</a>     <strong class="jxr_keyword">float</strong> callqReadShare = conf.getFloat(CALL_QUEUE_READ_SHARE_CONF_KEY, 0);
+<a class="jxr_linenumber" name="139" href="#139">139</a>     <strong class="jxr_keyword">float</strong> callqScanShare = conf.getFloat(CALL_QUEUE_SCAN_SHARE_CONF_KEY, 0);
+<a class="jxr_linenumber" name="140" href="#140">140</a> 
+<a class="jxr_linenumber" name="141" href="#141">141</a>     <strong class="jxr_keyword">float</strong> callQueuesHandlersFactor = conf.getFloat(CALL_QUEUE_HANDLER_FACTOR_CONF_KEY, 0);
+<a class="jxr_linenumber" name="142" href="#142">142</a>     <strong class="jxr_keyword">int</strong> numCallQueues = Math.max(1, (<strong class="jxr_keyword">int</strong>)Math.round(handlerCount * callQueuesHandlersFactor));
+<a class="jxr_linenumber" name="143" href="#143">143</a> 
+<a class="jxr_linenumber" name="144" href="#144">144</a>     LOG.info(<span class="jxr_string">"Using "</span> + callQueueType + <span class="jxr_string">" as user call queue, count="</span> + numCallQueues);
+<a class="jxr_linenumber" name="145" href="#145">145</a> 
+<a class="jxr_linenumber" name="146" href="#146">146</a>     <strong class="jxr_keyword">if</strong> (numCallQueues &gt; 1 &amp;&amp; callqReadShare &gt; 0) {
+<a class="jxr_linenumber" name="147" href="#147">147</a>       <em class="jxr_comment">// multiple read/write queues</em>
+<a class="jxr_linenumber" name="148" href="#148">148</a>       <strong class="jxr_keyword">if</strong> (callQueueType.equals(CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE)) {
+<a class="jxr_linenumber" name="149" href="#149">149</a>         <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">CallPriorityComparator</a> callPriority = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">CallPriorityComparator</a>(conf, <strong class="jxr_keyword">this</strong>.priority);
+<a class="jxr_linenumber" name="150" href="#150">150</a>         callExecutor = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html">RWQueueRpcExecutor</a>(<span class="jxr_string">"RW.default"</span>, handlerCount, numCallQueues,
+<a class="jxr_linenumber" name="151" href="#151">151</a>             callqReadShare, callqScanShare, maxQueueLength, conf, abortable,
+<a class="jxr_linenumber" name="152" href="#152">152</a>             BoundedPriorityBlockingQueue.<strong class="jxr_keyword">class</strong>, callPriority);
+<a class="jxr_linenumber" name="153" href="#153">153</a>       } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="154" href="#154">154</a>         callExecutor = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html">RWQueueRpcExecutor</a>(<span class="jxr_string">"RW.default"</span>, handlerCount, numCallQueues,
+<a class="jxr_linenumber" name="155" href="#155">155</a>           callqReadShare, callqScanShare, maxQueueLength, conf, abortable);
+<a class="jxr_linenumber" name="156" href="#156">156</a>       }
+<a class="jxr_linenumber" name="157" href="#157">157</a>     } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="158" href="#158">158</a>       <em class="jxr_comment">// multiple queues</em>
+<a class="jxr_linenumber" name="159" href="#159">159</a>       <strong class="jxr_keyword">if</strong> (callQueueType.equals(CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE)) {
+<a class="jxr_linenumber" name="160" href="#160">160</a>         <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">CallPriorityComparator</a> callPriority = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">CallPriorityComparator</a>(conf, <strong class="jxr_keyword">this</strong>.priority);
+<a class="jxr_linenumber" name="161" href="#161">161</a>         callExecutor = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html">BalancedQueueRpcExecutor</a>(<span class="jxr_string">"B.default"</span>, handlerCount, numCallQueues,
+<a class="jxr_linenumber" name="162" href="#162">162</a>           conf, abortable, BoundedPriorityBlockingQueue.<strong class="jxr_keyword">class</strong>, maxQueueLength, callPriority);
+<a class="jxr_linenumber" name="163" href="#163">163</a>       } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="164" href="#164">164</a>         callExecutor = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html">BalancedQueueRpcExecutor</a>(<span class="jxr_string">"B.default"</span>, handlerCount,
+<a class="jxr_linenumber" name="165" href="#165">165</a>             numCallQueues, maxQueueLength, conf, abortable);
+<a class="jxr_linenumber" name="166" href="#166">166</a>       }
+<a class="jxr_linenumber" name="167" href="#167">167</a>     }
+<a class="jxr_linenumber" name="168" href="#168">168</a> 
+<a class="jxr_linenumber" name="169" href="#169">169</a>     <em class="jxr_comment">// Create 2 queues to help priorityExecutor be more scalable.</em>
+<a class="jxr_linenumber" name="170" href="#170">170</a>     <strong class="jxr_keyword">this</strong>.priorityExecutor = priorityHandlerCount &gt; 0 ?
+<a class="jxr_linenumber" name="171" href="#171">171</a>         <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html">BalancedQueueRpcExecutor</a>(<span class="jxr_string">"Priority"</span>, priorityHandlerCount, 2, maxQueueLength) : <strong class="jxr_keyword">null</strong>;
 <a class="jxr_linenumber" name="172" href="#172">172</a> 
-<a class="jxr_linenumber" name="173" href="#173">173</a>   @Override
-<a class="jxr_linenumber" name="174" href="#174">174</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> init(<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html">Context</a> context) {
-<a class="jxr_linenumber" name="175" href="#175">175</a>     <strong class="jxr_keyword">this</strong>.port = context.getListenerAddress().getPort();
+<a class="jxr_linenumber" name="173" href="#173">173</a>    <strong class="jxr_keyword">this</strong>.replicationExecutor =
+<a class="jxr_linenumber" name="174" href="#174">174</a>      replicationHandlerCount &gt; 0 ? <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html">BalancedQueueRpcExecutor</a>(<span class="jxr_string">"Replication"</span>,
+<a class="jxr_linenumber" name="175" href="#175">175</a>        replicationHandlerCount, 1, maxQueueLength, conf, abortable) : <strong class="jxr_keyword">null</strong>;
 <a class="jxr_linenumber" name="176" href="#176">176</a>   }
 <a class="jxr_linenumber" name="177" href="#177">177</a> 
-<a class="jxr_linenumber" name="178" href="#178">178</a>   @Override
-<a class="jxr_linenumber" name="179" href="#179">179</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> start() {
-<a class="jxr_linenumber" name="180" href="#180">180</a>     callExecutor.start(port);
-<a class="jxr_linenumber" name="181" href="#181">181</a>     <strong class="jxr_keyword">if</strong> (priorityExecutor != <strong class="jxr_keyword">null</strong>) priorityExecutor.start(port);
-<a class="jxr_linenumber" name="182" href="#182">182</a>     <strong class="jxr_keyword">if</strong> (replicationExecutor != <strong class="jxr_keyword">null</strong>) replicationExecutor.start(port);
-<a class="jxr_linenumber" name="183" href="#183">183</a>   }
-<a class="jxr_linenumber" name="184" href="#184">184</a> 
-<a class="jxr_linenumber" name="185" href="#185">185</a>   @Override
-<a class="jxr_linenumber" name="186" href="#186">186</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> stop() {
-<a class="jxr_linenumber" name="187" href="#187">187</a>     callExecutor.stop();
-<a class="jxr_linenumber" name="188" href="#188">188</a>     <strong class="jxr_keyword">if</strong> (priorityExecutor != <strong class="jxr_keyword">null</strong>) priorityExecutor.stop();
-<a class="jxr_linenumber" name="189" href="#189">189</a>     <strong class="jxr_keyword">if</strong> (replicationExecutor != <strong class="jxr_keyword">null</strong>) replicationExecutor.stop();
-<a class="jxr_linenumber" name="190" href="#190">190</a>   }
-<a class="jxr_linenumber" name="191" href="#191">191</a> 
-<a class="jxr_linenumber" name="192" href="#192">192</a>   @Override
-<a class="jxr_linenumber" name="193" href="#193">193</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> dispatch(<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html">CallRunner</a> callTask) <strong class="jxr_keyword">throws</strong> InterruptedException {
-<a class="jxr_linenumber" name="194" href="#194">194</a>     RpcServer.Call call = callTask.getCall();
-<a class="jxr_linenumber" name="195" href="#195">195</a>     <strong class="jxr_keyword">int</strong> level = priority.getPriority(call.getHeader(), call.param, call.getRequestUser());
-<a class="jxr_linenumber" name="196" href="#196">196</a>     <strong class="jxr_keyword">if</strong> (priorityExecutor != <strong class="jxr_keyword">null</strong> &amp;&amp; level &gt; highPriorityLevel) {
-<a class="jxr_linenumber" name="197" href="#197">197</a>       <strong class="jxr_keyword">return</strong> priorityExecutor.dispatch(callTask);
-<a class="jxr_linenumber" name="198" href="#198">198</a>     } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (replicationExecutor != <strong class="jxr_keyword">null</strong> &amp;&amp; level == HConstants.REPLICATION_QOS) {
-<a class="jxr_linenumber" name="199" href="#199">199</a>       <strong class="jxr_keyword">return</strong> replicationExecutor.dispatch(callTask);
-<a class="jxr_linenumber" name="200" href="#200">200</a>     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="201" href="#201">201</a>       <strong class="jxr_keyword">return</strong> callExecutor.dispatch(callTask);
-<a class="jxr_linenumber" name="202" href="#202">202</a>     }
-<a class="jxr_linenumber" name="203" href="#203">203</a>   }
-<a class="jxr_linenumber" name="204" href="#204">204</a> 
-<a class="jxr_linenumber" name="205" href="#205">205</a>   @Override
-<a class="jxr_linenumber" name="206" href="#206">206</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getGeneralQueueLength() {
-<a class="jxr_linenumber" name="207" href="#207">207</a>     <strong class="jxr_keyword">return</strong> callExecutor.getQueueLength();
-<a class="jxr_linenumber" name="208" href="#208">208</a>   }
-<a class="jxr_linenumber" name="209" href="#209">209</a> 
-<a class="jxr_linenumber" name="210" href="#210">210</a>   @Override
-<a class="jxr_linenumber" name="211" href="#211">211</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getPriorityQueueLength() {
-<a class="jxr_linenumber" name="212" href="#212">212</a>     <strong class="jxr_keyword">return</strong> priorityExecutor == <strong class="jxr_keyword">null</strong> ? 0 : priorityExecutor.getQueueLength();
-<a class="jxr_linenumber" name="213" href="#213">213</a>   }
-<a class="jxr_linenumber" name="214" href="#214">214</a> 
-<a class="jxr_linenumber" name="215" href="#215">215</a>   @Override
-<a class="jxr_linenumber" name="216" href="#216">216</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getReplicationQueueLength() {
-<a class="jxr_linenumber" name="217" href="#217">217</a>     <strong class="jxr_keyword">return</strong> replicationExecutor == <strong class="jxr_keyword">null</strong> ? 0 : replicationExecutor.getQueueLength();
-<a class="jxr_linenumber" name="218" href="#218">218</a>   }
-<a class="jxr_linenumber" name="219" href="#219">219</a> 
-<a class="jxr_linenumber" name="220" href="#220">220</a>   @Override
-<a class="jxr_linenumber" name="221" href="#221">221</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getActiveRpcHandlerCount() {
-<a class="jxr_linenumber" name="222" href="#222">222</a>     <strong class="jxr_keyword">return</strong> callExecutor.getActiveHandlerCount() +
-<a class="jxr_linenumber" name="223" href="#223">223</a>            (priorityExecutor == <strong class="jxr_keyword">null</strong> ? 0 : priorityExecutor.getActiveHandlerCount()) +
-<a class="jxr_linenumber" name="224" href="#224">224</a>            (replicationExecutor == <strong class="jxr_keyword">null</strong> ? 0 : replicationExecutor.getActiveHandlerCount());
-<a class="jxr_linenumber" name="225" href="#225">225</a>   }
-<a class="jxr_linenumber" name="226" href="#226">226</a> }
-<a class="jxr_linenumber" name="227" href="#227">227</a> 
+<a class="jxr_linenumber" name="178" href="#178">178</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html">SimpleRpcScheduler</a>(
+<a class="jxr_linenumber" name="179" href="#179">179</a> 	      Configuration conf,
+<a class="jxr_linenumber" name="180" href="#180">180</a> 	      <strong class="jxr_keyword">int</strong> handlerCount,
+<a class="jxr_linenumber" name="181" href="#181">181</a> 	      <strong class="jxr_keyword">int</strong> priorityHandlerCount,
+<a class="jxr_linenumber" name="182" href="#182">182</a> 	      <strong class="jxr_keyword">int</strong> replicationHandlerCount,
+<a class="jxr_linenumber" name="183" href="#183">183</a> 	      PriorityFunction priority,
+<a class="jxr_linenumber" name="184" href="#184">184</a> 	      <strong class="jxr_keyword">int</strong> highPriorityLevel) {
+<a class="jxr_linenumber" name="185" href="#185">185</a> 	  <strong class="jxr_keyword">this</strong>(conf, handlerCount, priorityHandlerCount, replicationHandlerCount, priority,
+<a class="jxr_linenumber" name="186" href="#186">186</a> 	    <strong class="jxr_keyword">null</strong>, highPriorityLevel);
+<a class="jxr_linenumber" name="187" href="#187">187</a>   }
+<a class="jxr_linenumber" name="188" href="#188">188</a> 
+<a class="jxr_linenumber" name="189" href="#189">189</a>   @Override
+<a class="jxr_linenumber" name="190" href="#190">190</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> init(<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html">Context</a> context) {
+<a class="jxr_linenumber" name="191" href="#191">191</a>     <strong class="jxr_keyword">this</strong>.port = context.getListenerAddress().getPort();
+<a class="jxr_linenumber" name="192" href="#192">192</a>   }
+<a class="jxr_linenumber" name="193" href="#193">193</a> 
+<a class="jxr_linenumber" name="194" href="#194">194</a>   @Override
+<a class="jxr_linenumber" name="195" href="#195">195</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> start() {
+<a class="jxr_linenumber" name="196" href="#196">196</a>     callExecutor.start(port);
+<a class="jxr_linenumber" name="197" href="#197">197</a>     <strong class="jxr_keyword">if</strong> (priorityExecutor != <strong class="jxr_keyword">null</strong>) priorityExecutor.start(port);
+<a class="jxr_linenumber" name="198" href="#198">198</a>     <strong class="jxr_keyword">if</strong> (replicationExecutor != <strong class="jxr_keyword">null</strong>) replicationExecutor.start(port);
+<a class="jxr_linenumber" name="199" href="#199">199</a>   }
+<a class="jxr_linenumber" name="200" href="#200">200</a> 
+<a class="jxr_linenumber" name="201" href="#201">201</a>   @Override
+<a class="jxr_linenumber" name="202" href="#202">202</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> stop() {
+<a class="jxr_linenumber" name="203" href="#203">203</a>     callExecutor.stop();
+<a class="jxr_linenumber" name="204" href="#204">204</a>     <strong class="jxr_keyword">if</strong> (priorityExecutor != <strong class="jxr_keyword">null</strong>) priorityExecutor.stop();
+<a class="jxr_linenumber" name="205" href="#205">205</a>     <strong class="jxr_keyword">if</strong> (replicationExecutor != <strong class="jxr_keyword">null</strong>) replicationExecutor.stop();
+<a class="jxr_linenumber" name="206" href="#206">206</a>   }
+<a class="jxr_linenumber" name="207" href="#207">207</a> 
+<a class="jxr_linenumber" name="208" href="#208">208</a>   @Override
+<a class="jxr_linenumber" name="209" href="#209">209</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> dispatch(<a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html">CallRunner</a> callTask) <strong class="jxr_keyword">throws</strong> InterruptedException {
+<a class="jxr_linenumber" name="210" href="#210">210</a>     RpcServer.Call call = callTask.getCall();
+<a class="jxr_linenumber" name="211" href="#211">211</a>     <strong class="jxr_keyword">int</strong> level = priority.getPriority(call.getHeader(), call.param, call.getRequestUser());
+<a class="jxr_linenumber" name="212" href="#212">212</a>     <strong class="jxr_keyword">if</strong> (priorityExecutor != <strong class="jxr_keyword">null</strong> &amp;&amp; level &gt; highPriorityLevel) {
+<a class="jxr_linenumber" name="213" href="#213">213</a>       <strong class="jxr_keyword">return</strong> priorityExecutor.dispatch(callTask);
+<a class="jxr_linenumber" name="214" href="#214">214</a>     } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (replicationExecutor != <strong class="jxr_keyword">null</strong> &amp;&amp; level == HConstants.REPLICATION_QOS) {
+<a class="jxr_linenumber" name="215" href="#215">215</a>       <strong class="jxr_keyword">return</strong> replicationExecutor.dispatch(callTask);
+<a class="jxr_linenumber" name="216" href="#216">216</a>     } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="217" href="#217">217</a>       <strong class="jxr_keyword">return</strong> callExecutor.dispatch(callTask);
+<a class="jxr_linenumber" name="218" href="#218">218</a>     }
+<a class="jxr_linenumber" name="219" href="#219">219</a>   }
+<a class="jxr_linenumber" name="220" href="#220">220</a> 
+<a class="jxr_linenumber" name="221" href="#221">221</a>   @Override
+<a class="jxr_linenumber" name="222" href="#222">222</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getGeneralQueueLength() {
+<a class="jxr_linenumber" name="223" href="#223">223</a>     <strong class="jxr_keyword">return</strong> callExecutor.getQueueLength();
+<a class="jxr_linenumber" name="224" href="#224">224</a>   }
+<a class="jxr_linenumber" name="225" href="#225">225</a> 
+<a class="jxr_linenumber" name="226" href="#226">226</a>   @Override
+<a class="jxr_linenumber" name="227" href="#227">227</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getPriorityQueueLength() {
+<a class="jxr_linenumber" name="228" href="#228">228</a>     <strong class="jxr_keyword">return</strong> priorityExecutor == <strong class="jxr_keyword">null</strong> ? 0 : priorityExecutor.getQueueLength();
+<a class="jxr_linenumber" name="229" href="#229">229</a>   }
+<a class="jxr_linenumber" name="230" href="#230">230</a> 
+<a class="jxr_linenumber" name="231" href="#231">231</a>   @Override
+<a class="jxr_linenumber" name="232" href="#232">232</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getReplicationQueueLength() {
+<a class="jxr_linenumber" name="233" href="#233">233</a>     <strong class="jxr_keyword">return</strong> replicationExecutor == <strong class="jxr_keyword">null</strong> ? 0 : replicationExecutor.getQueueLength();
+<a class="jxr_linenumber" name="234" href="#234">234</a>   }
+<a class="jxr_linenumber" name="235" href="#235">235</a> 
+<a class="jxr_linenumber" name="236" href="#236">236</a>   @Override
+<a class="jxr_linenumber" name="237" href="#237">237</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getActiveRpcHandlerCount() {
+<a class="jxr_linenumber" name="238" href="#238">238</a>     <strong class="jxr_keyword">return</strong> callExecutor.getActiveHandlerCount() +
+<a class="jxr_linenumber" name="239" href="#239">239</a>            (priorityExecutor == <strong class="jxr_keyword">null</strong> ? 0 : priorityExecutor.getActiveHandlerCount()) +
+<a class="jxr_linenumber" name="240" href="#240">240</a>            (replicationExecutor == <strong class="jxr_keyword">null</strong> ? 0 : replicationExecutor.getActiveHandlerCount());
+<a class="jxr_linenumber" name="241" href="#241">241</a>   }
+<a class="jxr_linenumber" name="242" href="#242">242</a> }
+<a class="jxr_linenumber" name="243" href="#243">243</a> 
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/xref/org/apache/hadoop/hbase/master/TableStateManager.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/master/TableStateManager.html b/xref/org/apache/hadoop/hbase/master/TableStateManager.html
index 504a472..36f528c 100644
--- a/xref/org/apache/hadoop/hbase/master/TableStateManager.html
+++ b/xref/org/apache/hadoop/hbase/master/TableStateManager.html
@@ -141,7 +141,7 @@
 <a class="jxr_linenumber" name="131" href="#131">131</a>       TableState.State tableState = getTableState(tableName);
 <a class="jxr_linenumber" name="132" href="#132">132</a>       <strong class="jxr_keyword">return</strong> TableState.isInStates(tableState, states);
 <a class="jxr_linenumber" name="133" href="#133">133</a>     } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="134" href="#134">134</a>       LOG.error(<span class="jxr_string">"Unable to get table "</span> + tableName + <span class="jxr_string">" state, probably table not exists"</span>);
+<a class="jxr_linenumber" name="134" href="#134">134</a>       LOG.error(<span class="jxr_string">"Unable to get table "</span> + tableName + <span class="jxr_string">" state"</span>, e);
 <a class="jxr_linenumber" name="135" href="#135">135</a>       <strong class="jxr_keyword">return</strong> false;
 <a class="jxr_linenumber" name="136" href="#136">136</a>     }
 <a class="jxr_linenumber" name="137" href="#137">137</a>   }

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.html b/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.html
index 566a0f0..23d23d1 100644
--- a/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.html
+++ b/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.html
@@ -27,9 +27,9 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  @org.jamon.annotations.Template(
 <a class="jxr_linenumber" name="18" href="#18">18</a>    signature = <span class="jxr_string">"E1689F04F06BAD5E628913C375AEB2C0"</span>,
 <a class="jxr_linenumber" name="19" href="#19">19</a>    optionalArguments = {
-<a class="jxr_linenumber" name="20" href="#20">20</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"taskMonitor"</span>, type = <span class="jxr_string">"TaskMonitor"</span>),
+<a class="jxr_linenumber" name="20" href="#20">20</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"format"</span>, type = <span class="jxr_string">"String"</span>),
 <a class="jxr_linenumber" name="21" href="#21">21</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"filter"</span>, type = <span class="jxr_string">"String"</span>),
-<a class="jxr_linenumber" name="22" href="#22">22</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"format"</span>, type = <span class="jxr_string">"String"</span>)})
+<a class="jxr_linenumber" name="22" href="#22">22</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"taskMonitor"</span>, type = <span class="jxr_string">"TaskMonitor"</span>)})
 <a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.html">TaskMonitorTmpl</a>
 <a class="jxr_linenumber" name="24" href="#24">24</a>    <strong class="jxr_keyword">extends</strong> org.jamon.AbstractTemplateProxy
 <a class="jxr_linenumber" name="25" href="#25">25</a>  {
@@ -59,23 +59,23 @@
 <a class="jxr_linenumber" name="49" href="#49">49</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.html">ImplData</a>
 <a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">extends</strong> org.jamon.AbstractTemplateProxy.ImplData
 <a class="jxr_linenumber" name="51" href="#51">51</a>    {
-<a class="jxr_linenumber" name="52" href="#52">52</a>      <em class="jxr_comment">// 27, 1</em>
-<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setTaskMonitor(<a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> taskMonitor)
+<a class="jxr_linenumber" name="52" href="#52">52</a>      <em class="jxr_comment">// 29, 1</em>
+<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFormat(String format)
 <a class="jxr_linenumber" name="54" href="#54">54</a>      {
-<a class="jxr_linenumber" name="55" href="#55">55</a>        <em class="jxr_comment">// 27, 1</em>
-<a class="jxr_linenumber" name="56" href="#56">56</a>        m_taskMonitor = taskMonitor;
-<a class="jxr_linenumber" name="57" href="#57">57</a>        m_taskMonitor__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="55" href="#55">55</a>        <em class="jxr_comment">// 29, 1</em>
+<a class="jxr_linenumber" name="56" href="#56">56</a>        m_format = format;
+<a class="jxr_linenumber" name="57" href="#57">57</a>        m_format__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="58" href="#58">58</a>      }
-<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> getTaskMonitor()
+<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">public</strong> String getFormat()
 <a class="jxr_linenumber" name="60" href="#60">60</a>      {
-<a class="jxr_linenumber" name="61" href="#61">61</a>        <strong class="jxr_keyword">return</strong> m_taskMonitor;
+<a class="jxr_linenumber" name="61" href="#61">61</a>        <strong class="jxr_keyword">return</strong> m_format;
 <a class="jxr_linenumber" name="62" href="#62">62</a>      }
-<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> m_taskMonitor;
-<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getTaskMonitor__IsNotDefault()
+<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">private</strong> String m_format;
+<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFormat__IsNotDefault()
 <a class="jxr_linenumber" name="65" href="#65">65</a>      {
-<a class="jxr_linenumber" name="66" href="#66">66</a>        <strong class="jxr_keyword">return</strong> m_taskMonitor__IsNotDefault;
+<a class="jxr_linenumber" name="66" href="#66">66</a>        <strong class="jxr_keyword">return</strong> m_format__IsNotDefault;
 <a class="jxr_linenumber" name="67" href="#67">67</a>      }
-<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_taskMonitor__IsNotDefault;
+<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_format__IsNotDefault;
 <a class="jxr_linenumber" name="69" href="#69">69</a>      <em class="jxr_comment">// 28, 1</em>
 <a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFilter(String filter)
 <a class="jxr_linenumber" name="71" href="#71">71</a>      {
@@ -93,23 +93,23 @@
 <a class="jxr_linenumber" name="83" href="#83">83</a>        <strong class="jxr_keyword">return</strong> m_filter__IsNotDefault;
 <a class="jxr_linenumber" name="84" href="#84">84</a>      }
 <a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_filter__IsNotDefault;
-<a class="jxr_linenumber" name="86" href="#86">86</a>      <em class="jxr_comment">// 29, 1</em>
-<a class="jxr_linenumber" name="87" href="#87">87</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFormat(String format)
+<a class="jxr_linenumber" name="86" href="#86">86</a>      <em class="jxr_comment">// 27, 1</em>
+<a class="jxr_linenumber" name="87" href="#87">87</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setTaskMonitor(<a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> taskMonitor)
 <a class="jxr_linenumber" name="88" href="#88">88</a>      {
-<a class="jxr_linenumber" name="89" href="#89">89</a>        <em class="jxr_comment">// 29, 1</em>
-<a class="jxr_linenumber" name="90" href="#90">90</a>        m_format = format;
-<a class="jxr_linenumber" name="91" href="#91">91</a>        m_format__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="89" href="#89">89</a>        <em class="jxr_comment">// 27, 1</em>
+<a class="jxr_linenumber" name="90" href="#90">90</a>        m_taskMonitor = taskMonitor;
+<a class="jxr_linenumber" name="91" href="#91">91</a>        m_taskMonitor__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="92" href="#92">92</a>      }
-<a class="jxr_linenumber" name="93" href="#93">93</a>      <strong class="jxr_keyword">public</strong> String getFormat()
+<a class="jxr_linenumber" name="93" href="#93">93</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> getTaskMonitor()
 <a class="jxr_linenumber" name="94" href="#94">94</a>      {
-<a class="jxr_linenumber" name="95" href="#95">95</a>        <strong class="jxr_keyword">return</strong> m_format;
+<a class="jxr_linenumber" name="95" href="#95">95</a>        <strong class="jxr_keyword">return</strong> m_taskMonitor;
 <a class="jxr_linenumber" name="96" href="#96">96</a>      }
-<a class="jxr_linenumber" name="97" href="#97">97</a>      <strong class="jxr_keyword">private</strong> String m_format;
-<a class="jxr_linenumber" name="98" href="#98">98</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFormat__IsNotDefault()
+<a class="jxr_linenumber" name="97" href="#97">97</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> m_taskMonitor;
+<a class="jxr_linenumber" name="98" href="#98">98</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getTaskMonitor__IsNotDefault()
 <a class="jxr_linenumber" name="99" href="#99">99</a>      {
-<a class="jxr_linenumber" name="100" href="#100">100</a>       <strong class="jxr_keyword">return</strong> m_format__IsNotDefault;
+<a class="jxr_linenumber" name="100" href="#100">100</a>       <strong class="jxr_keyword">return</strong> m_taskMonitor__IsNotDefault;
 <a class="jxr_linenumber" name="101" href="#101">101</a>     }
-<a class="jxr_linenumber" name="102" href="#102">102</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_format__IsNotDefault;
+<a class="jxr_linenumber" name="102" href="#102">102</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_taskMonitor__IsNotDefault;
 <a class="jxr_linenumber" name="103" href="#103">103</a>   }
 <a class="jxr_linenumber" name="104" href="#104">104</a>   @Override
 <a class="jxr_linenumber" name="105" href="#105">105</a>   <strong class="jxr_keyword">protected</strong> org.jamon.AbstractTemplateProxy.ImplData makeImplData()
@@ -121,10 +121,10 @@
 <a class="jxr_linenumber" name="111" href="#111">111</a>     <strong class="jxr_keyword">return</strong> (ImplData) <strong class="jxr_keyword">super</strong>.getImplData();
 <a class="jxr_linenumber" name="112" href="#112">112</a>   }
 <a class="jxr_linenumber" name="113" href="#113">113</a>   
-<a class="jxr_linenumber" name="114" href="#114">114</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> taskMonitor;
-<a class="jxr_linenumber" name="115" href="#115">115</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl setTaskMonitor(<a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> p_taskMonitor)
+<a class="jxr_linenumber" name="114" href="#114">114</a>   <strong class="jxr_keyword">protected</strong> String format;
+<a class="jxr_linenumber" name="115" href="#115">115</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl setFormat(String p_format)
 <a class="jxr_linenumber" name="116" href="#116">116</a>   {
-<a class="jxr_linenumber" name="117" href="#117">117</a>     (getImplData()).setTaskMonitor(p_taskMonitor);
+<a class="jxr_linenumber" name="117" href="#117">117</a>     (getImplData()).setFormat(p_format);
 <a class="jxr_linenumber" name="118" href="#118">118</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="119" href="#119">119</a>   }
 <a class="jxr_linenumber" name="120" href="#120">120</a>   
@@ -135,10 +135,10 @@
 <a class="jxr_linenumber" name="125" href="#125">125</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="126" href="#126">126</a>   }
 <a class="jxr_linenumber" name="127" href="#127">127</a>   
-<a class="jxr_linenumber" name="128" href="#128">128</a>   <strong class="jxr_keyword">protected</strong> String format;
-<a class="jxr_linenumber" name="129" href="#129">129</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl setFormat(String p_format)
+<a class="jxr_linenumber" name="128" href="#128">128</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> taskMonitor;
+<a class="jxr_linenumber" name="129" href="#129">129</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl setTaskMonitor(<a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> p_taskMonitor)
 <a class="jxr_linenumber" name="130" href="#130">130</a>   {
-<a class="jxr_linenumber" name="131" href="#131">131</a>     (getImplData()).setFormat(p_format);
+<a class="jxr_linenumber" name="131" href="#131">131</a>     (getImplData()).setTaskMonitor(p_taskMonitor);
 <a class="jxr_linenumber" name="132" href="#132">132</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="133" href="#133">133</a>   }
 <a class="jxr_linenumber" name="134" href="#134">134</a>   

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmplImpl.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmplImpl.html b/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmplImpl.html
index f531e6a..1ff703c 100644
--- a/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmplImpl.html
+++ b/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmplImpl.html
@@ -29,9 +29,9 @@
 <a class="jxr_linenumber" name="19" href="#19">19</a>    <strong class="jxr_keyword">implements</strong> org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl.Intf
 <a class="jxr_linenumber" name="20" href="#20">20</a>  
 <a class="jxr_linenumber" name="21" href="#21">21</a>  {
-<a class="jxr_linenumber" name="22" href="#22">22</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> taskMonitor;
+<a class="jxr_linenumber" name="22" href="#22">22</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String format;
 <a class="jxr_linenumber" name="23" href="#23">23</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String filter;
-<a class="jxr_linenumber" name="24" href="#24">24</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String format;
+<a class="jxr_linenumber" name="24" href="#24">24</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> taskMonitor;
 <a class="jxr_linenumber" name="25" href="#25">25</a>    <em class="jxr_comment">// 31, 1</em>
 <a class="jxr_linenumber" name="26" href="#26">26</a>    
 <a class="jxr_linenumber" name="27" href="#27">27</a>      <strong class="jxr_keyword">public</strong> String encodeFilter() {
@@ -43,26 +43,26 @@
 <a class="jxr_linenumber" name="33" href="#33">33</a>  
 <a class="jxr_linenumber" name="34" href="#34">34</a>    <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl.ImplData p_implData)
 <a class="jxr_linenumber" name="35" href="#35">35</a>    {
-<a class="jxr_linenumber" name="36" href="#36">36</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getTaskMonitor__IsNotDefault())
+<a class="jxr_linenumber" name="36" href="#36">36</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getFormat__IsNotDefault())
 <a class="jxr_linenumber" name="37" href="#37">37</a>      {
-<a class="jxr_linenumber" name="38" href="#38">38</a>        p_implData.setTaskMonitor(TaskMonitor.get());
+<a class="jxr_linenumber" name="38" href="#38">38</a>        p_implData.setFormat(<span class="jxr_string">"html"</span>);
 <a class="jxr_linenumber" name="39" href="#39">39</a>      }
 <a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getFilter__IsNotDefault())
 <a class="jxr_linenumber" name="41" href="#41">41</a>      {
 <a class="jxr_linenumber" name="42" href="#42">42</a>        p_implData.setFilter(<span class="jxr_string">"general"</span>);
 <a class="jxr_linenumber" name="43" href="#43">43</a>      }
-<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getFormat__IsNotDefault())
+<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getTaskMonitor__IsNotDefault())
 <a class="jxr_linenumber" name="45" href="#45">45</a>      {
-<a class="jxr_linenumber" name="46" href="#46">46</a>        p_implData.setFormat(<span class="jxr_string">"html"</span>);
+<a class="jxr_linenumber" name="46" href="#46">46</a>        p_implData.setTaskMonitor(TaskMonitor.get());
 <a class="jxr_linenumber" name="47" href="#47">47</a>      }
 <a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">return</strong> p_implData;
 <a class="jxr_linenumber" name="49" href="#49">49</a>    }
 <a class="jxr_linenumber" name="50" href="#50">50</a>    <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmplImpl.html">TaskMonitorTmplImpl</a>(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl.ImplData p_implData)
 <a class="jxr_linenumber" name="51" href="#51">51</a>    {
 <a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">super</strong>(p_templateManager, __jamon_setOptionalArguments(p_implData));
-<a class="jxr_linenumber" name="53" href="#53">53</a>      taskMonitor = p_implData.getTaskMonitor();
+<a class="jxr_linenumber" name="53" href="#53">53</a>      format = p_implData.getFormat();
 <a class="jxr_linenumber" name="54" href="#54">54</a>      filter = p_implData.getFilter();
-<a class="jxr_linenumber" name="55" href="#55">55</a>      format = p_implData.getFormat();
+<a class="jxr_linenumber" name="55" href="#55">55</a>      taskMonitor = p_implData.getTaskMonitor();
 <a class="jxr_linenumber" name="56" href="#56">56</a>    }
 <a class="jxr_linenumber" name="57" href="#57">57</a>    
 <a class="jxr_linenumber" name="58" href="#58">58</a>    @Override <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> renderNoFlush(<strong class="jxr_keyword">final</strong> java.io.Writer jamonWriter)


[12/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/modules.html
----------------------------------------------------------------------
diff --git a/modules.html b/modules.html
index 2ebaa2b..351b6b4 100644
--- a/modules.html
+++ b/modules.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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Modules</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -375,7 +375,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 17837b0..b68f038 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -413,7 +413,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index b40d920..a571e38 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <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" />
@@ -423,7 +423,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 89e1400..694f5c2 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Build Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -366,7 +366,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index ff14efc..558d0c4 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <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" />
@@ -768,7 +768,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 991de9a..1c5723c 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -340,7 +340,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 22d0d3e..f4d92e8 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -310,7 +310,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index 271bee7..b98cf54 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <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" />
@@ -330,7 +330,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index bb4997f..c47616c 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -307,7 +307,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index c78c5a2..9526fbf 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -302,7 +302,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index 90cef41..e08e061 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <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" />
@@ -324,7 +324,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index 2522ce6..8333637 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Repository</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -298,7 +298,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index f430cc5..5f327ee 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <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" />
@@ -332,7 +332,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index d5807c7..c337efc 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <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" />
@@ -519,7 +519,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index 3569497..9e73cea 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Team list</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -785,7 +785,7 @@ window.onLoad = init();
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index b8fc361..5684a8e 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -18021,6 +18021,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicaFailover</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestScanner.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanner</a></dt>
@@ -44109,6 +44111,8 @@
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/ipc/TestRpcClientLeaks.html#testSocketClosed()">testSocketClosed()</a></span> - Method in class org.apache.hadoop.hbase.ipc.<a href="./org/apache/hadoop/hbase/ipc/TestRpcClientLeaks.html" title="class in org.apache.hadoop.hbase.ipc">TestRpcClientLeaks</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#testSoftAndHardQueueLimits()">testSoftAndHardQueueLimits()</a></span> - Method in class org.apache.hadoop.hbase.ipc.<a href="./org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">TestSimpleRpcScheduler</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html#testSorted()">testSorted()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">TestKeyValueHeap</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/util/TestSortedCopyOnWriteSet.html" title="class in org.apache.hadoop.hbase.util"><span class="strong">TestSortedCopyOnWriteSet</span></a> - Class in <a href="./org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/testdevapidocs/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html b/testdevapidocs/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html
index a5c1ddc..c494cf9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html
@@ -95,7 +95,7 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.70">TestSimpleRpcScheduler</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.72">TestSimpleRpcScheduler</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -198,6 +198,10 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#testScanQueues()">testScanQueues</a></strong>()</code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#testSoftAndHardQueueLimits()">testSoftAndHardQueueLimits</a></strong>()</code>&nbsp;</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
@@ -226,7 +230,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>timeout</h4>
-<pre>public final&nbsp;org.junit.rules.TestRule <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.71">timeout</a></pre>
+<pre>public final&nbsp;org.junit.rules.TestRule <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.73">timeout</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -235,7 +239,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.73">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.75">LOG</a></pre>
 </li>
 </ul>
 <a name="CONTEXT">
@@ -244,7 +248,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>CONTEXT</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.ipc.RpcScheduler.Context <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.75">CONTEXT</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.ipc.RpcScheduler.Context <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.77">CONTEXT</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -253,7 +257,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>conf</h4>
-<pre>private&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.81">conf</a></pre>
+<pre>private&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.83">conf</a></pre>
 </li>
 </ul>
 </li>
@@ -270,7 +274,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestSimpleRpcScheduler</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.70">TestSimpleRpcScheduler</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.72">TestSimpleRpcScheduler</a>()</pre>
 </li>
 </ul>
 </li>
@@ -287,7 +291,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setUp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.84">setUp</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.86">setUp</a>()</pre>
 </li>
 </ul>
 <a name="testBasic()">
@@ -296,7 +300,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBasic</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.89">testBasic</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.91">testBasic</a>()
                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -310,7 +314,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testHandlerIsolation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.103">testHandlerIsolation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.105">testHandlerIsolation</a>()
                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -324,7 +328,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createMockTask</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.ipc.CallRunner&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.155">createMockTask</a>()</pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.ipc.CallRunner&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.157">createMockTask</a>()</pre>
 </li>
 </ul>
 <a name="testRpcScheduler()">
@@ -333,7 +337,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRpcScheduler</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.163">testRpcScheduler</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.165">testRpcScheduler</a>()
                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -345,7 +349,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRpcScheduler</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.168">testRpcScheduler</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueType)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.170">testRpcScheduler</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueType)
                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -357,7 +361,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanQueues</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.245">testScanQueues</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.247">testScanQueues</a>()
                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -366,15 +370,27 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <a name="doAnswerTaskExecution(org.apache.hadoop.hbase.ipc.CallRunner, java.util.ArrayList, int, int)">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>doAnswerTaskExecution</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.312">doAnswerTaskExecution</a>(org.apache.hadoop.hbase.ipc.CallRunner&nbsp;callTask,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.314">doAnswerTaskExecution</a>(org.apache.hadoop.hbase.ipc.CallRunner&nbsp;callTask,
                          <a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;results,
                          int&nbsp;value,
                          int&nbsp;sleepInterval)</pre>
 </li>
 </ul>
+<a name="testSoftAndHardQueueLimits()">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testSoftAndHardQueueLimits</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html#line.330">testSoftAndHardQueueLimits</a>()
+                                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/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 6622b08..2d433ef 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -515,16 +515,16 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/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/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="strong">ClusterManager.ServiceType</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="strong">RESTApiClusterManager.Service</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/TestRegionServerMetrics.Metric.html" title="enum in org.apache.hadoop.hbase"><span class="strong">TestRegionServerMetrics.Metric</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="strong">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="strong">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="strong">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="strong">ResourceChecker.Phase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="strong">PerformanceEvaluation.Counter</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="strong">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="strong">ScanPerformanceEvaluation.ScanCounter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="strong">RESTApiClusterManager.RoleCommand</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="strong">HBaseClusterManager.CommandProvider.Operation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/TestRegionServerMetrics.Metric.html" title="enum in org.apache.hadoop.hbase"><span class="strong">TestRegionServerMetrics.Metric</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="strong">PerformanceEvaluation.Counter</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="strong">ResourceChecker.Phase</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
index a7e259c..97e3014 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
@@ -118,7 +118,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.513">TestRegionMergeTransactionOnCluster.MyMaster</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.518">TestRegionMergeTransactionOnCluster.MyMaster</a>
 extends org.apache.hadoop.hbase.master.HMaster</pre>
 </li>
 </ul>
@@ -288,7 +288,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestRegionMergeTransactionOnCluster.MyMaster</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html#line.514">TestRegionMergeTransactionOnCluster.MyMaster</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html#line.519">TestRegionMergeTransactionOnCluster.MyMaster</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                             org.apache.hadoop.hbase.CoordinatedStateManager&nbsp;cp)
                                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                                     org.apache.zookeeper.KeeperException,
@@ -313,7 +313,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>createRpcServices</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.RSRpcServices&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html#line.521">createRpcServices</a>()
+<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.RSRpcServices&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html#line.526">createRpcServices</a>()
                                                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html
index adf519b..2eed18f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html
@@ -113,7 +113,7 @@
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.526">TestRegionMergeTransactionOnCluster.MyMasterRpcServices</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.531">TestRegionMergeTransactionOnCluster.MyMasterRpcServices</a>
 extends org.apache.hadoop.hbase.master.MasterRpcServices</pre>
 </li>
 </ul>
@@ -242,7 +242,7 @@ extends org.apache.hadoop.hbase.master.MasterRpcServices</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>enabled</h4>
-<pre>static&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#line.527">enabled</a></pre>
+<pre>static&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#line.532">enabled</a></pre>
 </li>
 </ul>
 <a name="myMaster">
@@ -251,7 +251,7 @@ extends org.apache.hadoop.hbase.master.MasterRpcServices</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>myMaster</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.master.HMaster <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#line.529">myMaster</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.master.HMaster <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#line.534">myMaster</a></pre>
 </li>
 </ul>
 </li>
@@ -268,7 +268,7 @@ extends org.apache.hadoop.hbase.master.MasterRpcServices</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestRegionMergeTransactionOnCluster.MyMasterRpcServices</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#line.530">TestRegionMergeTransactionOnCluster.MyMasterRpcServices</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master)
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#line.535">TestRegionMergeTransactionOnCluster.MyMasterRpcServices</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master)
                                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -288,7 +288,7 @@ extends org.apache.hadoop.hbase.master.MasterRpcServices</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>reportRegionStateTransition</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#line.536">reportRegionStateTransition</a>(com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#line.541">reportRegionStateTransition</a>(com.google.protobuf.RpcController&nbsp;c,
                                                                                                                                   org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionRequest&nbsp;req)
                                                                                                                                     throws com.google.protobuf.ServiceException</pre>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html
index eda87b5..1365fbe 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html
@@ -95,7 +95,7 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.94">TestRegionMergeTransactionOnCluster</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.95">TestRegionMergeTransactionOnCluster</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Like <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html" title="class in org.apache.hadoop.hbase.regionserver"><code>TestRegionMergeTransaction</code></a> in that we're testing
  <code>RegionMergeTransactionImpl</code> only the below tests are against a running
@@ -163,34 +163,38 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#MASTER">MASTER</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>org.junit.rules.TestName</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#name">name</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>private static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#NB_SERVERS">NB_SERVERS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#QUALIFIER">QUALIFIER</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#ROW">ROW</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static byte[][]</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#ROWS">ROWS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#ROWSIZE">ROWSIZE</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>org.junit.rules.TestRule</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#timeout">timeout</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#waitTime">waitTime</a></strong></code>&nbsp;</td>
 </tr>
@@ -334,7 +338,16 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.95">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.96">LOG</a></pre>
+</li>
+</ul>
+<a name="name">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>name</h4>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.98">name</a></pre>
 </li>
 </ul>
 <a name="timeout">
@@ -343,7 +356,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>timeout</h4>
-<pre>public final&nbsp;org.junit.rules.TestRule <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.97">timeout</a></pre>
+<pre>public final&nbsp;org.junit.rules.TestRule <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.99">timeout</a></pre>
 </li>
 </ul>
 <a name="NB_SERVERS">
@@ -352,7 +365,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>NB_SERVERS</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.99">NB_SERVERS</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.101">NB_SERVERS</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestRegionMergeTransactionOnCluster.NB_SERVERS">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -362,7 +375,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>FAMILYNAME</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.101">FAMILYNAME</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.103">FAMILYNAME</a></pre>
 </li>
 </ul>
 <a name="QUALIFIER">
@@ -371,7 +384,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>QUALIFIER</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.102">QUALIFIER</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.104">QUALIFIER</a></pre>
 </li>
 </ul>
 <a name="ROW">
@@ -380,7 +393,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>ROW</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.104">ROW</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.106">ROW</a></pre>
 </li>
 </ul>
 <a name="INITIAL_REGION_NUM">
@@ -389,7 +402,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>INITIAL_REGION_NUM</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.105">INITIAL_REGION_NUM</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.107">INITIAL_REGION_NUM</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestRegionMergeTransactionOnCluster.INITIAL_REGION_NUM">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -399,7 +412,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>ROWSIZE</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.106">ROWSIZE</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.108">ROWSIZE</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestRegionMergeTransactionOnCluster.ROWSIZE">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -409,7 +422,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>ROWS</h4>
-<pre>private static&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.107">ROWS</a></pre>
+<pre>private static&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.109">ROWS</a></pre>
 </li>
 </ul>
 <a name="waitTime">
@@ -418,7 +431,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>waitTime</h4>
-<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.109">waitTime</a></pre>
+<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.111">waitTime</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -427,7 +440,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_UTIL</h4>
-<pre>static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.111">TEST_UTIL</a></pre>
+<pre>static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.113">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="MASTER">
@@ -436,7 +449,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>MASTER</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.master.HMaster <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.113">MASTER</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.master.HMaster <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.115">MASTER</a></pre>
 </li>
 </ul>
 <a name="ADMIN">
@@ -445,7 +458,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ADMIN</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.client.Admin <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.114">ADMIN</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.client.Admin <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.116">ADMIN</a></pre>
 </li>
 </ul>
 </li>
@@ -462,7 +475,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestRegionMergeTransactionOnCluster</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.94">TestRegionMergeTransactionOnCluster</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.95">TestRegionMergeTransactionOnCluster</a>()</pre>
 </li>
 </ul>
 </li>
@@ -479,7 +492,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>beforeAllTests</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.117">beforeAllTests</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.119">beforeAllTests</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -491,7 +504,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>afterAllTests</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.127">afterAllTests</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.129">afterAllTests</a>()
                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -503,7 +516,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testWholesomeMerge</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.133">testWholesomeMerge</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.135">testWholesomeMerge</a>()
                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -515,7 +528,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMergeAndRestartingMaster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.184">testMergeAndRestartingMaster</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.186">testMergeAndRestartingMaster</a>()
                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Not really restarting the master. Simulate it by clear of new region
  state since it is not persisted, will be lost after master restarts.</div>
@@ -529,7 +542,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testCleanMergeReference</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.204">testCleanMergeReference</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.205">testCleanMergeReference</a>()
                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -541,7 +554,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMerge</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.316">testMerge</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.317">testMerge</a>()
                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">This test tests 1, merging region not online;
  2, merging same two regions; 3, merging unknown regions.
@@ -557,7 +570,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMergeWithReplicas</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.363">testMergeWithReplicas</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.364">testMergeWithReplicas</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -569,7 +582,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>mergeRegionsAndVerifyRegionNum</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.util.PairOfSameType&lt;org.apache.hadoop.hbase.HRegionInfo&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.401">mergeRegionsAndVerifyRegionNum</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>private&nbsp;org.apache.hadoop.hbase.util.PairOfSameType&lt;org.apache.hadoop.hbase.HRegionInfo&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.402">mergeRegionsAndVerifyRegionNum</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                                                                                               org.apache.hadoop.hbase.TableName&nbsp;tablename,
                                                                                                               int&nbsp;regionAnum,
                                                                                                               int&nbsp;regionBnum,
@@ -585,7 +598,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>requestMergeRegion</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.util.PairOfSameType&lt;org.apache.hadoop.hbase.HRegionInfo&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.410">requestMergeRegion</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>private&nbsp;org.apache.hadoop.hbase.util.PairOfSameType&lt;org.apache.hadoop.hbase.HRegionInfo&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.411">requestMergeRegion</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                                                                                   org.apache.hadoop.hbase.TableName&nbsp;tablename,
                                                                                                   int&nbsp;regionAnum,
                                                                                                   int&nbsp;regionBnum)
@@ -600,7 +613,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>waitAndVerifyRegionNum</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.424">waitAndVerifyRegionNum</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.425">waitAndVerifyRegionNum</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                           org.apache.hadoop.hbase.TableName&nbsp;tablename,
                           int&nbsp;expectedRegionNum)
                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -614,7 +627,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createTableAndLoadData</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.447">createTableAndLoadData</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>private&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.448">createTableAndLoadData</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                                           org.apache.hadoop.hbase.TableName&nbsp;tablename)
                                                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -627,7 +640,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createTableAndLoadData</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.452">createTableAndLoadData</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>private&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.453">createTableAndLoadData</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                                           org.apache.hadoop.hbase.TableName&nbsp;tablename,
                                                           int&nbsp;numRegions,
                                                           int&nbsp;replication)
@@ -642,7 +655,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>makeN</h4>
-<pre>private static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.485">makeN</a>(byte[]&nbsp;base,
+<pre>private static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.490">makeN</a>(byte[]&nbsp;base,
              int&nbsp;n)</pre>
 </li>
 </ul>
@@ -652,7 +665,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>loadData</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.493">loadData</a>(org.apache.hadoop.hbase.client.Table&nbsp;table)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.498">loadData</a>(org.apache.hadoop.hbase.client.Table&nbsp;table)
                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -664,7 +677,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>verifyRowCount</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.501">verifyRowCount</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.506">verifyRowCount</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                   int&nbsp;expectedRegionNum)
                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/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 cd0e6c5..9714a69 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -234,9 +234,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/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/IntegrationTestLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="strong">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="strong">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="strong">IntegrationTestBigLinkedList.Verify.Counts</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="strong">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="strong">IntegrationTestLoadAndVerify.Counters</span></a></li>
 </ul>
 </li>
 </ul>


[02/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html b/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
index 6cce0c7..810f579 100644
--- a/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
+++ b/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
@@ -69,15 +69,15 @@
 <a class="jxr_linenumber" name="59" href="#59">59</a>    requiredArguments = {
 <a class="jxr_linenumber" name="60" href="#60">60</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"master"</span>, type = <span class="jxr_string">"HMaster"</span>)},
 <a class="jxr_linenumber" name="61" href="#61">61</a>    optionalArguments = {
-<a class="jxr_linenumber" name="62" href="#62">62</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"frags"</span>, type = <span class="jxr_string">"Map&lt;String,Integer&gt;"</span>),
-<a class="jxr_linenumber" name="63" href="#63">63</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"catalogJanitorEnabled"</span>, type = <span class="jxr_string">"boolean"</span>),
-<a class="jxr_linenumber" name="64" href="#64">64</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"filter"</span>, type = <span class="jxr_string">"String"</span>),
-<a class="jxr_linenumber" name="65" href="#65">65</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"deadServers"</span>, type = <span class="jxr_string">"Set&lt;ServerName&gt;"</span>),
-<a class="jxr_linenumber" name="66" href="#66">66</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"format"</span>, type = <span class="jxr_string">"String"</span>),
-<a class="jxr_linenumber" name="67" href="#67">67</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"servers"</span>, type = <span class="jxr_string">"List&lt;ServerName&gt;"</span>),
-<a class="jxr_linenumber" name="68" href="#68">68</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"metaLocation"</span>, type = <span class="jxr_string">"ServerName"</span>),
-<a class="jxr_linenumber" name="69" href="#69">69</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"assignmentManager"</span>, type = <span class="jxr_string">"AssignmentManager"</span>),
-<a class="jxr_linenumber" name="70" href="#70">70</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"serverManager"</span>, type = <span class="jxr_string">"ServerManager"</span>)})
+<a class="jxr_linenumber" name="62" href="#62">62</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"serverManager"</span>, type = <span class="jxr_string">"ServerManager"</span>),
+<a class="jxr_linenumber" name="63" href="#63">63</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"metaLocation"</span>, type = <span class="jxr_string">"ServerName"</span>),
+<a class="jxr_linenumber" name="64" href="#64">64</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"frags"</span>, type = <span class="jxr_string">"Map&lt;String,Integer&gt;"</span>),
+<a class="jxr_linenumber" name="65" href="#65">65</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"filter"</span>, type = <span class="jxr_string">"String"</span>),
+<a class="jxr_linenumber" name="66" href="#66">66</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"deadServers"</span>, type = <span class="jxr_string">"Set&lt;ServerName&gt;"</span>),
+<a class="jxr_linenumber" name="67" href="#67">67</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"format"</span>, type = <span class="jxr_string">"String"</span>),
+<a class="jxr_linenumber" name="68" href="#68">68</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"assignmentManager"</span>, type = <span class="jxr_string">"AssignmentManager"</span>),
+<a class="jxr_linenumber" name="69" href="#69">69</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"servers"</span>, type = <span class="jxr_string">"List&lt;ServerName&gt;"</span>),
+<a class="jxr_linenumber" name="70" href="#70">70</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"catalogJanitorEnabled"</span>, type = <span class="jxr_string">"boolean"</span>)})
 <a class="jxr_linenumber" name="71" href="#71">71</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html">MasterStatusTmpl</a>
 <a class="jxr_linenumber" name="72" href="#72">72</a>    <strong class="jxr_keyword">extends</strong> org.jamon.AbstractTemplateProxy
 <a class="jxr_linenumber" name="73" href="#73">73</a>  {
@@ -118,159 +118,159 @@
 <a class="jxr_linenumber" name="108" href="#108">108</a>       <strong class="jxr_keyword">return</strong> m_master;
 <a class="jxr_linenumber" name="109" href="#109">109</a>     }
 <a class="jxr_linenumber" name="110" href="#110">110</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html">HMaster</a> m_master;
-<a class="jxr_linenumber" name="111" href="#111">111</a>     <em class="jxr_comment">// 21, 1</em>
-<a class="jxr_linenumber" name="112" href="#112">112</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFrags(Map&lt;String,Integer&gt; frags)
+<a class="jxr_linenumber" name="111" href="#111">111</a>     <em class="jxr_comment">// 28, 1</em>
+<a class="jxr_linenumber" name="112" href="#112">112</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setServerManager(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> serverManager)
 <a class="jxr_linenumber" name="113" href="#113">113</a>     {
-<a class="jxr_linenumber" name="114" href="#114">114</a>       <em class="jxr_comment">// 21, 1</em>
-<a class="jxr_linenumber" name="115" href="#115">115</a>       m_frags = frags;
-<a class="jxr_linenumber" name="116" href="#116">116</a>       m_frags__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="114" href="#114">114</a>       <em class="jxr_comment">// 28, 1</em>
+<a class="jxr_linenumber" name="115" href="#115">115</a>       m_serverManager = serverManager;
+<a class="jxr_linenumber" name="116" href="#116">116</a>       m_serverManager__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="117" href="#117">117</a>     }
-<a class="jxr_linenumber" name="118" href="#118">118</a>     <strong class="jxr_keyword">public</strong> Map&lt;String,Integer&gt; getFrags()
+<a class="jxr_linenumber" name="118" href="#118">118</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> getServerManager()
 <a class="jxr_linenumber" name="119" href="#119">119</a>     {
-<a class="jxr_linenumber" name="120" href="#120">120</a>       <strong class="jxr_keyword">return</strong> m_frags;
+<a class="jxr_linenumber" name="120" href="#120">120</a>       <strong class="jxr_keyword">return</strong> m_serverManager;
 <a class="jxr_linenumber" name="121" href="#121">121</a>     }
-<a class="jxr_linenumber" name="122" href="#122">122</a>     <strong class="jxr_keyword">private</strong> Map&lt;String,Integer&gt; m_frags;
-<a class="jxr_linenumber" name="123" href="#123">123</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFrags__IsNotDefault()
+<a class="jxr_linenumber" name="122" href="#122">122</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> m_serverManager;
+<a class="jxr_linenumber" name="123" href="#123">123</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getServerManager__IsNotDefault()
 <a class="jxr_linenumber" name="124" href="#124">124</a>     {
-<a class="jxr_linenumber" name="125" href="#125">125</a>       <strong class="jxr_keyword">return</strong> m_frags__IsNotDefault;
+<a class="jxr_linenumber" name="125" href="#125">125</a>       <strong class="jxr_keyword">return</strong> m_serverManager__IsNotDefault;
 <a class="jxr_linenumber" name="126" href="#126">126</a>     }
-<a class="jxr_linenumber" name="127" href="#127">127</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_frags__IsNotDefault;
-<a class="jxr_linenumber" name="128" href="#128">128</a>     <em class="jxr_comment">// 25, 1</em>
-<a class="jxr_linenumber" name="129" href="#129">129</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setCatalogJanitorEnabled(<strong class="jxr_keyword">boolean</strong> catalogJanitorEnabled)
+<a class="jxr_linenumber" name="127" href="#127">127</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_serverManager__IsNotDefault;
+<a class="jxr_linenumber" name="128" href="#128">128</a>     <em class="jxr_comment">// 22, 1</em>
+<a class="jxr_linenumber" name="129" href="#129">129</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setMetaLocation(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> metaLocation)
 <a class="jxr_linenumber" name="130" href="#130">130</a>     {
-<a class="jxr_linenumber" name="131" href="#131">131</a>       <em class="jxr_comment">// 25, 1</em>
-<a class="jxr_linenumber" name="132" href="#132">132</a>       m_catalogJanitorEnabled = catalogJanitorEnabled;
-<a class="jxr_linenumber" name="133" href="#133">133</a>       m_catalogJanitorEnabled__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="131" href="#131">131</a>       <em class="jxr_comment">// 22, 1</em>
+<a class="jxr_linenumber" name="132" href="#132">132</a>       m_metaLocation = metaLocation;
+<a class="jxr_linenumber" name="133" href="#133">133</a>       m_metaLocation__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="134" href="#134">134</a>     }
-<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getCatalogJanitorEnabled()
+<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> getMetaLocation()
 <a class="jxr_linenumber" name="136" href="#136">136</a>     {
-<a class="jxr_linenumber" name="137" href="#137">137</a>       <strong class="jxr_keyword">return</strong> m_catalogJanitorEnabled;
+<a class="jxr_linenumber" name="137" href="#137">137</a>       <strong class="jxr_keyword">return</strong> m_metaLocation;
 <a class="jxr_linenumber" name="138" href="#138">138</a>     }
-<a class="jxr_linenumber" name="139" href="#139">139</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_catalogJanitorEnabled;
-<a class="jxr_linenumber" name="140" href="#140">140</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getCatalogJanitorEnabled__IsNotDefault()
+<a class="jxr_linenumber" name="139" href="#139">139</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> m_metaLocation;
+<a class="jxr_linenumber" name="140" href="#140">140</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getMetaLocation__IsNotDefault()
 <a class="jxr_linenumber" name="141" href="#141">141</a>     {
-<a class="jxr_linenumber" name="142" href="#142">142</a>       <strong class="jxr_keyword">return</strong> m_catalogJanitorEnabled__IsNotDefault;
+<a class="jxr_linenumber" name="142" href="#142">142</a>       <strong class="jxr_keyword">return</strong> m_metaLocation__IsNotDefault;
 <a class="jxr_linenumber" name="143" href="#143">143</a>     }
-<a class="jxr_linenumber" name="144" href="#144">144</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_catalogJanitorEnabled__IsNotDefault;
-<a class="jxr_linenumber" name="145" href="#145">145</a>     <em class="jxr_comment">// 26, 1</em>
-<a class="jxr_linenumber" name="146" href="#146">146</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFilter(String filter)
+<a class="jxr_linenumber" name="144" href="#144">144</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_metaLocation__IsNotDefault;
+<a class="jxr_linenumber" name="145" href="#145">145</a>     <em class="jxr_comment">// 21, 1</em>
+<a class="jxr_linenumber" name="146" href="#146">146</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFrags(Map&lt;String,Integer&gt; frags)
 <a class="jxr_linenumber" name="147" href="#147">147</a>     {
-<a class="jxr_linenumber" name="148" href="#148">148</a>       <em class="jxr_comment">// 26, 1</em>
-<a class="jxr_linenumber" name="149" href="#149">149</a>       m_filter = filter;
-<a class="jxr_linenumber" name="150" href="#150">150</a>       m_filter__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="148" href="#148">148</a>       <em class="jxr_comment">// 21, 1</em>
+<a class="jxr_linenumber" name="149" href="#149">149</a>       m_frags = frags;
+<a class="jxr_linenumber" name="150" href="#150">150</a>       m_frags__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="151" href="#151">151</a>     }
-<a class="jxr_linenumber" name="152" href="#152">152</a>     <strong class="jxr_keyword">public</strong> String getFilter()
+<a class="jxr_linenumber" name="152" href="#152">152</a>     <strong class="jxr_keyword">public</strong> Map&lt;String,Integer&gt; getFrags()
 <a class="jxr_linenumber" name="153" href="#153">153</a>     {
-<a class="jxr_linenumber" name="154" href="#154">154</a>       <strong class="jxr_keyword">return</strong> m_filter;
+<a class="jxr_linenumber" name="154" href="#154">154</a>       <strong class="jxr_keyword">return</strong> m_frags;
 <a class="jxr_linenumber" name="155" href="#155">155</a>     }
-<a class="jxr_linenumber" name="156" href="#156">156</a>     <strong class="jxr_keyword">private</strong> String m_filter;
-<a class="jxr_linenumber" name="157" href="#157">157</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFilter__IsNotDefault()
+<a class="jxr_linenumber" name="156" href="#156">156</a>     <strong class="jxr_keyword">private</strong> Map&lt;String,Integer&gt; m_frags;
+<a class="jxr_linenumber" name="157" href="#157">157</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFrags__IsNotDefault()
 <a class="jxr_linenumber" name="158" href="#158">158</a>     {
-<a class="jxr_linenumber" name="159" href="#159">159</a>       <strong class="jxr_keyword">return</strong> m_filter__IsNotDefault;
+<a class="jxr_linenumber" name="159" href="#159">159</a>       <strong class="jxr_keyword">return</strong> m_frags__IsNotDefault;
 <a class="jxr_linenumber" name="160" href="#160">160</a>     }
-<a class="jxr_linenumber" name="161" href="#161">161</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_filter__IsNotDefault;
-<a class="jxr_linenumber" name="162" href="#162">162</a>     <em class="jxr_comment">// 24, 1</em>
-<a class="jxr_linenumber" name="163" href="#163">163</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setDeadServers(Set&lt;ServerName&gt; deadServers)
+<a class="jxr_linenumber" name="161" href="#161">161</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_frags__IsNotDefault;
+<a class="jxr_linenumber" name="162" href="#162">162</a>     <em class="jxr_comment">// 26, 1</em>
+<a class="jxr_linenumber" name="163" href="#163">163</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFilter(String filter)
 <a class="jxr_linenumber" name="164" href="#164">164</a>     {
-<a class="jxr_linenumber" name="165" href="#165">165</a>       <em class="jxr_comment">// 24, 1</em>
-<a class="jxr_linenumber" name="166" href="#166">166</a>       m_deadServers = deadServers;
-<a class="jxr_linenumber" name="167" href="#167">167</a>       m_deadServers__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="165" href="#165">165</a>       <em class="jxr_comment">// 26, 1</em>
+<a class="jxr_linenumber" name="166" href="#166">166</a>       m_filter = filter;
+<a class="jxr_linenumber" name="167" href="#167">167</a>       m_filter__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="168" href="#168">168</a>     }
-<a class="jxr_linenumber" name="169" href="#169">169</a>     <strong class="jxr_keyword">public</strong> Set&lt;ServerName&gt; getDeadServers()
+<a class="jxr_linenumber" name="169" href="#169">169</a>     <strong class="jxr_keyword">public</strong> String getFilter()
 <a class="jxr_linenumber" name="170" href="#170">170</a>     {
-<a class="jxr_linenumber" name="171" href="#171">171</a>       <strong class="jxr_keyword">return</strong> m_deadServers;
+<a class="jxr_linenumber" name="171" href="#171">171</a>       <strong class="jxr_keyword">return</strong> m_filter;
 <a class="jxr_linenumber" name="172" href="#172">172</a>     }
-<a class="jxr_linenumber" name="173" href="#173">173</a>     <strong class="jxr_keyword">private</strong> Set&lt;ServerName&gt; m_deadServers;
-<a class="jxr_linenumber" name="174" href="#174">174</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getDeadServers__IsNotDefault()
+<a class="jxr_linenumber" name="173" href="#173">173</a>     <strong class="jxr_keyword">private</strong> String m_filter;
+<a class="jxr_linenumber" name="174" href="#174">174</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFilter__IsNotDefault()
 <a class="jxr_linenumber" name="175" href="#175">175</a>     {
-<a class="jxr_linenumber" name="176" href="#176">176</a>       <strong class="jxr_keyword">return</strong> m_deadServers__IsNotDefault;
+<a class="jxr_linenumber" name="176" href="#176">176</a>       <strong class="jxr_keyword">return</strong> m_filter__IsNotDefault;
 <a class="jxr_linenumber" name="177" href="#177">177</a>     }
-<a class="jxr_linenumber" name="178" href="#178">178</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_deadServers__IsNotDefault;
-<a class="jxr_linenumber" name="179" href="#179">179</a>     <em class="jxr_comment">// 27, 1</em>
-<a class="jxr_linenumber" name="180" href="#180">180</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFormat(String format)
+<a class="jxr_linenumber" name="178" href="#178">178</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_filter__IsNotDefault;
+<a class="jxr_linenumber" name="179" href="#179">179</a>     <em class="jxr_comment">// 24, 1</em>
+<a class="jxr_linenumber" name="180" href="#180">180</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setDeadServers(Set&lt;ServerName&gt; deadServers)
 <a class="jxr_linenumber" name="181" href="#181">181</a>     {
-<a class="jxr_linenumber" name="182" href="#182">182</a>       <em class="jxr_comment">// 27, 1</em>
-<a class="jxr_linenumber" name="183" href="#183">183</a>       m_format = format;
-<a class="jxr_linenumber" name="184" href="#184">184</a>       m_format__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="182" href="#182">182</a>       <em class="jxr_comment">// 24, 1</em>
+<a class="jxr_linenumber" name="183" href="#183">183</a>       m_deadServers = deadServers;
+<a class="jxr_linenumber" name="184" href="#184">184</a>       m_deadServers__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="185" href="#185">185</a>     }
-<a class="jxr_linenumber" name="186" href="#186">186</a>     <strong class="jxr_keyword">public</strong> String getFormat()
+<a class="jxr_linenumber" name="186" href="#186">186</a>     <strong class="jxr_keyword">public</strong> Set&lt;ServerName&gt; getDeadServers()
 <a class="jxr_linenumber" name="187" href="#187">187</a>     {
-<a class="jxr_linenumber" name="188" href="#188">188</a>       <strong class="jxr_keyword">return</strong> m_format;
+<a class="jxr_linenumber" name="188" href="#188">188</a>       <strong class="jxr_keyword">return</strong> m_deadServers;
 <a class="jxr_linenumber" name="189" href="#189">189</a>     }
-<a class="jxr_linenumber" name="190" href="#190">190</a>     <strong class="jxr_keyword">private</strong> String m_format;
-<a class="jxr_linenumber" name="191" href="#191">191</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFormat__IsNotDefault()
+<a class="jxr_linenumber" name="190" href="#190">190</a>     <strong class="jxr_keyword">private</strong> Set&lt;ServerName&gt; m_deadServers;
+<a class="jxr_linenumber" name="191" href="#191">191</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getDeadServers__IsNotDefault()
 <a class="jxr_linenumber" name="192" href="#192">192</a>     {
-<a class="jxr_linenumber" name="193" href="#193">193</a>       <strong class="jxr_keyword">return</strong> m_format__IsNotDefault;
+<a class="jxr_linenumber" name="193" href="#193">193</a>       <strong class="jxr_keyword">return</strong> m_deadServers__IsNotDefault;
 <a class="jxr_linenumber" name="194" href="#194">194</a>     }
-<a class="jxr_linenumber" name="195" href="#195">195</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_format__IsNotDefault;
-<a class="jxr_linenumber" name="196" href="#196">196</a>     <em class="jxr_comment">// 23, 1</em>
-<a class="jxr_linenumber" name="197" href="#197">197</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setServers(List&lt;ServerName&gt; servers)
+<a class="jxr_linenumber" name="195" href="#195">195</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_deadServers__IsNotDefault;
+<a class="jxr_linenumber" name="196" href="#196">196</a>     <em class="jxr_comment">// 27, 1</em>
+<a class="jxr_linenumber" name="197" href="#197">197</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFormat(String format)
 <a class="jxr_linenumber" name="198" href="#198">198</a>     {
-<a class="jxr_linenumber" name="199" href="#199">199</a>       <em class="jxr_comment">// 23, 1</em>
-<a class="jxr_linenumber" name="200" href="#200">200</a>       m_servers = servers;
-<a class="jxr_linenumber" name="201" href="#201">201</a>       m_servers__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="199" href="#199">199</a>       <em class="jxr_comment">// 27, 1</em>
+<a class="jxr_linenumber" name="200" href="#200">200</a>       m_format = format;
+<a class="jxr_linenumber" name="201" href="#201">201</a>       m_format__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="202" href="#202">202</a>     }
-<a class="jxr_linenumber" name="203" href="#203">203</a>     <strong class="jxr_keyword">public</strong> List&lt;ServerName&gt; getServers()
+<a class="jxr_linenumber" name="203" href="#203">203</a>     <strong class="jxr_keyword">public</strong> String getFormat()
 <a class="jxr_linenumber" name="204" href="#204">204</a>     {
-<a class="jxr_linenumber" name="205" href="#205">205</a>       <strong class="jxr_keyword">return</strong> m_servers;
+<a class="jxr_linenumber" name="205" href="#205">205</a>       <strong class="jxr_keyword">return</strong> m_format;
 <a class="jxr_linenumber" name="206" href="#206">206</a>     }
-<a class="jxr_linenumber" name="207" href="#207">207</a>     <strong class="jxr_keyword">private</strong> List&lt;ServerName&gt; m_servers;
-<a class="jxr_linenumber" name="208" href="#208">208</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getServers__IsNotDefault()
+<a class="jxr_linenumber" name="207" href="#207">207</a>     <strong class="jxr_keyword">private</strong> String m_format;
+<a class="jxr_linenumber" name="208" href="#208">208</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFormat__IsNotDefault()
 <a class="jxr_linenumber" name="209" href="#209">209</a>     {
-<a class="jxr_linenumber" name="210" href="#210">210</a>       <strong class="jxr_keyword">return</strong> m_servers__IsNotDefault;
+<a class="jxr_linenumber" name="210" href="#210">210</a>       <strong class="jxr_keyword">return</strong> m_format__IsNotDefault;
 <a class="jxr_linenumber" name="211" href="#211">211</a>     }
-<a class="jxr_linenumber" name="212" href="#212">212</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_servers__IsNotDefault;
-<a class="jxr_linenumber" name="213" href="#213">213</a>     <em class="jxr_comment">// 22, 1</em>
-<a class="jxr_linenumber" name="214" href="#214">214</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setMetaLocation(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> metaLocation)
+<a class="jxr_linenumber" name="212" href="#212">212</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_format__IsNotDefault;
+<a class="jxr_linenumber" name="213" href="#213">213</a>     <em class="jxr_comment">// 29, 1</em>
+<a class="jxr_linenumber" name="214" href="#214">214</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setAssignmentManager(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> assignmentManager)
 <a class="jxr_linenumber" name="215" href="#215">215</a>     {
-<a class="jxr_linenumber" name="216" href="#216">216</a>       <em class="jxr_comment">// 22, 1</em>
-<a class="jxr_linenumber" name="217" href="#217">217</a>       m_metaLocation = metaLocation;
-<a class="jxr_linenumber" name="218" href="#218">218</a>       m_metaLocation__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="216" href="#216">216</a>       <em class="jxr_comment">// 29, 1</em>
+<a class="jxr_linenumber" name="217" href="#217">217</a>       m_assignmentManager = assignmentManager;
+<a class="jxr_linenumber" name="218" href="#218">218</a>       m_assignmentManager__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="219" href="#219">219</a>     }
-<a class="jxr_linenumber" name="220" href="#220">220</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> getMetaLocation()
+<a class="jxr_linenumber" name="220" href="#220">220</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> getAssignmentManager()
 <a class="jxr_linenumber" name="221" href="#221">221</a>     {
-<a class="jxr_linenumber" name="222" href="#222">222</a>       <strong class="jxr_keyword">return</strong> m_metaLocation;
+<a class="jxr_linenumber" name="222" href="#222">222</a>       <strong class="jxr_keyword">return</strong> m_assignmentManager;
 <a class="jxr_linenumber" name="223" href="#223">223</a>     }
-<a class="jxr_linenumber" name="224" href="#224">224</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> m_metaLocation;
-<a class="jxr_linenumber" name="225" href="#225">225</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getMetaLocation__IsNotDefault()
+<a class="jxr_linenumber" name="224" href="#224">224</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> m_assignmentManager;
+<a class="jxr_linenumber" name="225" href="#225">225</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getAssignmentManager__IsNotDefault()
 <a class="jxr_linenumber" name="226" href="#226">226</a>     {
-<a class="jxr_linenumber" name="227" href="#227">227</a>       <strong class="jxr_keyword">return</strong> m_metaLocation__IsNotDefault;
+<a class="jxr_linenumber" name="227" href="#227">227</a>       <strong class="jxr_keyword">return</strong> m_assignmentManager__IsNotDefault;
 <a class="jxr_linenumber" name="228" href="#228">228</a>     }
-<a class="jxr_linenumber" name="229" href="#229">229</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_metaLocation__IsNotDefault;
-<a class="jxr_linenumber" name="230" href="#230">230</a>     <em class="jxr_comment">// 29, 1</em>
-<a class="jxr_linenumber" name="231" href="#231">231</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setAssignmentManager(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> assignmentManager)
+<a class="jxr_linenumber" name="229" href="#229">229</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_assignmentManager__IsNotDefault;
+<a class="jxr_linenumber" name="230" href="#230">230</a>     <em class="jxr_comment">// 23, 1</em>
+<a class="jxr_linenumber" name="231" href="#231">231</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setServers(List&lt;ServerName&gt; servers)
 <a class="jxr_linenumber" name="232" href="#232">232</a>     {
-<a class="jxr_linenumber" name="233" href="#233">233</a>       <em class="jxr_comment">// 29, 1</em>
-<a class="jxr_linenumber" name="234" href="#234">234</a>       m_assignmentManager = assignmentManager;
-<a class="jxr_linenumber" name="235" href="#235">235</a>       m_assignmentManager__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="233" href="#233">233</a>       <em class="jxr_comment">// 23, 1</em>
+<a class="jxr_linenumber" name="234" href="#234">234</a>       m_servers = servers;
+<a class="jxr_linenumber" name="235" href="#235">235</a>       m_servers__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="236" href="#236">236</a>     }
-<a class="jxr_linenumber" name="237" href="#237">237</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> getAssignmentManager()
+<a class="jxr_linenumber" name="237" href="#237">237</a>     <strong class="jxr_keyword">public</strong> List&lt;ServerName&gt; getServers()
 <a class="jxr_linenumber" name="238" href="#238">238</a>     {
-<a class="jxr_linenumber" name="239" href="#239">239</a>       <strong class="jxr_keyword">return</strong> m_assignmentManager;
+<a class="jxr_linenumber" name="239" href="#239">239</a>       <strong class="jxr_keyword">return</strong> m_servers;
 <a class="jxr_linenumber" name="240" href="#240">240</a>     }
-<a class="jxr_linenumber" name="241" href="#241">241</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> m_assignmentManager;
-<a class="jxr_linenumber" name="242" href="#242">242</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getAssignmentManager__IsNotDefault()
+<a class="jxr_linenumber" name="241" href="#241">241</a>     <strong class="jxr_keyword">private</strong> List&lt;ServerName&gt; m_servers;
+<a class="jxr_linenumber" name="242" href="#242">242</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getServers__IsNotDefault()
 <a class="jxr_linenumber" name="243" href="#243">243</a>     {
-<a class="jxr_linenumber" name="244" href="#244">244</a>       <strong class="jxr_keyword">return</strong> m_assignmentManager__IsNotDefault;
+<a class="jxr_linenumber" name="244" href="#244">244</a>       <strong class="jxr_keyword">return</strong> m_servers__IsNotDefault;
 <a class="jxr_linenumber" name="245" href="#245">245</a>     }
-<a class="jxr_linenumber" name="246" href="#246">246</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_assignmentManager__IsNotDefault;
-<a class="jxr_linenumber" name="247" href="#247">247</a>     <em class="jxr_comment">// 28, 1</em>
-<a class="jxr_linenumber" name="248" href="#248">248</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setServerManager(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> serverManager)
+<a class="jxr_linenumber" name="246" href="#246">246</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_servers__IsNotDefault;
+<a class="jxr_linenumber" name="247" href="#247">247</a>     <em class="jxr_comment">// 25, 1</em>
+<a class="jxr_linenumber" name="248" href="#248">248</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setCatalogJanitorEnabled(<strong class="jxr_keyword">boolean</strong> catalogJanitorEnabled)
 <a class="jxr_linenumber" name="249" href="#249">249</a>     {
-<a class="jxr_linenumber" name="250" href="#250">250</a>       <em class="jxr_comment">// 28, 1</em>
-<a class="jxr_linenumber" name="251" href="#251">251</a>       m_serverManager = serverManager;
-<a class="jxr_linenumber" name="252" href="#252">252</a>       m_serverManager__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="250" href="#250">250</a>       <em class="jxr_comment">// 25, 1</em>
+<a class="jxr_linenumber" name="251" href="#251">251</a>       m_catalogJanitorEnabled = catalogJanitorEnabled;
+<a class="jxr_linenumber" name="252" href="#252">252</a>       m_catalogJanitorEnabled__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="253" href="#253">253</a>     }
-<a class="jxr_linenumber" name="254" href="#254">254</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> getServerManager()
+<a class="jxr_linenumber" name="254" href="#254">254</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getCatalogJanitorEnabled()
 <a class="jxr_linenumber" name="255" href="#255">255</a>     {
-<a class="jxr_linenumber" name="256" href="#256">256</a>       <strong class="jxr_keyword">return</strong> m_serverManager;
+<a class="jxr_linenumber" name="256" href="#256">256</a>       <strong class="jxr_keyword">return</strong> m_catalogJanitorEnabled;
 <a class="jxr_linenumber" name="257" href="#257">257</a>     }
-<a class="jxr_linenumber" name="258" href="#258">258</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> m_serverManager;
-<a class="jxr_linenumber" name="259" href="#259">259</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getServerManager__IsNotDefault()
+<a class="jxr_linenumber" name="258" href="#258">258</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_catalogJanitorEnabled;
+<a class="jxr_linenumber" name="259" href="#259">259</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getCatalogJanitorEnabled__IsNotDefault()
 <a class="jxr_linenumber" name="260" href="#260">260</a>     {
-<a class="jxr_linenumber" name="261" href="#261">261</a>       <strong class="jxr_keyword">return</strong> m_serverManager__IsNotDefault;
+<a class="jxr_linenumber" name="261" href="#261">261</a>       <strong class="jxr_keyword">return</strong> m_catalogJanitorEnabled__IsNotDefault;
 <a class="jxr_linenumber" name="262" href="#262">262</a>     }
-<a class="jxr_linenumber" name="263" href="#263">263</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_serverManager__IsNotDefault;
+<a class="jxr_linenumber" name="263" href="#263">263</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_catalogJanitorEnabled__IsNotDefault;
 <a class="jxr_linenumber" name="264" href="#264">264</a>   }
 <a class="jxr_linenumber" name="265" href="#265">265</a>   @Override
 <a class="jxr_linenumber" name="266" href="#266">266</a>   <strong class="jxr_keyword">protected</strong> org.jamon.AbstractTemplateProxy.ImplData makeImplData()
@@ -282,66 +282,66 @@
 <a class="jxr_linenumber" name="272" href="#272">272</a>     <strong class="jxr_keyword">return</strong> (ImplData) <strong class="jxr_keyword">super</strong>.getImplData();
 <a class="jxr_linenumber" name="273" href="#273">273</a>   }
 <a class="jxr_linenumber" name="274" href="#274">274</a>   
-<a class="jxr_linenumber" name="275" href="#275">275</a>   <strong class="jxr_keyword">protected</strong> Map&lt;String,Integer&gt; frags;
-<a class="jxr_linenumber" name="276" href="#276">276</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)
+<a class="jxr_linenumber" name="275" href="#275">275</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> serverManager;
+<a class="jxr_linenumber" name="276" href="#276">276</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> p_serverManager)
 <a class="jxr_linenumber" name="277" href="#277">277</a>   {
-<a class="jxr_linenumber" name="278" href="#278">278</a>     (getImplData()).setFrags(p_frags);
+<a class="jxr_linenumber" name="278" href="#278">278</a>     (getImplData()).setServerManager(p_serverManager);
 <a class="jxr_linenumber" name="279" href="#279">279</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="280" href="#280">280</a>   }
 <a class="jxr_linenumber" name="281" href="#281">281</a>   
-<a class="jxr_linenumber" name="282" href="#282">282</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> catalogJanitorEnabled;
-<a class="jxr_linenumber" name="283" href="#283">283</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(<strong class="jxr_keyword">boolean</strong> p_catalogJanitorEnabled)
+<a class="jxr_linenumber" name="282" href="#282">282</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> metaLocation;
+<a class="jxr_linenumber" name="283" href="#283">283</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> p_metaLocation)
 <a class="jxr_linenumber" name="284" href="#284">284</a>   {
-<a class="jxr_linenumber" name="285" href="#285">285</a>     (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);
+<a class="jxr_linenumber" name="285" href="#285">285</a>     (getImplData()).setMetaLocation(p_metaLocation);
 <a class="jxr_linenumber" name="286" href="#286">286</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="287" href="#287">287</a>   }
 <a class="jxr_linenumber" name="288" href="#288">288</a>   
-<a class="jxr_linenumber" name="289" href="#289">289</a>   <strong class="jxr_keyword">protected</strong> String filter;
-<a class="jxr_linenumber" name="290" href="#290">290</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)
+<a class="jxr_linenumber" name="289" href="#289">289</a>   <strong class="jxr_keyword">protected</strong> Map&lt;String,Integer&gt; frags;
+<a class="jxr_linenumber" name="290" href="#290">290</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)
 <a class="jxr_linenumber" name="291" href="#291">291</a>   {
-<a class="jxr_linenumber" name="292" href="#292">292</a>     (getImplData()).setFilter(p_filter);
+<a class="jxr_linenumber" name="292" href="#292">292</a>     (getImplData()).setFrags(p_frags);
 <a class="jxr_linenumber" name="293" href="#293">293</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="294" href="#294">294</a>   }
 <a class="jxr_linenumber" name="295" href="#295">295</a>   
-<a class="jxr_linenumber" name="296" href="#296">296</a>   <strong class="jxr_keyword">protected</strong> Set&lt;ServerName&gt; deadServers;
-<a class="jxr_linenumber" name="297" href="#297">297</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)
+<a class="jxr_linenumber" name="296" href="#296">296</a>   <strong class="jxr_keyword">protected</strong> String filter;
+<a class="jxr_linenumber" name="297" href="#297">297</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)
 <a class="jxr_linenumber" name="298" href="#298">298</a>   {
-<a class="jxr_linenumber" name="299" href="#299">299</a>     (getImplData()).setDeadServers(p_deadServers);
+<a class="jxr_linenumber" name="299" href="#299">299</a>     (getImplData()).setFilter(p_filter);
 <a class="jxr_linenumber" name="300" href="#300">300</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="301" href="#301">301</a>   }
 <a class="jxr_linenumber" name="302" href="#302">302</a>   
-<a class="jxr_linenumber" name="303" href="#303">303</a>   <strong class="jxr_keyword">protected</strong> String format;
-<a class="jxr_linenumber" name="304" href="#304">304</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)
+<a class="jxr_linenumber" name="303" href="#303">303</a>   <strong class="jxr_keyword">protected</strong> Set&lt;ServerName&gt; deadServers;
+<a class="jxr_linenumber" name="304" href="#304">304</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)
 <a class="jxr_linenumber" name="305" href="#305">305</a>   {
-<a class="jxr_linenumber" name="306" href="#306">306</a>     (getImplData()).setFormat(p_format);
+<a class="jxr_linenumber" name="306" href="#306">306</a>     (getImplData()).setDeadServers(p_deadServers);
 <a class="jxr_linenumber" name="307" href="#307">307</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="308" href="#308">308</a>   }
 <a class="jxr_linenumber" name="309" href="#309">309</a>   
-<a class="jxr_linenumber" name="310" href="#310">310</a>   <strong class="jxr_keyword">protected</strong> List&lt;ServerName&gt; servers;
-<a class="jxr_linenumber" name="311" href="#311">311</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)
+<a class="jxr_linenumber" name="310" href="#310">310</a>   <strong class="jxr_keyword">protected</strong> String format;
+<a class="jxr_linenumber" name="311" href="#311">311</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)
 <a class="jxr_linenumber" name="312" href="#312">312</a>   {
-<a class="jxr_linenumber" name="313" href="#313">313</a>     (getImplData()).setServers(p_servers);
+<a class="jxr_linenumber" name="313" href="#313">313</a>     (getImplData()).setFormat(p_format);
 <a class="jxr_linenumber" name="314" href="#314">314</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="315" href="#315">315</a>   }
 <a class="jxr_linenumber" name="316" href="#316">316</a>   
-<a class="jxr_linenumber" name="317" href="#317">317</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> metaLocation;
-<a class="jxr_linenumber" name="318" href="#318">318</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> p_metaLocation)
+<a class="jxr_linenumber" name="317" href="#317">317</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> assignmentManager;
+<a class="jxr_linenumber" name="318" href="#318">318</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> p_assignmentManager)
 <a class="jxr_linenumber" name="319" href="#319">319</a>   {
-<a class="jxr_linenumber" name="320" href="#320">320</a>     (getImplData()).setMetaLocation(p_metaLocation);
+<a class="jxr_linenumber" name="320" href="#320">320</a>     (getImplData()).setAssignmentManager(p_assignmentManager);
 <a class="jxr_linenumber" name="321" href="#321">321</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="322" href="#322">322</a>   }
 <a class="jxr_linenumber" name="323" href="#323">323</a>   
-<a class="jxr_linenumber" name="324" href="#324">324</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> assignmentManager;
-<a class="jxr_linenumber" name="325" href="#325">325</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> p_assignmentManager)
+<a class="jxr_linenumber" name="324" href="#324">324</a>   <strong class="jxr_keyword">protected</strong> List&lt;ServerName&gt; servers;
+<a class="jxr_linenumber" name="325" href="#325">325</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)
 <a class="jxr_linenumber" name="326" href="#326">326</a>   {
-<a class="jxr_linenumber" name="327" href="#327">327</a>     (getImplData()).setAssignmentManager(p_assignmentManager);
+<a class="jxr_linenumber" name="327" href="#327">327</a>     (getImplData()).setServers(p_servers);
 <a class="jxr_linenumber" name="328" href="#328">328</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="329" href="#329">329</a>   }
 <a class="jxr_linenumber" name="330" href="#330">330</a>   
-<a class="jxr_linenumber" name="331" href="#331">331</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> serverManager;
-<a class="jxr_linenumber" name="332" href="#332">332</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> p_serverManager)
+<a class="jxr_linenumber" name="331" href="#331">331</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> catalogJanitorEnabled;
+<a class="jxr_linenumber" name="332" href="#332">332</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(<strong class="jxr_keyword">boolean</strong> p_catalogJanitorEnabled)
 <a class="jxr_linenumber" name="333" href="#333">333</a>   {
-<a class="jxr_linenumber" name="334" href="#334">334</a>     (getImplData()).setServerManager(p_serverManager);
+<a class="jxr_linenumber" name="334" href="#334">334</a>     (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);
 <a class="jxr_linenumber" name="335" href="#335">335</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="336" href="#336">336</a>   }
 <a class="jxr_linenumber" name="337" href="#337">337</a>   

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html b/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
index e090c8d..28f728d 100644
--- a/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
+++ b/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
@@ -70,15 +70,15 @@
 <a class="jxr_linenumber" name="60" href="#60">60</a>  
 <a class="jxr_linenumber" name="61" href="#61">61</a>  {
 <a class="jxr_linenumber" name="62" href="#62">62</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html">HMaster</a> master;
-<a class="jxr_linenumber" name="63" href="#63">63</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;String,Integer&gt; frags;
-<a class="jxr_linenumber" name="64" href="#64">64</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> catalogJanitorEnabled;
-<a class="jxr_linenumber" name="65" href="#65">65</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String filter;
-<a class="jxr_linenumber" name="66" href="#66">66</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Set&lt;ServerName&gt; deadServers;
-<a class="jxr_linenumber" name="67" href="#67">67</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String format;
-<a class="jxr_linenumber" name="68" href="#68">68</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> List&lt;ServerName&gt; servers;
-<a class="jxr_linenumber" name="69" href="#69">69</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> metaLocation;
-<a class="jxr_linenumber" name="70" href="#70">70</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> assignmentManager;
-<a class="jxr_linenumber" name="71" href="#71">71</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> serverManager;
+<a class="jxr_linenumber" name="63" href="#63">63</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> serverManager;
+<a class="jxr_linenumber" name="64" href="#64">64</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> metaLocation;
+<a class="jxr_linenumber" name="65" href="#65">65</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;String,Integer&gt; frags;
+<a class="jxr_linenumber" name="66" href="#66">66</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String filter;
+<a class="jxr_linenumber" name="67" href="#67">67</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Set&lt;ServerName&gt; deadServers;
+<a class="jxr_linenumber" name="68" href="#68">68</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String format;
+<a class="jxr_linenumber" name="69" href="#69">69</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> assignmentManager;
+<a class="jxr_linenumber" name="70" href="#70">70</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> List&lt;ServerName&gt; servers;
+<a class="jxr_linenumber" name="71" href="#71">71</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> catalogJanitorEnabled;
 <a class="jxr_linenumber" name="72" href="#72">72</a>    <em class="jxr_comment">// 68, 1</em>
 <a class="jxr_linenumber" name="73" href="#73">73</a>    
 <a class="jxr_linenumber" name="74" href="#74">74</a>    <strong class="jxr_keyword">public</strong> String formatZKString() {
@@ -108,41 +108,41 @@
 <a class="jxr_linenumber" name="98" href="#98">98</a>  
 <a class="jxr_linenumber" name="99" href="#99">99</a>    <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData p_implData)
 <a class="jxr_linenumber" name="100" href="#100">100</a>   {
-<a class="jxr_linenumber" name="101" href="#101">101</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getFrags__IsNotDefault())
+<a class="jxr_linenumber" name="101" href="#101">101</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getServerManager__IsNotDefault())
 <a class="jxr_linenumber" name="102" href="#102">102</a>     {
-<a class="jxr_linenumber" name="103" href="#103">103</a>       p_implData.setFrags(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="103" href="#103">103</a>       p_implData.setServerManager(<strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="104" href="#104">104</a>     }
-<a class="jxr_linenumber" name="105" href="#105">105</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getCatalogJanitorEnabled__IsNotDefault())
+<a class="jxr_linenumber" name="105" href="#105">105</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getMetaLocation__IsNotDefault())
 <a class="jxr_linenumber" name="106" href="#106">106</a>     {
-<a class="jxr_linenumber" name="107" href="#107">107</a>       p_implData.setCatalogJanitorEnabled(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="107" href="#107">107</a>       p_implData.setMetaLocation(<strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="108" href="#108">108</a>     }
-<a class="jxr_linenumber" name="109" href="#109">109</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getFilter__IsNotDefault())
+<a class="jxr_linenumber" name="109" href="#109">109</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getFrags__IsNotDefault())
 <a class="jxr_linenumber" name="110" href="#110">110</a>     {
-<a class="jxr_linenumber" name="111" href="#111">111</a>       p_implData.setFilter(<span class="jxr_string">"general"</span>);
+<a class="jxr_linenumber" name="111" href="#111">111</a>       p_implData.setFrags(<strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="112" href="#112">112</a>     }
-<a class="jxr_linenumber" name="113" href="#113">113</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getDeadServers__IsNotDefault())
+<a class="jxr_linenumber" name="113" href="#113">113</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getFilter__IsNotDefault())
 <a class="jxr_linenumber" name="114" href="#114">114</a>     {
-<a class="jxr_linenumber" name="115" href="#115">115</a>       p_implData.setDeadServers(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="115" href="#115">115</a>       p_implData.setFilter(<span class="jxr_string">"general"</span>);
 <a class="jxr_linenumber" name="116" href="#116">116</a>     }
-<a class="jxr_linenumber" name="117" href="#117">117</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getFormat__IsNotDefault())
+<a class="jxr_linenumber" name="117" href="#117">117</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getDeadServers__IsNotDefault())
 <a class="jxr_linenumber" name="118" href="#118">118</a>     {
-<a class="jxr_linenumber" name="119" href="#119">119</a>       p_implData.setFormat(<span class="jxr_string">"html"</span>);
+<a class="jxr_linenumber" name="119" href="#119">119</a>       p_implData.setDeadServers(<strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="120" href="#120">120</a>     }
-<a class="jxr_linenumber" name="121" href="#121">121</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getServers__IsNotDefault())
+<a class="jxr_linenumber" name="121" href="#121">121</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getFormat__IsNotDefault())
 <a class="jxr_linenumber" name="122" href="#122">122</a>     {
-<a class="jxr_linenumber" name="123" href="#123">123</a>       p_implData.setServers(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="123" href="#123">123</a>       p_implData.setFormat(<span class="jxr_string">"html"</span>);
 <a class="jxr_linenumber" name="124" href="#124">124</a>     }
-<a class="jxr_linenumber" name="125" href="#125">125</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getMetaLocation__IsNotDefault())
+<a class="jxr_linenumber" name="125" href="#125">125</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getAssignmentManager__IsNotDefault())
 <a class="jxr_linenumber" name="126" href="#126">126</a>     {
-<a class="jxr_linenumber" name="127" href="#127">127</a>       p_implData.setMetaLocation(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="127" href="#127">127</a>       p_implData.setAssignmentManager(<strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="128" href="#128">128</a>     }
-<a class="jxr_linenumber" name="129" href="#129">129</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getAssignmentManager__IsNotDefault())
+<a class="jxr_linenumber" name="129" href="#129">129</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getServers__IsNotDefault())
 <a class="jxr_linenumber" name="130" href="#130">130</a>     {
-<a class="jxr_linenumber" name="131" href="#131">131</a>       p_implData.setAssignmentManager(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="131" href="#131">131</a>       p_implData.setServers(<strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="132" href="#132">132</a>     }
-<a class="jxr_linenumber" name="133" href="#133">133</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getServerManager__IsNotDefault())
+<a class="jxr_linenumber" name="133" href="#133">133</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getCatalogJanitorEnabled__IsNotDefault())
 <a class="jxr_linenumber" name="134" href="#134">134</a>     {
-<a class="jxr_linenumber" name="135" href="#135">135</a>       p_implData.setServerManager(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="135" href="#135">135</a>       p_implData.setCatalogJanitorEnabled(<strong class="jxr_keyword">true</strong>);
 <a class="jxr_linenumber" name="136" href="#136">136</a>     }
 <a class="jxr_linenumber" name="137" href="#137">137</a>     <strong class="jxr_keyword">return</strong> p_implData;
 <a class="jxr_linenumber" name="138" href="#138">138</a>   }
@@ -150,15 +150,15 @@
 <a class="jxr_linenumber" name="140" href="#140">140</a>   {
 <a class="jxr_linenumber" name="141" href="#141">141</a>     <strong class="jxr_keyword">super</strong>(p_templateManager, __jamon_setOptionalArguments(p_implData));
 <a class="jxr_linenumber" name="142" href="#142">142</a>     master = p_implData.getMaster();
-<a class="jxr_linenumber" name="143" href="#143">143</a>     frags = p_implData.getFrags();
-<a class="jxr_linenumber" name="144" href="#144">144</a>     catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();
-<a class="jxr_linenumber" name="145" href="#145">145</a>     filter = p_implData.getFilter();
-<a class="jxr_linenumber" name="146" href="#146">146</a>     deadServers = p_implData.getDeadServers();
-<a class="jxr_linenumber" name="147" href="#147">147</a>     format = p_implData.getFormat();
-<a class="jxr_linenumber" name="148" href="#148">148</a>     servers = p_implData.getServers();
-<a class="jxr_linenumber" name="149" href="#149">149</a>     metaLocation = p_implData.getMetaLocation();
-<a class="jxr_linenumber" name="150" href="#150">150</a>     assignmentManager = p_implData.getAssignmentManager();
-<a class="jxr_linenumber" name="151" href="#151">151</a>     serverManager = p_implData.getServerManager();
+<a class="jxr_linenumber" name="143" href="#143">143</a>     serverManager = p_implData.getServerManager();
+<a class="jxr_linenumber" name="144" href="#144">144</a>     metaLocation = p_implData.getMetaLocation();
+<a class="jxr_linenumber" name="145" href="#145">145</a>     frags = p_implData.getFrags();
+<a class="jxr_linenumber" name="146" href="#146">146</a>     filter = p_implData.getFilter();
+<a class="jxr_linenumber" name="147" href="#147">147</a>     deadServers = p_implData.getDeadServers();
+<a class="jxr_linenumber" name="148" href="#148">148</a>     format = p_implData.getFormat();
+<a class="jxr_linenumber" name="149" href="#149">149</a>     assignmentManager = p_implData.getAssignmentManager();
+<a class="jxr_linenumber" name="150" href="#150">150</a>     servers = p_implData.getServers();
+<a class="jxr_linenumber" name="151" href="#151">151</a>     catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();
 <a class="jxr_linenumber" name="152" href="#152">152</a>   }
 <a class="jxr_linenumber" name="153" href="#153">153</a>   
 <a class="jxr_linenumber" name="154" href="#154">154</a>   @Override <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> renderNoFlush(<strong class="jxr_keyword">final</strong> java.io.Writer jamonWriter)

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html b/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
index 0a7ba70..2af9b11 100644
--- a/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
+++ b/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
@@ -35,10 +35,10 @@
 <a class="jxr_linenumber" name="25" href="#25">25</a>    requiredArguments = {
 <a class="jxr_linenumber" name="26" href="#26">26</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"regionServer"</span>, type = <span class="jxr_string">"HRegionServer"</span>)},
 <a class="jxr_linenumber" name="27" href="#27">27</a>    optionalArguments = {
-<a class="jxr_linenumber" name="28" href="#28">28</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"format"</span>, type = <span class="jxr_string">"String"</span>),
-<a class="jxr_linenumber" name="29" href="#29">29</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"filter"</span>, type = <span class="jxr_string">"String"</span>),
-<a class="jxr_linenumber" name="30" href="#30">30</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"bcv"</span>, type = <span class="jxr_string">"String"</span>),
-<a class="jxr_linenumber" name="31" href="#31">31</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"bcn"</span>, type = <span class="jxr_string">"String"</span>)})
+<a class="jxr_linenumber" name="28" href="#28">28</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"bcv"</span>, type = <span class="jxr_string">"String"</span>),
+<a class="jxr_linenumber" name="29" href="#29">29</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"bcn"</span>, type = <span class="jxr_string">"String"</span>),
+<a class="jxr_linenumber" name="30" href="#30">30</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"format"</span>, type = <span class="jxr_string">"String"</span>),
+<a class="jxr_linenumber" name="31" href="#31">31</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"filter"</span>, type = <span class="jxr_string">"String"</span>)})
 <a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html">RSStatusTmpl</a>
 <a class="jxr_linenumber" name="33" href="#33">33</a>    <strong class="jxr_keyword">extends</strong> org.jamon.AbstractTemplateProxy
 <a class="jxr_linenumber" name="34" href="#34">34</a>  {
@@ -79,74 +79,74 @@
 <a class="jxr_linenumber" name="69" href="#69">69</a>        <strong class="jxr_keyword">return</strong> m_regionServer;
 <a class="jxr_linenumber" name="70" href="#70">70</a>      }
 <a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html">HRegionServer</a> m_regionServer;
-<a class="jxr_linenumber" name="72" href="#72">72</a>      <em class="jxr_comment">// 22, 1</em>
-<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFormat(String format)
+<a class="jxr_linenumber" name="72" href="#72">72</a>      <em class="jxr_comment">// 24, 1</em>
+<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setBcv(String bcv)
 <a class="jxr_linenumber" name="74" href="#74">74</a>      {
-<a class="jxr_linenumber" name="75" href="#75">75</a>        <em class="jxr_comment">// 22, 1</em>
-<a class="jxr_linenumber" name="76" href="#76">76</a>        m_format = format;
-<a class="jxr_linenumber" name="77" href="#77">77</a>        m_format__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="75" href="#75">75</a>        <em class="jxr_comment">// 24, 1</em>
+<a class="jxr_linenumber" name="76" href="#76">76</a>        m_bcv = bcv;
+<a class="jxr_linenumber" name="77" href="#77">77</a>        m_bcv__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="78" href="#78">78</a>      }
-<a class="jxr_linenumber" name="79" href="#79">79</a>      <strong class="jxr_keyword">public</strong> String getFormat()
+<a class="jxr_linenumber" name="79" href="#79">79</a>      <strong class="jxr_keyword">public</strong> String getBcv()
 <a class="jxr_linenumber" name="80" href="#80">80</a>      {
-<a class="jxr_linenumber" name="81" href="#81">81</a>        <strong class="jxr_keyword">return</strong> m_format;
+<a class="jxr_linenumber" name="81" href="#81">81</a>        <strong class="jxr_keyword">return</strong> m_bcv;
 <a class="jxr_linenumber" name="82" href="#82">82</a>      }
-<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">private</strong> String m_format;
-<a class="jxr_linenumber" name="84" href="#84">84</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFormat__IsNotDefault()
+<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">private</strong> String m_bcv;
+<a class="jxr_linenumber" name="84" href="#84">84</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getBcv__IsNotDefault()
 <a class="jxr_linenumber" name="85" href="#85">85</a>      {
-<a class="jxr_linenumber" name="86" href="#86">86</a>        <strong class="jxr_keyword">return</strong> m_format__IsNotDefault;
+<a class="jxr_linenumber" name="86" href="#86">86</a>        <strong class="jxr_keyword">return</strong> m_bcv__IsNotDefault;
 <a class="jxr_linenumber" name="87" href="#87">87</a>      }
-<a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_format__IsNotDefault;
-<a class="jxr_linenumber" name="89" href="#89">89</a>      <em class="jxr_comment">// 21, 1</em>
-<a class="jxr_linenumber" name="90" href="#90">90</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFilter(String filter)
+<a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_bcv__IsNotDefault;
+<a class="jxr_linenumber" name="89" href="#89">89</a>      <em class="jxr_comment">// 23, 1</em>
+<a class="jxr_linenumber" name="90" href="#90">90</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setBcn(String bcn)
 <a class="jxr_linenumber" name="91" href="#91">91</a>      {
-<a class="jxr_linenumber" name="92" href="#92">92</a>        <em class="jxr_comment">// 21, 1</em>
-<a class="jxr_linenumber" name="93" href="#93">93</a>        m_filter = filter;
-<a class="jxr_linenumber" name="94" href="#94">94</a>        m_filter__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="92" href="#92">92</a>        <em class="jxr_comment">// 23, 1</em>
+<a class="jxr_linenumber" name="93" href="#93">93</a>        m_bcn = bcn;
+<a class="jxr_linenumber" name="94" href="#94">94</a>        m_bcn__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="95" href="#95">95</a>      }
-<a class="jxr_linenumber" name="96" href="#96">96</a>      <strong class="jxr_keyword">public</strong> String getFilter()
+<a class="jxr_linenumber" name="96" href="#96">96</a>      <strong class="jxr_keyword">public</strong> String getBcn()
 <a class="jxr_linenumber" name="97" href="#97">97</a>      {
-<a class="jxr_linenumber" name="98" href="#98">98</a>        <strong class="jxr_keyword">return</strong> m_filter;
+<a class="jxr_linenumber" name="98" href="#98">98</a>        <strong class="jxr_keyword">return</strong> m_bcn;
 <a class="jxr_linenumber" name="99" href="#99">99</a>      }
-<a class="jxr_linenumber" name="100" href="#100">100</a>     <strong class="jxr_keyword">private</strong> String m_filter;
-<a class="jxr_linenumber" name="101" href="#101">101</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFilter__IsNotDefault()
+<a class="jxr_linenumber" name="100" href="#100">100</a>     <strong class="jxr_keyword">private</strong> String m_bcn;
+<a class="jxr_linenumber" name="101" href="#101">101</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getBcn__IsNotDefault()
 <a class="jxr_linenumber" name="102" href="#102">102</a>     {
-<a class="jxr_linenumber" name="103" href="#103">103</a>       <strong class="jxr_keyword">return</strong> m_filter__IsNotDefault;
+<a class="jxr_linenumber" name="103" href="#103">103</a>       <strong class="jxr_keyword">return</strong> m_bcn__IsNotDefault;
 <a class="jxr_linenumber" name="104" href="#104">104</a>     }
-<a class="jxr_linenumber" name="105" href="#105">105</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_filter__IsNotDefault;
-<a class="jxr_linenumber" name="106" href="#106">106</a>     <em class="jxr_comment">// 24, 1</em>
-<a class="jxr_linenumber" name="107" href="#107">107</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setBcv(String bcv)
+<a class="jxr_linenumber" name="105" href="#105">105</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_bcn__IsNotDefault;
+<a class="jxr_linenumber" name="106" href="#106">106</a>     <em class="jxr_comment">// 22, 1</em>
+<a class="jxr_linenumber" name="107" href="#107">107</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFormat(String format)
 <a class="jxr_linenumber" name="108" href="#108">108</a>     {
-<a class="jxr_linenumber" name="109" href="#109">109</a>       <em class="jxr_comment">// 24, 1</em>
-<a class="jxr_linenumber" name="110" href="#110">110</a>       m_bcv = bcv;
-<a class="jxr_linenumber" name="111" href="#111">111</a>       m_bcv__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="109" href="#109">109</a>       <em class="jxr_comment">// 22, 1</em>
+<a class="jxr_linenumber" name="110" href="#110">110</a>       m_format = format;
+<a class="jxr_linenumber" name="111" href="#111">111</a>       m_format__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="112" href="#112">112</a>     }
-<a class="jxr_linenumber" name="113" href="#113">113</a>     <strong class="jxr_keyword">public</strong> String getBcv()
+<a class="jxr_linenumber" name="113" href="#113">113</a>     <strong class="jxr_keyword">public</strong> String getFormat()
 <a class="jxr_linenumber" name="114" href="#114">114</a>     {
-<a class="jxr_linenumber" name="115" href="#115">115</a>       <strong class="jxr_keyword">return</strong> m_bcv;
+<a class="jxr_linenumber" name="115" href="#115">115</a>       <strong class="jxr_keyword">return</strong> m_format;
 <a class="jxr_linenumber" name="116" href="#116">116</a>     }
-<a class="jxr_linenumber" name="117" href="#117">117</a>     <strong class="jxr_keyword">private</strong> String m_bcv;
-<a class="jxr_linenumber" name="118" href="#118">118</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getBcv__IsNotDefault()
+<a class="jxr_linenumber" name="117" href="#117">117</a>     <strong class="jxr_keyword">private</strong> String m_format;
+<a class="jxr_linenumber" name="118" href="#118">118</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFormat__IsNotDefault()
 <a class="jxr_linenumber" name="119" href="#119">119</a>     {
-<a class="jxr_linenumber" name="120" href="#120">120</a>       <strong class="jxr_keyword">return</strong> m_bcv__IsNotDefault;
+<a class="jxr_linenumber" name="120" href="#120">120</a>       <strong class="jxr_keyword">return</strong> m_format__IsNotDefault;
 <a class="jxr_linenumber" name="121" href="#121">121</a>     }
-<a class="jxr_linenumber" name="122" href="#122">122</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_bcv__IsNotDefault;
-<a class="jxr_linenumber" name="123" href="#123">123</a>     <em class="jxr_comment">// 23, 1</em>
-<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setBcn(String bcn)
+<a class="jxr_linenumber" name="122" href="#122">122</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_format__IsNotDefault;
+<a class="jxr_linenumber" name="123" href="#123">123</a>     <em class="jxr_comment">// 21, 1</em>
+<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFilter(String filter)
 <a class="jxr_linenumber" name="125" href="#125">125</a>     {
-<a class="jxr_linenumber" name="126" href="#126">126</a>       <em class="jxr_comment">// 23, 1</em>
-<a class="jxr_linenumber" name="127" href="#127">127</a>       m_bcn = bcn;
-<a class="jxr_linenumber" name="128" href="#128">128</a>       m_bcn__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="126" href="#126">126</a>       <em class="jxr_comment">// 21, 1</em>
+<a class="jxr_linenumber" name="127" href="#127">127</a>       m_filter = filter;
+<a class="jxr_linenumber" name="128" href="#128">128</a>       m_filter__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="129" href="#129">129</a>     }
-<a class="jxr_linenumber" name="130" href="#130">130</a>     <strong class="jxr_keyword">public</strong> String getBcn()
+<a class="jxr_linenumber" name="130" href="#130">130</a>     <strong class="jxr_keyword">public</strong> String getFilter()
 <a class="jxr_linenumber" name="131" href="#131">131</a>     {
-<a class="jxr_linenumber" name="132" href="#132">132</a>       <strong class="jxr_keyword">return</strong> m_bcn;
+<a class="jxr_linenumber" name="132" href="#132">132</a>       <strong class="jxr_keyword">return</strong> m_filter;
 <a class="jxr_linenumber" name="133" href="#133">133</a>     }
-<a class="jxr_linenumber" name="134" href="#134">134</a>     <strong class="jxr_keyword">private</strong> String m_bcn;
-<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getBcn__IsNotDefault()
+<a class="jxr_linenumber" name="134" href="#134">134</a>     <strong class="jxr_keyword">private</strong> String m_filter;
+<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFilter__IsNotDefault()
 <a class="jxr_linenumber" name="136" href="#136">136</a>     {
-<a class="jxr_linenumber" name="137" href="#137">137</a>       <strong class="jxr_keyword">return</strong> m_bcn__IsNotDefault;
+<a class="jxr_linenumber" name="137" href="#137">137</a>       <strong class="jxr_keyword">return</strong> m_filter__IsNotDefault;
 <a class="jxr_linenumber" name="138" href="#138">138</a>     }
-<a class="jxr_linenumber" name="139" href="#139">139</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_bcn__IsNotDefault;
+<a class="jxr_linenumber" name="139" href="#139">139</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_filter__IsNotDefault;
 <a class="jxr_linenumber" name="140" href="#140">140</a>   }
 <a class="jxr_linenumber" name="141" href="#141">141</a>   @Override
 <a class="jxr_linenumber" name="142" href="#142">142</a>   <strong class="jxr_keyword">protected</strong> org.jamon.AbstractTemplateProxy.ImplData makeImplData()
@@ -158,31 +158,31 @@
 <a class="jxr_linenumber" name="148" href="#148">148</a>     <strong class="jxr_keyword">return</strong> (ImplData) <strong class="jxr_keyword">super</strong>.getImplData();
 <a class="jxr_linenumber" name="149" href="#149">149</a>   }
 <a class="jxr_linenumber" name="150" href="#150">150</a>   
-<a class="jxr_linenumber" name="151" href="#151">151</a>   <strong class="jxr_keyword">protected</strong> String format;
-<a class="jxr_linenumber" name="152" href="#152">152</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)
+<a class="jxr_linenumber" name="151" href="#151">151</a>   <strong class="jxr_keyword">protected</strong> String bcv;
+<a class="jxr_linenumber" name="152" href="#152">152</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)
 <a class="jxr_linenumber" name="153" href="#153">153</a>   {
-<a class="jxr_linenumber" name="154" href="#154">154</a>     (getImplData()).setFormat(p_format);
+<a class="jxr_linenumber" name="154" href="#154">154</a>     (getImplData()).setBcv(p_bcv);
 <a class="jxr_linenumber" name="155" href="#155">155</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="156" href="#156">156</a>   }
 <a class="jxr_linenumber" name="157" href="#157">157</a>   
-<a class="jxr_linenumber" name="158" href="#158">158</a>   <strong class="jxr_keyword">protected</strong> String filter;
-<a class="jxr_linenumber" name="159" href="#159">159</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)
+<a class="jxr_linenumber" name="158" href="#158">158</a>   <strong class="jxr_keyword">protected</strong> String bcn;
+<a class="jxr_linenumber" name="159" href="#159">159</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)
 <a class="jxr_linenumber" name="160" href="#160">160</a>   {
-<a class="jxr_linenumber" name="161" href="#161">161</a>     (getImplData()).setFilter(p_filter);
+<a class="jxr_linenumber" name="161" href="#161">161</a>     (getImplData()).setBcn(p_bcn);
 <a class="jxr_linenumber" name="162" href="#162">162</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="163" href="#163">163</a>   }
 <a class="jxr_linenumber" name="164" href="#164">164</a>   
-<a class="jxr_linenumber" name="165" href="#165">165</a>   <strong class="jxr_keyword">protected</strong> String bcv;
-<a class="jxr_linenumber" name="166" href="#166">166</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)
+<a class="jxr_linenumber" name="165" href="#165">165</a>   <strong class="jxr_keyword">protected</strong> String format;
+<a class="jxr_linenumber" name="166" href="#166">166</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)
 <a class="jxr_linenumber" name="167" href="#167">167</a>   {
-<a class="jxr_linenumber" name="168" href="#168">168</a>     (getImplData()).setBcv(p_bcv);
+<a class="jxr_linenumber" name="168" href="#168">168</a>     (getImplData()).setFormat(p_format);
 <a class="jxr_linenumber" name="169" href="#169">169</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="170" href="#170">170</a>   }
 <a class="jxr_linenumber" name="171" href="#171">171</a>   
-<a class="jxr_linenumber" name="172" href="#172">172</a>   <strong class="jxr_keyword">protected</strong> String bcn;
-<a class="jxr_linenumber" name="173" href="#173">173</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)
+<a class="jxr_linenumber" name="172" href="#172">172</a>   <strong class="jxr_keyword">protected</strong> String filter;
+<a class="jxr_linenumber" name="173" href="#173">173</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)
 <a class="jxr_linenumber" name="174" href="#174">174</a>   {
-<a class="jxr_linenumber" name="175" href="#175">175</a>     (getImplData()).setBcn(p_bcn);
+<a class="jxr_linenumber" name="175" href="#175">175</a>     (getImplData()).setFilter(p_filter);
 <a class="jxr_linenumber" name="176" href="#176">176</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="177" href="#177">177</a>   }
 <a class="jxr_linenumber" name="178" href="#178">178</a>   


[04/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/xref/org/apache/hadoop/hbase/ipc/RpcServer.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/ipc/RpcServer.html b/xref/org/apache/hadoop/hbase/ipc/RpcServer.html
index 9d9e774..4d97d71 100644
--- a/xref/org/apache/hadoop/hbase/ipc/RpcServer.html
+++ b/xref/org/apache/hadoop/hbase/ipc/RpcServer.html
@@ -2109,556 +2109,559 @@
 <a class="jxr_linenumber" name="2099" href="#2099">2099</a>   @Override
 <a class="jxr_linenumber" name="2100" href="#2100">2100</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onConfigurationChange(Configuration newConf) {
 <a class="jxr_linenumber" name="2101" href="#2101">2101</a>     initReconfigurable(newConf);
-<a class="jxr_linenumber" name="2102" href="#2102">2102</a>   }
-<a class="jxr_linenumber" name="2103" href="#2103">2103</a> 
-<a class="jxr_linenumber" name="2104" href="#2104">2104</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> initReconfigurable(Configuration confToLoad) {
-<a class="jxr_linenumber" name="2105" href="#2105">2105</a>     <strong class="jxr_keyword">this</strong>.allowFallbackToSimpleAuth = confToLoad.getBoolean(FALLBACK_TO_INSECURE_CLIENT_AUTH, false);
-<a class="jxr_linenumber" name="2106" href="#2106">2106</a>     <strong class="jxr_keyword">if</strong> (isSecurityEnabled &amp;&amp; allowFallbackToSimpleAuth) {
-<a class="jxr_linenumber" name="2107" href="#2107">2107</a>       LOG.warn(<span class="jxr_string">"********* WARNING! *********"</span>);
-<a class="jxr_linenumber" name="2108" href="#2108">2108</a>       LOG.warn(<span class="jxr_string">"This server is configured to allow connections from INSECURE clients"</span>);
-<a class="jxr_linenumber" name="2109" href="#2109">2109</a>       LOG.warn(<span class="jxr_string">"("</span> + FALLBACK_TO_INSECURE_CLIENT_AUTH + <span class="jxr_string">" = true)."</span>);
-<a class="jxr_linenumber" name="2110" href="#2110">2110</a>       LOG.warn(<span class="jxr_string">"While this option is enabled, client identities cannot be secured, and user"</span>);
-<a class="jxr_linenumber" name="2111" href="#2111">2111</a>       LOG.warn(<span class="jxr_string">"impersonation is possible!"</span>);
-<a class="jxr_linenumber" name="2112" href="#2112">2112</a>       LOG.warn(<span class="jxr_string">"For secure operation, please disable SIMPLE authentication as soon as possible,"</span>);
-<a class="jxr_linenumber" name="2113" href="#2113">2113</a>       LOG.warn(<span class="jxr_string">"by setting "</span> + FALLBACK_TO_INSECURE_CLIENT_AUTH + <span class="jxr_string">" = false in hbase-site.xml"</span>);
-<a class="jxr_linenumber" name="2114" href="#2114">2114</a>       LOG.warn(<span class="jxr_string">"****************************"</span>);
-<a class="jxr_linenumber" name="2115" href="#2115">2115</a>     }
-<a class="jxr_linenumber" name="2116" href="#2116">2116</a>   }
-<a class="jxr_linenumber" name="2117" href="#2117">2117</a> 
-<a class="jxr_linenumber" name="2118" href="#2118">2118</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2119" href="#2119">2119</a> <em class="jxr_javadoccomment">   * Subclasses of HBaseServer can override this to provide their own</em>
-<a class="jxr_linenumber" name="2120" href="#2120">2120</a> <em class="jxr_javadoccomment">   * Connection implementations.</em>
-<a class="jxr_linenumber" name="2121" href="#2121">2121</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2122" href="#2122">2122</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../org/apache/hadoop/hbase/client/Connection.html">Connection</a> getConnection(SocketChannel channel, <strong class="jxr_keyword">long</strong> time) {
-<a class="jxr_linenumber" name="2123" href="#2123">2123</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/client/Connection.html">Connection</a>(channel, time);
-<a class="jxr_linenumber" name="2124" href="#2124">2124</a>   }
-<a class="jxr_linenumber" name="2125" href="#2125">2125</a> 
-<a class="jxr_linenumber" name="2126" href="#2126">2126</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2127" href="#2127">2127</a> <em class="jxr_javadoccomment">   * Setup response for the RPC Call.</em>
-<a class="jxr_linenumber" name="2128" href="#2128">2128</a> <em class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="2129" href="#2129">2129</a> <em class="jxr_javadoccomment">   * @param response buffer to serialize the response into</em>
-<a class="jxr_linenumber" name="2130" href="#2130">2130</a> <em class="jxr_javadoccomment">   * @param call {@link Call} to which we are setting up the response</em>
-<a class="jxr_linenumber" name="2131" href="#2131">2131</a> <em class="jxr_javadoccomment">   * @param error error message, if the call failed</em>
-<a class="jxr_linenumber" name="2132" href="#2132">2132</a> <em class="jxr_javadoccomment">   * @throws IOException</em>
-<a class="jxr_linenumber" name="2133" href="#2133">2133</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2134" href="#2134">2134</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> setupResponse(<a href="../../../../../org/apache/hadoop/hbase/io/ByteArrayOutputStream.html">ByteArrayOutputStream</a> response, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.html">Call</a> call, Throwable t, String error)
-<a class="jxr_linenumber" name="2135" href="#2135">2135</a>   <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="2136" href="#2136">2136</a>     <strong class="jxr_keyword">if</strong> (response != <strong class="jxr_keyword">null</strong>) response.reset();
-<a class="jxr_linenumber" name="2137" href="#2137">2137</a>     call.setResponse(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, t, error);
-<a class="jxr_linenumber" name="2138" href="#2138">2138</a>   }
-<a class="jxr_linenumber" name="2139" href="#2139">2139</a> 
-<a class="jxr_linenumber" name="2140" href="#2140">2140</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> closeConnection(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html">Connection</a> connection) {
-<a class="jxr_linenumber" name="2141" href="#2141">2141</a>     <strong class="jxr_keyword">synchronized</strong> (connectionList) {
-<a class="jxr_linenumber" name="2142" href="#2142">2142</a>       <strong class="jxr_keyword">if</strong> (connectionList.remove(connection)) {
-<a class="jxr_linenumber" name="2143" href="#2143">2143</a>         numConnections--;
-<a class="jxr_linenumber" name="2144" href="#2144">2144</a>       }
-<a class="jxr_linenumber" name="2145" href="#2145">2145</a>     }
-<a class="jxr_linenumber" name="2146" href="#2146">2146</a>     connection.close();
-<a class="jxr_linenumber" name="2147" href="#2147">2147</a>   }
-<a class="jxr_linenumber" name="2148" href="#2148">2148</a> 
-<a class="jxr_linenumber" name="2149" href="#2149">2149</a>   Configuration getConf() {
-<a class="jxr_linenumber" name="2150" href="#2150">2150</a>     <strong class="jxr_keyword">return</strong> conf;
-<a class="jxr_linenumber" name="2151" href="#2151">2151</a>   }
-<a class="jxr_linenumber" name="2152" href="#2152">2152</a> 
-<a class="jxr_linenumber" name="2153" href="#2153">2153</a>   <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Sets the socket buffer size used for responding to RPCs.</em>
-<a class="jxr_linenumber" name="2154" href="#2154">2154</a> <em class="jxr_javadoccomment">   * @param size send size</em>
-<a class="jxr_linenumber" name="2155" href="#2155">2155</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2156" href="#2156">2156</a>   @Override
-<a class="jxr_linenumber" name="2157" href="#2157">2157</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setSocketSendBufSize(<strong class="jxr_keyword">int</strong> size) { <strong class="jxr_keyword">this</strong>.socketSendBufferSize = size; }
-<a class="jxr_linenumber" name="2158" href="#2158">2158</a> 
+<a class="jxr_linenumber" name="2102" href="#2102">2102</a>     <strong class="jxr_keyword">if</strong> (scheduler instanceof ConfigurationObserver) {
+<a class="jxr_linenumber" name="2103" href="#2103">2103</a>       ((<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html">ConfigurationObserver</a>)scheduler).onConfigurationChange(newConf);
+<a class="jxr_linenumber" name="2104" href="#2104">2104</a>     }
+<a class="jxr_linenumber" name="2105" href="#2105">2105</a>   }
+<a class="jxr_linenumber" name="2106" href="#2106">2106</a> 
+<a class="jxr_linenumber" name="2107" href="#2107">2107</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> initReconfigurable(Configuration confToLoad) {
+<a class="jxr_linenumber" name="2108" href="#2108">2108</a>     <strong class="jxr_keyword">this</strong>.allowFallbackToSimpleAuth = confToLoad.getBoolean(FALLBACK_TO_INSECURE_CLIENT_AUTH, false);
+<a class="jxr_linenumber" name="2109" href="#2109">2109</a>     <strong class="jxr_keyword">if</strong> (isSecurityEnabled &amp;&amp; allowFallbackToSimpleAuth) {
+<a class="jxr_linenumber" name="2110" href="#2110">2110</a>       LOG.warn(<span class="jxr_string">"********* WARNING! *********"</span>);
+<a class="jxr_linenumber" name="2111" href="#2111">2111</a>       LOG.warn(<span class="jxr_string">"This server is configured to allow connections from INSECURE clients"</span>);
+<a class="jxr_linenumber" name="2112" href="#2112">2112</a>       LOG.warn(<span class="jxr_string">"("</span> + FALLBACK_TO_INSECURE_CLIENT_AUTH + <span class="jxr_string">" = true)."</span>);
+<a class="jxr_linenumber" name="2113" href="#2113">2113</a>       LOG.warn(<span class="jxr_string">"While this option is enabled, client identities cannot be secured, and user"</span>);
+<a class="jxr_linenumber" name="2114" href="#2114">2114</a>       LOG.warn(<span class="jxr_string">"impersonation is possible!"</span>);
+<a class="jxr_linenumber" name="2115" href="#2115">2115</a>       LOG.warn(<span class="jxr_string">"For secure operation, please disable SIMPLE authentication as soon as possible,"</span>);
+<a class="jxr_linenumber" name="2116" href="#2116">2116</a>       LOG.warn(<span class="jxr_string">"by setting "</span> + FALLBACK_TO_INSECURE_CLIENT_AUTH + <span class="jxr_string">" = false in hbase-site.xml"</span>);
+<a class="jxr_linenumber" name="2117" href="#2117">2117</a>       LOG.warn(<span class="jxr_string">"****************************"</span>);
+<a class="jxr_linenumber" name="2118" href="#2118">2118</a>     }
+<a class="jxr_linenumber" name="2119" href="#2119">2119</a>   }
+<a class="jxr_linenumber" name="2120" href="#2120">2120</a> 
+<a class="jxr_linenumber" name="2121" href="#2121">2121</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="2122" href="#2122">2122</a> <em class="jxr_javadoccomment">   * Subclasses of HBaseServer can override this to provide their own</em>
+<a class="jxr_linenumber" name="2123" href="#2123">2123</a> <em class="jxr_javadoccomment">   * Connection implementations.</em>
+<a class="jxr_linenumber" name="2124" href="#2124">2124</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="2125" href="#2125">2125</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../org/apache/hadoop/hbase/client/Connection.html">Connection</a> getConnection(SocketChannel channel, <strong class="jxr_keyword">long</strong> time) {
+<a class="jxr_linenumber" name="2126" href="#2126">2126</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/client/Connection.html">Connection</a>(channel, time);
+<a class="jxr_linenumber" name="2127" href="#2127">2127</a>   }
+<a class="jxr_linenumber" name="2128" href="#2128">2128</a> 
+<a class="jxr_linenumber" name="2129" href="#2129">2129</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="2130" href="#2130">2130</a> <em class="jxr_javadoccomment">   * Setup response for the RPC Call.</em>
+<a class="jxr_linenumber" name="2131" href="#2131">2131</a> <em class="jxr_javadoccomment">   *</em>
+<a class="jxr_linenumber" name="2132" href="#2132">2132</a> <em class="jxr_javadoccomment">   * @param response buffer to serialize the response into</em>
+<a class="jxr_linenumber" name="2133" href="#2133">2133</a> <em class="jxr_javadoccomment">   * @param call {@link Call} to which we are setting up the response</em>
+<a class="jxr_linenumber" name="2134" href="#2134">2134</a> <em class="jxr_javadoccomment">   * @param error error message, if the call failed</em>
+<a class="jxr_linenumber" name="2135" href="#2135">2135</a> <em class="jxr_javadoccomment">   * @throws IOException</em>
+<a class="jxr_linenumber" name="2136" href="#2136">2136</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="2137" href="#2137">2137</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> setupResponse(<a href="../../../../../org/apache/hadoop/hbase/io/ByteArrayOutputStream.html">ByteArrayOutputStream</a> response, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.html">Call</a> call, Throwable t, String error)
+<a class="jxr_linenumber" name="2138" href="#2138">2138</a>   <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="2139" href="#2139">2139</a>     <strong class="jxr_keyword">if</strong> (response != <strong class="jxr_keyword">null</strong>) response.reset();
+<a class="jxr_linenumber" name="2140" href="#2140">2140</a>     call.setResponse(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, t, error);
+<a class="jxr_linenumber" name="2141" href="#2141">2141</a>   }
+<a class="jxr_linenumber" name="2142" href="#2142">2142</a> 
+<a class="jxr_linenumber" name="2143" href="#2143">2143</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> closeConnection(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html">Connection</a> connection) {
+<a class="jxr_linenumber" name="2144" href="#2144">2144</a>     <strong class="jxr_keyword">synchronized</strong> (connectionList) {
+<a class="jxr_linenumber" name="2145" href="#2145">2145</a>       <strong class="jxr_keyword">if</strong> (connectionList.remove(connection)) {
+<a class="jxr_linenumber" name="2146" href="#2146">2146</a>         numConnections--;
+<a class="jxr_linenumber" name="2147" href="#2147">2147</a>       }
+<a class="jxr_linenumber" name="2148" href="#2148">2148</a>     }
+<a class="jxr_linenumber" name="2149" href="#2149">2149</a>     connection.close();
+<a class="jxr_linenumber" name="2150" href="#2150">2150</a>   }
+<a class="jxr_linenumber" name="2151" href="#2151">2151</a> 
+<a class="jxr_linenumber" name="2152" href="#2152">2152</a>   Configuration getConf() {
+<a class="jxr_linenumber" name="2153" href="#2153">2153</a>     <strong class="jxr_keyword">return</strong> conf;
+<a class="jxr_linenumber" name="2154" href="#2154">2154</a>   }
+<a class="jxr_linenumber" name="2155" href="#2155">2155</a> 
+<a class="jxr_linenumber" name="2156" href="#2156">2156</a>   <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Sets the socket buffer size used for responding to RPCs.</em>
+<a class="jxr_linenumber" name="2157" href="#2157">2157</a> <em class="jxr_javadoccomment">   * @param size send size</em>
+<a class="jxr_linenumber" name="2158" href="#2158">2158</a> <em class="jxr_javadoccomment">   */</em>
 <a class="jxr_linenumber" name="2159" href="#2159">2159</a>   @Override
-<a class="jxr_linenumber" name="2160" href="#2160">2160</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isStarted() {
-<a class="jxr_linenumber" name="2161" href="#2161">2161</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.started;
-<a class="jxr_linenumber" name="2162" href="#2162">2162</a>   }
-<a class="jxr_linenumber" name="2163" href="#2163">2163</a> 
-<a class="jxr_linenumber" name="2164" href="#2164">2164</a>   <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Starts the service.  Must be called before any calls will be handled. */</em>
-<a class="jxr_linenumber" name="2165" href="#2165">2165</a>   @Override
-<a class="jxr_linenumber" name="2166" href="#2166">2166</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> start() {
-<a class="jxr_linenumber" name="2167" href="#2167">2167</a>     <strong class="jxr_keyword">if</strong> (started) <strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="2168" href="#2168">2168</a>     authTokenSecretMgr = createSecretManager();
-<a class="jxr_linenumber" name="2169" href="#2169">2169</a>     <strong class="jxr_keyword">if</strong> (authTokenSecretMgr != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="2170" href="#2170">2170</a>       setSecretManager(authTokenSecretMgr);
-<a class="jxr_linenumber" name="2171" href="#2171">2171</a>       authTokenSecretMgr.start();
-<a class="jxr_linenumber" name="2172" href="#2172">2172</a>     }
-<a class="jxr_linenumber" name="2173" href="#2173">2173</a>     <strong class="jxr_keyword">this</strong>.authManager = <strong class="jxr_keyword">new</strong> ServiceAuthorizationManager();
-<a class="jxr_linenumber" name="2174" href="#2174">2174</a>     HBasePolicyProvider.init(conf, authManager);
-<a class="jxr_linenumber" name="2175" href="#2175">2175</a>     responder.start();
-<a class="jxr_linenumber" name="2176" href="#2176">2176</a>     listener.start();
-<a class="jxr_linenumber" name="2177" href="#2177">2177</a>     scheduler.start();
-<a class="jxr_linenumber" name="2178" href="#2178">2178</a>     started = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="2179" href="#2179">2179</a>   }
-<a class="jxr_linenumber" name="2180" href="#2180">2180</a> 
-<a class="jxr_linenumber" name="2181" href="#2181">2181</a>   @Override
-<a class="jxr_linenumber" name="2182" href="#2182">2182</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> refreshAuthManager(PolicyProvider pp) {
-<a class="jxr_linenumber" name="2183" href="#2183">2183</a>     <em class="jxr_comment">// Ignore warnings that this should be accessed in a static way instead of via an instance;</em>
-<a class="jxr_linenumber" name="2184" href="#2184">2184</a>     <em class="jxr_comment">// it'll break if you go via static route.</em>
-<a class="jxr_linenumber" name="2185" href="#2185">2185</a>     <strong class="jxr_keyword">this</strong>.authManager.refresh(<strong class="jxr_keyword">this</strong>.conf, pp);
-<a class="jxr_linenumber" name="2186" href="#2186">2186</a>   }
-<a class="jxr_linenumber" name="2187" href="#2187">2187</a> 
-<a class="jxr_linenumber" name="2188" href="#2188">2188</a>   <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html">AuthenticationTokenSecretManager</a> createSecretManager() {
-<a class="jxr_linenumber" name="2189" href="#2189">2189</a>     <strong class="jxr_keyword">if</strong> (!isSecurityEnabled) <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="2190" href="#2190">2190</a>     <strong class="jxr_keyword">if</strong> (server == <strong class="jxr_keyword">null</strong>) <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="2191" href="#2191">2191</a>     Configuration conf = server.getConfiguration();
-<a class="jxr_linenumber" name="2192" href="#2192">2192</a>     <strong class="jxr_keyword">long</strong> keyUpdateInterval =
-<a class="jxr_linenumber" name="2193" href="#2193">2193</a>         conf.getLong(<span class="jxr_string">"hbase.auth.key.update.interval"</span>, 24*60*60*1000);
-<a class="jxr_linenumber" name="2194" href="#2194">2194</a>     <strong class="jxr_keyword">long</strong> maxAge =
-<a class="jxr_linenumber" name="2195" href="#2195">2195</a>         conf.getLong(<span class="jxr_string">"hbase.auth.token.max.lifetime"</span>, 7*24*60*60*1000);
-<a class="jxr_linenumber" name="2196" href="#2196">2196</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html">AuthenticationTokenSecretManager</a>(conf, server.getZooKeeper(),
-<a class="jxr_linenumber" name="2197" href="#2197">2197</a>         server.getServerName().toString(), keyUpdateInterval, maxAge);
-<a class="jxr_linenumber" name="2198" href="#2198">2198</a>   }
-<a class="jxr_linenumber" name="2199" href="#2199">2199</a> 
-<a class="jxr_linenumber" name="2200" href="#2200">2200</a>   <strong class="jxr_keyword">public</strong> SecretManager&lt;? <strong class="jxr_keyword">extends</strong> TokenIdentifier&gt; getSecretManager() {
-<a class="jxr_linenumber" name="2201" href="#2201">2201</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.secretManager;
-<a class="jxr_linenumber" name="2202" href="#2202">2202</a>   }
-<a class="jxr_linenumber" name="2203" href="#2203">2203</a> 
-<a class="jxr_linenumber" name="2204" href="#2204">2204</a>   @SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="2205" href="#2205">2205</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setSecretManager(SecretManager&lt;? <strong class="jxr_keyword">extends</strong> TokenIdentifier&gt; secretManager) {
-<a class="jxr_linenumber" name="2206" href="#2206">2206</a>     <strong class="jxr_keyword">this</strong>.secretManager = (SecretManager&lt;TokenIdentifier&gt;) secretManager;
-<a class="jxr_linenumber" name="2207" href="#2207">2207</a>   }
-<a class="jxr_linenumber" name="2208" href="#2208">2208</a> 
-<a class="jxr_linenumber" name="2209" href="#2209">2209</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2210" href="#2210">2210</a> <em class="jxr_javadoccomment">   * This is a server side method, which is invoked over RPC. On success</em>
-<a class="jxr_linenumber" name="2211" href="#2211">2211</a> <em class="jxr_javadoccomment">   * the return response has protobuf response payload. On failure, the</em>
-<a class="jxr_linenumber" name="2212" href="#2212">2212</a> <em class="jxr_javadoccomment">   * exception name and the stack trace are returned in the protobuf response.</em>
-<a class="jxr_linenumber" name="2213" href="#2213">2213</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2214" href="#2214">2214</a>   @Override
-<a class="jxr_linenumber" name="2215" href="#2215">2215</a>   <strong class="jxr_keyword">public</strong> Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,
-<a class="jxr_linenumber" name="2216" href="#2216">2216</a>       Message param, <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html">CellScanner</a> cellScanner, <strong class="jxr_keyword">long</strong> receiveTime, <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredRPCHandler.html">MonitoredRPCHandler</a> status)
-<a class="jxr_linenumber" name="2217" href="#2217">2217</a>   <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="2218" href="#2218">2218</a>     <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="2219" href="#2219">2219</a>       status.setRPC(md.getName(), <strong class="jxr_keyword">new</strong> Object[]{param}, receiveTime);
-<a class="jxr_linenumber" name="2220" href="#2220">2220</a>       <em class="jxr_comment">// TODO: Review after we add in encoded data blocks.</em>
-<a class="jxr_linenumber" name="2221" href="#2221">2221</a>       status.setRPCPacket(param);
-<a class="jxr_linenumber" name="2222" href="#2222">2222</a>       status.resume(<span class="jxr_string">"Servicing call"</span>);
-<a class="jxr_linenumber" name="2223" href="#2223">2223</a>       <em class="jxr_comment">//get an instance of the method arg type</em>
-<a class="jxr_linenumber" name="2224" href="#2224">2224</a>       <strong class="jxr_keyword">long</strong> startTime = System.currentTimeMillis();
-<a class="jxr_linenumber" name="2225" href="#2225">2225</a>       <a href="../../../../../org/apache/hadoop/hbase/ipc/PayloadCarryingRpcController.html">PayloadCarryingRpcController</a> controller = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/PayloadCarryingRpcController.html">PayloadCarryingRpcController</a>(cellScanner);
-<a class="jxr_linenumber" name="2226" href="#2226">2226</a>       Message result = service.callBlockingMethod(md, controller, param);
-<a class="jxr_linenumber" name="2227" href="#2227">2227</a>       <strong class="jxr_keyword">long</strong> endTime = System.currentTimeMillis();
-<a class="jxr_linenumber" name="2228" href="#2228">2228</a>       <strong class="jxr_keyword">int</strong> processingTime = (<strong class="jxr_keyword">int</strong>) (endTime - startTime);
-<a class="jxr_linenumber" name="2229" href="#2229">2229</a>       <strong class="jxr_keyword">int</strong> qTime = (<strong class="jxr_keyword">int</strong>) (startTime - receiveTime);
-<a class="jxr_linenumber" name="2230" href="#2230">2230</a>       <strong class="jxr_keyword">int</strong> totalTime = (<strong class="jxr_keyword">int</strong>) (endTime - receiveTime);
-<a class="jxr_linenumber" name="2231" href="#2231">2231</a>       <strong class="jxr_keyword">if</strong> (LOG.isTraceEnabled()) {
-<a class="jxr_linenumber" name="2232" href="#2232">2232</a>         LOG.trace(CurCall.get().toString() +
-<a class="jxr_linenumber" name="2233" href="#2233">2233</a>             <span class="jxr_string">", response "</span> + TextFormat.shortDebugString(result) +
-<a class="jxr_linenumber" name="2234" href="#2234">2234</a>             <span class="jxr_string">" queueTime: "</span> + qTime +
-<a class="jxr_linenumber" name="2235" href="#2235">2235</a>             <span class="jxr_string">" processingTime: "</span> + processingTime +
-<a class="jxr_linenumber" name="2236" href="#2236">2236</a>             <span class="jxr_string">" totalTime: "</span> + totalTime);
-<a class="jxr_linenumber" name="2237" href="#2237">2237</a>       }
-<a class="jxr_linenumber" name="2238" href="#2238">2238</a>       <strong class="jxr_keyword">long</strong> requestSize = param.getSerializedSize();
-<a class="jxr_linenumber" name="2239" href="#2239">2239</a>       <strong class="jxr_keyword">long</strong> responseSize = result.getSerializedSize();
-<a class="jxr_linenumber" name="2240" href="#2240">2240</a>       metrics.dequeuedCall(qTime);
-<a class="jxr_linenumber" name="2241" href="#2241">2241</a>       metrics.processedCall(processingTime);
-<a class="jxr_linenumber" name="2242" href="#2242">2242</a>       metrics.totalCall(totalTime);
-<a class="jxr_linenumber" name="2243" href="#2243">2243</a>       metrics.receivedRequest(requestSize);
-<a class="jxr_linenumber" name="2244" href="#2244">2244</a>       metrics.sentResponse(responseSize);
-<a class="jxr_linenumber" name="2245" href="#2245">2245</a>       <em class="jxr_comment">// log any RPC responses that are slower than the configured warn</em>
-<a class="jxr_linenumber" name="2246" href="#2246">2246</a>       <em class="jxr_comment">// response time or larger than configured warning size</em>
-<a class="jxr_linenumber" name="2247" href="#2247">2247</a>       <strong class="jxr_keyword">boolean</strong> tooSlow = (processingTime &gt; warnResponseTime &amp;&amp; warnResponseTime &gt; -1);
-<a class="jxr_linenumber" name="2248" href="#2248">2248</a>       <strong class="jxr_keyword">boolean</strong> tooLarge = (responseSize &gt; warnResponseSize &amp;&amp; warnResponseSize &gt; -1);
-<a class="jxr_linenumber" name="2249" href="#2249">2249</a>       <strong class="jxr_keyword">if</strong> (tooSlow || tooLarge) {
-<a class="jxr_linenumber" name="2250" href="#2250">2250</a>         <em class="jxr_comment">// when tagging, we let TooLarge trump TooSmall to keep output simple</em>
-<a class="jxr_linenumber" name="2251" href="#2251">2251</a>         <em class="jxr_comment">// note that large responses will often also be slow.</em>
-<a class="jxr_linenumber" name="2252" href="#2252">2252</a>         logResponse(<strong class="jxr_keyword">new</strong> Object[]{param},
-<a class="jxr_linenumber" name="2253" href="#2253">2253</a>             md.getName(), md.getName() + <span class="jxr_string">"("</span> + param.getClass().getName() + <span class="jxr_string">")"</span>,
-<a class="jxr_linenumber" name="2254" href="#2254">2254</a>             (tooLarge ? <span class="jxr_string">"TooLarge"</span> : <span class="jxr_string">"TooSlow"</span>),
-<a class="jxr_linenumber" name="2255" href="#2255">2255</a>             status.getClient(), startTime, processingTime, qTime,
-<a class="jxr_linenumber" name="2256" href="#2256">2256</a>             responseSize);
-<a class="jxr_linenumber" name="2257" href="#2257">2257</a>       }
-<a class="jxr_linenumber" name="2258" href="#2258">2258</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> Pair&lt;Message, CellScanner&gt;(result, controller.cellScanner());
-<a class="jxr_linenumber" name="2259" href="#2259">2259</a>     } <strong class="jxr_keyword">catch</strong> (Throwable e) {
-<a class="jxr_linenumber" name="2260" href="#2260">2260</a>       <em class="jxr_comment">// The above callBlockingMethod will always return a SE.  Strip the SE wrapper before</em>
-<a class="jxr_linenumber" name="2261" href="#2261">2261</a>       <em class="jxr_comment">// putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't</em>
-<a class="jxr_linenumber" name="2262" href="#2262">2262</a>       <em class="jxr_comment">// need to pass it over the wire.</em>
-<a class="jxr_linenumber" name="2263" href="#2263">2263</a>       <strong class="jxr_keyword">if</strong> (e instanceof ServiceException) e = e.getCause();
-<a class="jxr_linenumber" name="2264" href="#2264">2264</a> 
-<a class="jxr_linenumber" name="2265" href="#2265">2265</a>       <em class="jxr_comment">// increment the number of requests that were exceptions.</em>
-<a class="jxr_linenumber" name="2266" href="#2266">2266</a>       metrics.exception(e);
+<a class="jxr_linenumber" name="2160" href="#2160">2160</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setSocketSendBufSize(<strong class="jxr_keyword">int</strong> size) { <strong class="jxr_keyword">this</strong>.socketSendBufferSize = size; }
+<a class="jxr_linenumber" name="2161" href="#2161">2161</a> 
+<a class="jxr_linenumber" name="2162" href="#2162">2162</a>   @Override
+<a class="jxr_linenumber" name="2163" href="#2163">2163</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isStarted() {
+<a class="jxr_linenumber" name="2164" href="#2164">2164</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.started;
+<a class="jxr_linenumber" name="2165" href="#2165">2165</a>   }
+<a class="jxr_linenumber" name="2166" href="#2166">2166</a> 
+<a class="jxr_linenumber" name="2167" href="#2167">2167</a>   <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Starts the service.  Must be called before any calls will be handled. */</em>
+<a class="jxr_linenumber" name="2168" href="#2168">2168</a>   @Override
+<a class="jxr_linenumber" name="2169" href="#2169">2169</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> start() {
+<a class="jxr_linenumber" name="2170" href="#2170">2170</a>     <strong class="jxr_keyword">if</strong> (started) <strong class="jxr_keyword">return</strong>;
+<a class="jxr_linenumber" name="2171" href="#2171">2171</a>     authTokenSecretMgr = createSecretManager();
+<a class="jxr_linenumber" name="2172" href="#2172">2172</a>     <strong class="jxr_keyword">if</strong> (authTokenSecretMgr != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="2173" href="#2173">2173</a>       setSecretManager(authTokenSecretMgr);
+<a class="jxr_linenumber" name="2174" href="#2174">2174</a>       authTokenSecretMgr.start();
+<a class="jxr_linenumber" name="2175" href="#2175">2175</a>     }
+<a class="jxr_linenumber" name="2176" href="#2176">2176</a>     <strong class="jxr_keyword">this</strong>.authManager = <strong class="jxr_keyword">new</strong> ServiceAuthorizationManager();
+<a class="jxr_linenumber" name="2177" href="#2177">2177</a>     HBasePolicyProvider.init(conf, authManager);
+<a class="jxr_linenumber" name="2178" href="#2178">2178</a>     responder.start();
+<a class="jxr_linenumber" name="2179" href="#2179">2179</a>     listener.start();
+<a class="jxr_linenumber" name="2180" href="#2180">2180</a>     scheduler.start();
+<a class="jxr_linenumber" name="2181" href="#2181">2181</a>     started = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="2182" href="#2182">2182</a>   }
+<a class="jxr_linenumber" name="2183" href="#2183">2183</a> 
+<a class="jxr_linenumber" name="2184" href="#2184">2184</a>   @Override
+<a class="jxr_linenumber" name="2185" href="#2185">2185</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> refreshAuthManager(PolicyProvider pp) {
+<a class="jxr_linenumber" name="2186" href="#2186">2186</a>     <em class="jxr_comment">// Ignore warnings that this should be accessed in a static way instead of via an instance;</em>
+<a class="jxr_linenumber" name="2187" href="#2187">2187</a>     <em class="jxr_comment">// it'll break if you go via static route.</em>
+<a class="jxr_linenumber" name="2188" href="#2188">2188</a>     <strong class="jxr_keyword">this</strong>.authManager.refresh(<strong class="jxr_keyword">this</strong>.conf, pp);
+<a class="jxr_linenumber" name="2189" href="#2189">2189</a>   }
+<a class="jxr_linenumber" name="2190" href="#2190">2190</a> 
+<a class="jxr_linenumber" name="2191" href="#2191">2191</a>   <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html">AuthenticationTokenSecretManager</a> createSecretManager() {
+<a class="jxr_linenumber" name="2192" href="#2192">2192</a>     <strong class="jxr_keyword">if</strong> (!isSecurityEnabled) <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="2193" href="#2193">2193</a>     <strong class="jxr_keyword">if</strong> (server == <strong class="jxr_keyword">null</strong>) <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="2194" href="#2194">2194</a>     Configuration conf = server.getConfiguration();
+<a class="jxr_linenumber" name="2195" href="#2195">2195</a>     <strong class="jxr_keyword">long</strong> keyUpdateInterval =
+<a class="jxr_linenumber" name="2196" href="#2196">2196</a>         conf.getLong(<span class="jxr_string">"hbase.auth.key.update.interval"</span>, 24*60*60*1000);
+<a class="jxr_linenumber" name="2197" href="#2197">2197</a>     <strong class="jxr_keyword">long</strong> maxAge =
+<a class="jxr_linenumber" name="2198" href="#2198">2198</a>         conf.getLong(<span class="jxr_string">"hbase.auth.token.max.lifetime"</span>, 7*24*60*60*1000);
+<a class="jxr_linenumber" name="2199" href="#2199">2199</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html">AuthenticationTokenSecretManager</a>(conf, server.getZooKeeper(),
+<a class="jxr_linenumber" name="2200" href="#2200">2200</a>         server.getServerName().toString(), keyUpdateInterval, maxAge);
+<a class="jxr_linenumber" name="2201" href="#2201">2201</a>   }
+<a class="jxr_linenumber" name="2202" href="#2202">2202</a> 
+<a class="jxr_linenumber" name="2203" href="#2203">2203</a>   <strong class="jxr_keyword">public</strong> SecretManager&lt;? <strong class="jxr_keyword">extends</strong> TokenIdentifier&gt; getSecretManager() {
+<a class="jxr_linenumber" name="2204" href="#2204">2204</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.secretManager;
+<a class="jxr_linenumber" name="2205" href="#2205">2205</a>   }
+<a class="jxr_linenumber" name="2206" href="#2206">2206</a> 
+<a class="jxr_linenumber" name="2207" href="#2207">2207</a>   @SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="2208" href="#2208">2208</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setSecretManager(SecretManager&lt;? <strong class="jxr_keyword">extends</strong> TokenIdentifier&gt; secretManager) {
+<a class="jxr_linenumber" name="2209" href="#2209">2209</a>     <strong class="jxr_keyword">this</strong>.secretManager = (SecretManager&lt;TokenIdentifier&gt;) secretManager;
+<a class="jxr_linenumber" name="2210" href="#2210">2210</a>   }
+<a class="jxr_linenumber" name="2211" href="#2211">2211</a> 
+<a class="jxr_linenumber" name="2212" href="#2212">2212</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="2213" href="#2213">2213</a> <em class="jxr_javadoccomment">   * This is a server side method, which is invoked over RPC. On success</em>
+<a class="jxr_linenumber" name="2214" href="#2214">2214</a> <em class="jxr_javadoccomment">   * the return response has protobuf response payload. On failure, the</em>
+<a class="jxr_linenumber" name="2215" href="#2215">2215</a> <em class="jxr_javadoccomment">   * exception name and the stack trace are returned in the protobuf response.</em>
+<a class="jxr_linenumber" name="2216" href="#2216">2216</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="2217" href="#2217">2217</a>   @Override
+<a class="jxr_linenumber" name="2218" href="#2218">2218</a>   <strong class="jxr_keyword">public</strong> Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,
+<a class="jxr_linenumber" name="2219" href="#2219">2219</a>       Message param, <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html">CellScanner</a> cellScanner, <strong class="jxr_keyword">long</strong> receiveTime, <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredRPCHandler.html">MonitoredRPCHandler</a> status)
+<a class="jxr_linenumber" name="2220" href="#2220">2220</a>   <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="2221" href="#2221">2221</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="2222" href="#2222">2222</a>       status.setRPC(md.getName(), <strong class="jxr_keyword">new</strong> Object[]{param}, receiveTime);
+<a class="jxr_linenumber" name="2223" href="#2223">2223</a>       <em class="jxr_comment">// TODO: Review after we add in encoded data blocks.</em>
+<a class="jxr_linenumber" name="2224" href="#2224">2224</a>       status.setRPCPacket(param);
+<a class="jxr_linenumber" name="2225" href="#2225">2225</a>       status.resume(<span class="jxr_string">"Servicing call"</span>);
+<a class="jxr_linenumber" name="2226" href="#2226">2226</a>       <em class="jxr_comment">//get an instance of the method arg type</em>
+<a class="jxr_linenumber" name="2227" href="#2227">2227</a>       <strong class="jxr_keyword">long</strong> startTime = System.currentTimeMillis();
+<a class="jxr_linenumber" name="2228" href="#2228">2228</a>       <a href="../../../../../org/apache/hadoop/hbase/ipc/PayloadCarryingRpcController.html">PayloadCarryingRpcController</a> controller = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/PayloadCarryingRpcController.html">PayloadCarryingRpcController</a>(cellScanner);
+<a class="jxr_linenumber" name="2229" href="#2229">2229</a>       Message result = service.callBlockingMethod(md, controller, param);
+<a class="jxr_linenumber" name="2230" href="#2230">2230</a>       <strong class="jxr_keyword">long</strong> endTime = System.currentTimeMillis();
+<a class="jxr_linenumber" name="2231" href="#2231">2231</a>       <strong class="jxr_keyword">int</strong> processingTime = (<strong class="jxr_keyword">int</strong>) (endTime - startTime);
+<a class="jxr_linenumber" name="2232" href="#2232">2232</a>       <strong class="jxr_keyword">int</strong> qTime = (<strong class="jxr_keyword">int</strong>) (startTime - receiveTime);
+<a class="jxr_linenumber" name="2233" href="#2233">2233</a>       <strong class="jxr_keyword">int</strong> totalTime = (<strong class="jxr_keyword">int</strong>) (endTime - receiveTime);
+<a class="jxr_linenumber" name="2234" href="#2234">2234</a>       <strong class="jxr_keyword">if</strong> (LOG.isTraceEnabled()) {
+<a class="jxr_linenumber" name="2235" href="#2235">2235</a>         LOG.trace(CurCall.get().toString() +
+<a class="jxr_linenumber" name="2236" href="#2236">2236</a>             <span class="jxr_string">", response "</span> + TextFormat.shortDebugString(result) +
+<a class="jxr_linenumber" name="2237" href="#2237">2237</a>             <span class="jxr_string">" queueTime: "</span> + qTime +
+<a class="jxr_linenumber" name="2238" href="#2238">2238</a>             <span class="jxr_string">" processingTime: "</span> + processingTime +
+<a class="jxr_linenumber" name="2239" href="#2239">2239</a>             <span class="jxr_string">" totalTime: "</span> + totalTime);
+<a class="jxr_linenumber" name="2240" href="#2240">2240</a>       }
+<a class="jxr_linenumber" name="2241" href="#2241">2241</a>       <strong class="jxr_keyword">long</strong> requestSize = param.getSerializedSize();
+<a class="jxr_linenumber" name="2242" href="#2242">2242</a>       <strong class="jxr_keyword">long</strong> responseSize = result.getSerializedSize();
+<a class="jxr_linenumber" name="2243" href="#2243">2243</a>       metrics.dequeuedCall(qTime);
+<a class="jxr_linenumber" name="2244" href="#2244">2244</a>       metrics.processedCall(processingTime);
+<a class="jxr_linenumber" name="2245" href="#2245">2245</a>       metrics.totalCall(totalTime);
+<a class="jxr_linenumber" name="2246" href="#2246">2246</a>       metrics.receivedRequest(requestSize);
+<a class="jxr_linenumber" name="2247" href="#2247">2247</a>       metrics.sentResponse(responseSize);
+<a class="jxr_linenumber" name="2248" href="#2248">2248</a>       <em class="jxr_comment">// log any RPC responses that are slower than the configured warn</em>
+<a class="jxr_linenumber" name="2249" href="#2249">2249</a>       <em class="jxr_comment">// response time or larger than configured warning size</em>
+<a class="jxr_linenumber" name="2250" href="#2250">2250</a>       <strong class="jxr_keyword">boolean</strong> tooSlow = (processingTime &gt; warnResponseTime &amp;&amp; warnResponseTime &gt; -1);
+<a class="jxr_linenumber" name="2251" href="#2251">2251</a>       <strong class="jxr_keyword">boolean</strong> tooLarge = (responseSize &gt; warnResponseSize &amp;&amp; warnResponseSize &gt; -1);
+<a class="jxr_linenumber" name="2252" href="#2252">2252</a>       <strong class="jxr_keyword">if</strong> (tooSlow || tooLarge) {
+<a class="jxr_linenumber" name="2253" href="#2253">2253</a>         <em class="jxr_comment">// when tagging, we let TooLarge trump TooSmall to keep output simple</em>
+<a class="jxr_linenumber" name="2254" href="#2254">2254</a>         <em class="jxr_comment">// note that large responses will often also be slow.</em>
+<a class="jxr_linenumber" name="2255" href="#2255">2255</a>         logResponse(<strong class="jxr_keyword">new</strong> Object[]{param},
+<a class="jxr_linenumber" name="2256" href="#2256">2256</a>             md.getName(), md.getName() + <span class="jxr_string">"("</span> + param.getClass().getName() + <span class="jxr_string">")"</span>,
+<a class="jxr_linenumber" name="2257" href="#2257">2257</a>             (tooLarge ? <span class="jxr_string">"TooLarge"</span> : <span class="jxr_string">"TooSlow"</span>),
+<a class="jxr_linenumber" name="2258" href="#2258">2258</a>             status.getClient(), startTime, processingTime, qTime,
+<a class="jxr_linenumber" name="2259" href="#2259">2259</a>             responseSize);
+<a class="jxr_linenumber" name="2260" href="#2260">2260</a>       }
+<a class="jxr_linenumber" name="2261" href="#2261">2261</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> Pair&lt;Message, CellScanner&gt;(result, controller.cellScanner());
+<a class="jxr_linenumber" name="2262" href="#2262">2262</a>     } <strong class="jxr_keyword">catch</strong> (Throwable e) {
+<a class="jxr_linenumber" name="2263" href="#2263">2263</a>       <em class="jxr_comment">// The above callBlockingMethod will always return a SE.  Strip the SE wrapper before</em>
+<a class="jxr_linenumber" name="2264" href="#2264">2264</a>       <em class="jxr_comment">// putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't</em>
+<a class="jxr_linenumber" name="2265" href="#2265">2265</a>       <em class="jxr_comment">// need to pass it over the wire.</em>
+<a class="jxr_linenumber" name="2266" href="#2266">2266</a>       <strong class="jxr_keyword">if</strong> (e instanceof ServiceException) e = e.getCause();
 <a class="jxr_linenumber" name="2267" href="#2267">2267</a> 
-<a class="jxr_linenumber" name="2268" href="#2268">2268</a>       <strong class="jxr_keyword">if</strong> (e instanceof LinkageError) <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> DoNotRetryIOException(e);
-<a class="jxr_linenumber" name="2269" href="#2269">2269</a>       <strong class="jxr_keyword">if</strong> (e instanceof IOException) <strong class="jxr_keyword">throw</strong> (IOException)e;
-<a class="jxr_linenumber" name="2270" href="#2270">2270</a>       LOG.error(<span class="jxr_string">"Unexpected throwable object "</span>, e);
-<a class="jxr_linenumber" name="2271" href="#2271">2271</a>       <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(e.getMessage(), e);
-<a class="jxr_linenumber" name="2272" href="#2272">2272</a>     }
-<a class="jxr_linenumber" name="2273" href="#2273">2273</a>   }
-<a class="jxr_linenumber" name="2274" href="#2274">2274</a> 
-<a class="jxr_linenumber" name="2275" href="#2275">2275</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2276" href="#2276">2276</a> <em class="jxr_javadoccomment">   * Logs an RPC response to the LOG file, producing valid JSON objects for</em>
-<a class="jxr_linenumber" name="2277" href="#2277">2277</a> <em class="jxr_javadoccomment">   * client Operations.</em>
-<a class="jxr_linenumber" name="2278" href="#2278">2278</a> <em class="jxr_javadoccomment">   * @param params The parameters received in the call.</em>
-<a class="jxr_linenumber" name="2279" href="#2279">2279</a> <em class="jxr_javadoccomment">   * @param methodName The name of the method invoked</em>
-<a class="jxr_linenumber" name="2280" href="#2280">2280</a> <em class="jxr_javadoccomment">   * @param call The string representation of the call</em>
-<a class="jxr_linenumber" name="2281" href="#2281">2281</a> <em class="jxr_javadoccomment">   * @param tag  The tag that will be used to indicate this event in the log.</em>
-<a class="jxr_linenumber" name="2282" href="#2282">2282</a> <em class="jxr_javadoccomment">   * @param clientAddress   The address of the client who made this call.</em>
-<a class="jxr_linenumber" name="2283" href="#2283">2283</a> <em class="jxr_javadoccomment">   * @param startTime       The time that the call was initiated, in ms.</em>
-<a class="jxr_linenumber" name="2284" href="#2284">2284</a> <em class="jxr_javadoccomment">   * @param processingTime  The duration that the call took to run, in ms.</em>
-<a class="jxr_linenumber" name="2285" href="#2285">2285</a> <em class="jxr_javadoccomment">   * @param qTime           The duration that the call spent on the queue</em>
-<a class="jxr_linenumber" name="2286" href="#2286">2286</a> <em class="jxr_javadoccomment">   *                        prior to being initiated, in ms.</em>
-<a class="jxr_linenumber" name="2287" href="#2287">2287</a> <em class="jxr_javadoccomment">   * @param responseSize    The size in bytes of the response buffer.</em>
-<a class="jxr_linenumber" name="2288" href="#2288">2288</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2289" href="#2289">2289</a>   <strong class="jxr_keyword">void</strong> logResponse(Object[] params, String methodName, String call, String tag,
-<a class="jxr_linenumber" name="2290" href="#2290">2290</a>       String clientAddress, <strong class="jxr_keyword">long</strong> startTime, <strong class="jxr_keyword">int</strong> processingTime, <strong class="jxr_keyword">int</strong> qTime,
-<a class="jxr_linenumber" name="2291" href="#2291">2291</a>       <strong class="jxr_keyword">long</strong> responseSize)
-<a class="jxr_linenumber" name="2292" href="#2292">2292</a>           <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="2293" href="#2293">2293</a>     <em class="jxr_comment">// base information that is reported regardless of type of call</em>
-<a class="jxr_linenumber" name="2294" href="#2294">2294</a>     Map&lt;String, Object&gt; responseInfo = <strong class="jxr_keyword">new</strong> HashMap&lt;String, Object&gt;();
-<a class="jxr_linenumber" name="2295" href="#2295">2295</a>     responseInfo.put(<span class="jxr_string">"starttimems"</span>, startTime);
-<a class="jxr_linenumber" name="2296" href="#2296">2296</a>     responseInfo.put(<span class="jxr_string">"processingtimems"</span>, processingTime);
-<a class="jxr_linenumber" name="2297" href="#2297">2297</a>     responseInfo.put(<span class="jxr_string">"queuetimems"</span>, qTime);
-<a class="jxr_linenumber" name="2298" href="#2298">2298</a>     responseInfo.put(<span class="jxr_string">"responsesize"</span>, responseSize);
-<a class="jxr_linenumber" name="2299" href="#2299">2299</a>     responseInfo.put(<span class="jxr_string">"client"</span>, clientAddress);
-<a class="jxr_linenumber" name="2300" href="#2300">2300</a>     responseInfo.put(<span class="jxr_string">"class"</span>, server == <strong class="jxr_keyword">null</strong>? <span class="jxr_string">""</span>: server.getClass().getSimpleName());
-<a class="jxr_linenumber" name="2301" href="#2301">2301</a>     responseInfo.put(<span class="jxr_string">"method"</span>, methodName);
-<a class="jxr_linenumber" name="2302" href="#2302">2302</a>     <strong class="jxr_keyword">if</strong> (params.length == 2 &amp;&amp; server instanceof HRegionServer &amp;&amp;
-<a class="jxr_linenumber" name="2303" href="#2303">2303</a>         params[0] instanceof byte[] &amp;&amp;
-<a class="jxr_linenumber" name="2304" href="#2304">2304</a>         params[1] instanceof <a href="../../../../../org/apache/hadoop/hbase/client/Operation.html">Operation</a>) {
-<a class="jxr_linenumber" name="2305" href="#2305">2305</a>       <em class="jxr_comment">// if the slow process is a query, we want to log its table as well</em>
-<a class="jxr_linenumber" name="2306" href="#2306">2306</a>       <em class="jxr_comment">// as its own fingerprint</em>
-<a class="jxr_linenumber" name="2307" href="#2307">2307</a>       <a href="../../../../../org/apache/hadoop/hbase/TableName.html">TableName</a> tableName = TableName.valueOf(
-<a class="jxr_linenumber" name="2308" href="#2308">2308</a>           HRegionInfo.parseRegionName((byte[]) params[0])[0]);
-<a class="jxr_linenumber" name="2309" href="#2309">2309</a>       responseInfo.put(<span class="jxr_string">"table"</span>, tableName.getNameAsString());
-<a class="jxr_linenumber" name="2310" href="#2310">2310</a>       <em class="jxr_comment">// annotate the response map with operation details</em>
-<a class="jxr_linenumber" name="2311" href="#2311">2311</a>       responseInfo.putAll(((Operation) params[1]).toMap());
-<a class="jxr_linenumber" name="2312" href="#2312">2312</a>       <em class="jxr_comment">// report to the log file</em>
-<a class="jxr_linenumber" name="2313" href="#2313">2313</a>       LOG.warn(<span class="jxr_string">"(operation"</span> + tag + <span class="jxr_string">"): "</span> +
-<a class="jxr_linenumber" name="2314" href="#2314">2314</a>                MAPPER.writeValueAsString(responseInfo));
-<a class="jxr_linenumber" name="2315" href="#2315">2315</a>     } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (params.length == 1 &amp;&amp; server instanceof HRegionServer &amp;&amp;
-<a class="jxr_linenumber" name="2316" href="#2316">2316</a>         params[0] instanceof <a href="../../../../../org/apache/hadoop/hbase/client/Operation.html">Operation</a>) {
-<a class="jxr_linenumber" name="2317" href="#2317">2317</a>       <em class="jxr_comment">// annotate the response map with operation details</em>
-<a class="jxr_linenumber" name="2318" href="#2318">2318</a>       responseInfo.putAll(((Operation) params[0]).toMap());
-<a class="jxr_linenumber" name="2319" href="#2319">2319</a>       <em class="jxr_comment">// report to the log file</em>
-<a class="jxr_linenumber" name="2320" href="#2320">2320</a>       LOG.warn(<span class="jxr_string">"(operation"</span> + tag + <span class="jxr_string">"): "</span> +
-<a class="jxr_linenumber" name="2321" href="#2321">2321</a>                MAPPER.writeValueAsString(responseInfo));
-<a class="jxr_linenumber" name="2322" href="#2322">2322</a>     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="2323" href="#2323">2323</a>       <em class="jxr_comment">// can't get JSON details, so just report call.toString() along with</em>
-<a class="jxr_linenumber" name="2324" href="#2324">2324</a>       <em class="jxr_comment">// a more generic tag.</em>
-<a class="jxr_linenumber" name="2325" href="#2325">2325</a>       responseInfo.put(<span class="jxr_string">"call"</span>, call);
-<a class="jxr_linenumber" name="2326" href="#2326">2326</a>       LOG.warn(<span class="jxr_string">"(response"</span> + tag + <span class="jxr_string">"): "</span> + MAPPER.writeValueAsString(responseInfo));
-<a class="jxr_linenumber" name="2327" href="#2327">2327</a>     }
-<a class="jxr_linenumber" name="2328" href="#2328">2328</a>   }
-<a class="jxr_linenumber" name="2329" href="#2329">2329</a> 
-<a class="jxr_linenumber" name="2330" href="#2330">2330</a>   <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Stops the service.  No new calls will be handled after this is called. */</em>
-<a class="jxr_linenumber" name="2331" href="#2331">2331</a>   @Override
-<a class="jxr_linenumber" name="2332" href="#2332">2332</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> stop() {
-<a class="jxr_linenumber" name="2333" href="#2333">2333</a>     LOG.info(<span class="jxr_string">"Stopping server on "</span> + port);
-<a class="jxr_linenumber" name="2334" href="#2334">2334</a>     running = false;
-<a class="jxr_linenumber" name="2335" href="#2335">2335</a>     <strong class="jxr_keyword">if</strong> (authTokenSecretMgr != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="2336" href="#2336">2336</a>       authTokenSecretMgr.stop();
-<a class="jxr_linenumber" name="2337" href="#2337">2337</a>       authTokenSecretMgr = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="2338" href="#2338">2338</a>     }
-<a class="jxr_linenumber" name="2339" href="#2339">2339</a>     listener.interrupt();
-<a class="jxr_linenumber" name="2340" href="#2340">2340</a>     listener.doStop();
-<a class="jxr_linenumber" name="2341" href="#2341">2341</a>     responder.interrupt();
-<a class="jxr_linenumber" name="2342" href="#2342">2342</a>     scheduler.stop();
-<a class="jxr_linenumber" name="2343" href="#2343">2343</a>     notifyAll();
-<a class="jxr_linenumber" name="2344" href="#2344">2344</a>   }
-<a class="jxr_linenumber" name="2345" href="#2345">2345</a> 
-<a class="jxr_linenumber" name="2346" href="#2346">2346</a>   <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Wait for the server to be stopped.</em>
-<a class="jxr_linenumber" name="2347" href="#2347">2347</a> <em class="jxr_javadoccomment">   * Does not wait for all subthreads to finish.</em>
-<a class="jxr_linenumber" name="2348" href="#2348">2348</a> <em class="jxr_javadoccomment">   *  See {@link #stop()}.</em>
-<a class="jxr_linenumber" name="2349" href="#2349">2349</a> <em class="jxr_javadoccomment">   * @throws InterruptedException e</em>
-<a class="jxr_linenumber" name="2350" href="#2350">2350</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2351" href="#2351">2351</a>   @Override
-<a class="jxr_linenumber" name="2352" href="#2352">2352</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> join() <strong class="jxr_keyword">throws</strong> InterruptedException {
-<a class="jxr_linenumber" name="2353" href="#2353">2353</a>     <strong class="jxr_keyword">while</strong> (running) {
-<a class="jxr_linenumber" name="2354" href="#2354">2354</a>       wait();
-<a class="jxr_linenumber" name="2355" href="#2355">2355</a>     }
-<a class="jxr_linenumber" name="2356" href="#2356">2356</a>   }
-<a class="jxr_linenumber" name="2357" href="#2357">2357</a> 
-<a class="jxr_linenumber" name="2358" href="#2358">2358</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2359" href="#2359">2359</a> <em class="jxr_javadoccomment">   * Return the socket (ip+port) on which the RPC server is listening to. May return null if</em>
-<a class="jxr_linenumber" name="2360" href="#2360">2360</a> <em class="jxr_javadoccomment">   * the listener channel is closed.</em>
-<a class="jxr_linenumber" name="2361" href="#2361">2361</a> <em class="jxr_javadoccomment">   * @return the socket (ip+port) on which the RPC server is listening to, or null if this</em>
-<a class="jxr_linenumber" name="2362" href="#2362">2362</a> <em class="jxr_javadoccomment">   * information cannot be determined</em>
-<a class="jxr_linenumber" name="2363" href="#2363">2363</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2364" href="#2364">2364</a>   @Override
-<a class="jxr_linenumber" name="2365" href="#2365">2365</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> InetSocketAddress getListenerAddress() {
-<a class="jxr_linenumber" name="2366" href="#2366">2366</a>     <strong class="jxr_keyword">if</strong> (listener == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="2367" href="#2367">2367</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="2368" href="#2368">2368</a>     }
-<a class="jxr_linenumber" name="2369" href="#2369">2369</a>     <strong class="jxr_keyword">return</strong> listener.getAddress();
-<a class="jxr_linenumber" name="2370" href="#2370">2370</a>   }
-<a class="jxr_linenumber" name="2371" href="#2371">2371</a> 
-<a class="jxr_linenumber" name="2372" href="#2372">2372</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2373" href="#2373">2373</a> <em class="jxr_javadoccomment">   * Set the handler for calling out of RPC for error conditions.</em>
-<a class="jxr_linenumber" name="2374" href="#2374">2374</a> <em class="jxr_javadoccomment">   * @param handler the handler implementation</em>
-<a class="jxr_linenumber" name="2375" href="#2375">2375</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2376" href="#2376">2376</a>   @Override
-<a class="jxr_linenumber" name="2377" href="#2377">2377</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setErrorHandler(<a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRPCErrorHandler.html">HBaseRPCErrorHandler</a> handler) {
-<a class="jxr_linenumber" name="2378" href="#2378">2378</a>     <strong class="jxr_keyword">this</strong>.errorHandler = handler;
-<a class="jxr_linenumber" name="2379" href="#2379">2379</a>   }
-<a class="jxr_linenumber" name="2380" href="#2380">2380</a> 
-<a class="jxr_linenumber" name="2381" href="#2381">2381</a>   @Override
-<a class="jxr_linenumber" name="2382" href="#2382">2382</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRPCErrorHandler.html">HBaseRPCErrorHandler</a> getErrorHandler() {
-<a class="jxr_linenumber" name="2383" href="#2383">2383</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.errorHandler;
-<a class="jxr_linenumber" name="2384" href="#2384">2384</a>   }
-<a class="jxr_linenumber" name="2385" href="#2385">2385</a> 
-<a class="jxr_linenumber" name="2386" href="#2386">2386</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2387" href="#2387">2387</a> <em class="jxr_javadoccomment">   * Returns the metrics instance for reporting RPC call statistics</em>
-<a class="jxr_linenumber" name="2388" href="#2388">2388</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2389" href="#2389">2389</a>   @Override
-<a class="jxr_linenumber" name="2390" href="#2390">2390</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServer.html">MetricsHBaseServer</a> getMetrics() {
-<a class="jxr_linenumber" name="2391" href="#2391">2391</a>     <strong class="jxr_keyword">return</strong> metrics;
-<a class="jxr_linenumber" name="2392" href="#2392">2392</a>   }
-<a class="jxr_linenumber" name="2393" href="#2393">2393</a> 
-<a class="jxr_linenumber" name="2394" href="#2394">2394</a>   @Override
-<a class="jxr_linenumber" name="2395" href="#2395">2395</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addCallSize(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> diff) {
-<a class="jxr_linenumber" name="2396" href="#2396">2396</a>     <strong class="jxr_keyword">this</strong>.callQueueSize.add(diff);
-<a class="jxr_linenumber" name="2397" href="#2397">2397</a>   }
-<a class="jxr_linenumber" name="2398" href="#2398">2398</a> 
-<a class="jxr_linenumber" name="2399" href="#2399">2399</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2400" href="#2400">2400</a> <em class="jxr_javadoccomment">   * Authorize the incoming client connection.</em>
-<a class="jxr_linenumber" name="2401" href="#2401">2401</a> <em class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="2402" href="#2402">2402</a> <em class="jxr_javadoccomment">   * @param user client user</em>
-<a class="jxr_linenumber" name="2403" href="#2403">2403</a> <em class="jxr_javadoccomment">   * @param connection incoming connection</em>
-<a class="jxr_linenumber" name="2404" href="#2404">2404</a> <em class="jxr_javadoccomment">   * @param addr InetAddress of incoming connection</em>
-<a class="jxr_linenumber" name="2405" href="#2405">2405</a> <em class="jxr_javadoccomment">   * @throws org.apache.hadoop.security.authorize.AuthorizationException</em>
-<a class="jxr_linenumber" name="2406" href="#2406">2406</a> <em class="jxr_javadoccomment">   *         when the client isn't authorized to talk the protocol</em>
-<a class="jxr_linenumber" name="2407" href="#2407">2407</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2408" href="#2408">2408</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> authorize(UserGroupInformation user, ConnectionHeader connection,
-<a class="jxr_linenumber" name="2409" href="#2409">2409</a>       InetAddress addr)
-<a class="jxr_linenumber" name="2410" href="#2410">2410</a>   <strong class="jxr_keyword">throws</strong> AuthorizationException {
-<a class="jxr_linenumber" name="2411" href="#2411">2411</a>     <strong class="jxr_keyword">if</strong> (authorize) {
-<a class="jxr_linenumber" name="2412" href="#2412">2412</a>       Class&lt;?&gt; c = getServiceInterface(services, connection.getServiceName());
-<a class="jxr_linenumber" name="2413" href="#2413">2413</a>       <strong class="jxr_keyword">this</strong>.authManager.authorize(user != <strong class="jxr_keyword">null</strong> ? user : <strong class="jxr_keyword">null</strong>, c, getConf(), addr);
-<a class="jxr_linenumber" name="2414" href="#2414">2414</a>     }
-<a class="jxr_linenumber" name="2415" href="#2415">2415</a>   }
-<a class="jxr_linenumber" name="2416" href="#2416">2416</a> 
-<a class="jxr_linenumber" name="2417" href="#2417">2417</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2418" href="#2418">2418</a> <em class="jxr_javadoccomment">   * When the read or write buffer size is larger than this limit, i/o will be</em>
-<a class="jxr_linenumber" name="2419" href="#2419">2419</a> <em class="jxr_javadoccomment">   * done in chunks of this size. Most RPC requests and responses would be</em>
-<a class="jxr_linenumber" name="2420" href="#2420">2420</a> <em class="jxr_javadoccomment">   * be smaller.</em>
-<a class="jxr_linenumber" name="2421" href="#2421">2421</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2422" href="#2422">2422</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> NIO_BUFFER_LIMIT = 64 * 1024; <em class="jxr_comment">//should not be more than 64KB.</em>
-<a class="jxr_linenumber" name="2423" href="#2423">2423</a> 
-<a class="jxr_linenumber" name="2424" href="#2424">2424</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2425" href="#2425">2425</a> <em class="jxr_javadoccomment">   * This is a wrapper around {@link java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)}.</em>
-<a class="jxr_linenumber" name="2426" href="#2426">2426</a> <em class="jxr_javadoccomment">   * If the amount of data is large, it writes to channel in smaller chunks.</em>
-<a class="jxr_linenumber" name="2427" href="#2427">2427</a> <em class="jxr_javadoccomment">   * This is to avoid jdk from creating many direct buffers as the size of</em>
-<a class="jxr_linenumber" name="2428" href="#2428">2428</a> <em class="jxr_javadoccomment">   * buffer increases. This also minimizes extra copies in NIO layer</em>
-<a class="jxr_linenumber" name="2429" href="#2429">2429</a> <em class="jxr_javadoccomment">   * as a result of multiple write operations required to write a large</em>
-<a class="jxr_linenumber" name="2430" href="#2430">2430</a> <em class="jxr_javadoccomment">   * buffer.</em>
-<a class="jxr_linenumber" name="2431" href="#2431">2431</a> <em class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="2432" href="#2432">2432</a> <em class="jxr_javadoccomment">   * @param channel writable byte channel to write to</em>
-<a class="jxr_linenumber" name="2433" href="#2433">2433</a> <em class="jxr_javadoccomment">   * @param bufferChain Chain of buffers to write</em>
-<a class="jxr_linenumber" name="2434" href="#2434">2434</a> <em class="jxr_javadoccomment">   * @return number of bytes written</em>
-<a class="jxr_linenumber" name="2435" href="#2435">2435</a> <em class="jxr_javadoccomment">   * @throws java.io.IOException e</em>
-<a class="jxr_linenumber" name="2436" href="#2436">2436</a> <em class="jxr_javadoccomment">   * @see java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)</em>
-<a class="jxr_linenumber" name="2437" href="#2437">2437</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2438" href="#2438">2438</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">long</strong> channelWrite(GatheringByteChannel channel, <a href="../../../../../org/apache/hadoop/hbase/ipc/BufferChain.html">BufferChain</a> bufferChain)
-<a class="jxr_linenumber" name="2439" href="#2439">2439</a>   <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="2440" href="#2440">2440</a>     <strong class="jxr_keyword">long</strong> count =  bufferChain.write(channel, NIO_BUFFER_LIMIT);
-<a class="jxr_linenumber" name="2441" href="#2441">2441</a>     <strong class="jxr_keyword">if</strong> (count &gt; 0) <strong class="jxr_keyword">this</strong>.metrics.sentBytes(count);
-<a class="jxr_linenumber" name="2442" href="#2442">2442</a>     <strong class="jxr_keyword">return</strong> count;
-<a class="jxr_linenumber" name="2443" href="#2443">2443</a>   }
-<a class="jxr_linenumber" name="2444" href="#2444">2444</a> 
-<a class="jxr_linenumber" name="2445" href="#2445">2445</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2446" href="#2446">2446</a> <em class="jxr_javadoccomment">   * This is a wrapper around {@link java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer)}.</em>
-<a class="jxr_linenumber" name="2447" href="#2447">2447</a> <em class="jxr_javadoccomment">   * If the amount of data is large, it writes to channel in smaller chunks.</em>
-<a class="jxr_linenumber" name="2448" href="#2448">2448</a> <em class="jxr_javadoccomment">   * This is to avoid jdk from creating many direct buffers as the size of</em>
-<a class="jxr_linenumber" name="2449" href="#2449">2449</a> <em class="jxr_javadoccomment">   * ByteBuffer increases. There should not be any performance degredation.</em>
-<a class="jxr_linenumber" name="2450" href="#2450">2450</a> <em class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="2451" href="#2451">2451</a> <em class="jxr_javadoccomment">   * @param channel writable byte channel to write on</em>
-<a class="jxr_linenumber" name="2452" href="#2452">2452</a> <em class="jxr_javadoccomment">   * @param buffer buffer to write</em>
-<a class="jxr_linenumber" name="2453" href="#2453">2453</a> <em class="jxr_javadoccomment">   * @return number of bytes written</em>
-<a class="jxr_linenumber" name="2454" href="#2454">2454</a> <em class="jxr_javadoccomment">   * @throws java.io.IOException e</em>
-<a class="jxr_linenumber" name="2455" href="#2455">2455</a> <em class="jxr_javadoccomment">   * @see java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer)</em>
-<a class="jxr_linenumber" name="2456" href="#2456">2456</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2457" href="#2457">2457</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">int</strong> channelRead(ReadableByteChannel channel,
-<a class="jxr_linenumber" name="2458" href="#2458">2458</a>                                    ByteBuffer buffer) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="2459" href="#2459">2459</a> 
-<a class="jxr_linenumber" name="2460" href="#2460">2460</a>     <strong class="jxr_keyword">int</strong> count = (buffer.remaining() &lt;= NIO_BUFFER_LIMIT) ?
-<a class="jxr_linenumber" name="2461" href="#2461">2461</a>            channel.read(buffer) : channelIO(channel, <strong class="jxr_keyword">null</strong>, buffer);
-<a class="jxr_linenumber" name="2462" href="#2462">2462</a>     <strong class="jxr_keyword">if</strong> (count &gt; 0) {
-<a class="jxr_linenumber" name="2463" href="#2463">2463</a>       metrics.receivedBytes(count);
-<a class="jxr_linenumber" name="2464" href="#2464">2464</a>     }
-<a class="jxr_linenumber" name="2465" href="#2465">2465</a>     <strong class="jxr_keyword">return</strong> count;
-<a class="jxr_linenumber" name="2466" href="#2466">2466</a>   }
-<a class="jxr_linenumber" name="2467" href="#2467">2467</a> 
-<a class="jxr_linenumber" name="2468" href="#2468">2468</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2469" href="#2469">2469</a> <em class="jxr_javadoccomment">   * Helper for {@link #channelRead(java.nio.channels.ReadableByteChannel, java.nio.ByteBuffer)}</em>
-<a class="jxr_linenumber" name="2470" href="#2470">2470</a> <em class="jxr_javadoccomment">   * and {@link #channelWrite(GatheringByteChannel, BufferChain)}. Only</em>
-<a class="jxr_linenumber" name="2471" href="#2471">2471</a> <em class="jxr_javadoccomment">   * one of readCh or writeCh should be non-null.</em>
-<a class="jxr_linenumber" name="2472" href="#2472">2472</a> <em class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="2473" href="#2473">2473</a> <em class="jxr_javadoccomment">   * @param readCh read channel</em>
-<a class="jxr_linenumber" name="2474" href="#2474">2474</a> <em class="jxr_javadoccomment">   * @param writeCh write channel</em>
-<a class="jxr_linenumber" name="2475" href="#2475">2475</a> <em class="jxr_javadoccomment">   * @param buf buffer to read or write into/out of</em>
-<a class="jxr_linenumber" name="2476" href="#2476">2476</a> <em class="jxr_javadoccomment">   * @return bytes written</em>
-<a class="jxr_linenumber" name="2477" href="#2477">2477</a> <em class="jxr_javadoccomment">   * @throws java.io.IOException e</em>
-<a class="jxr_linenumber" name="2478" href="#2478">2478</a> <em class="jxr_javadoccomment">   * @see #channelRead(java.nio.channels.ReadableByteChannel, java.nio.ByteBuffer)</em>
-<a class="jxr_linenumber" name="2479" href="#2479">2479</a> <em class="jxr_javadoccomment">   * @see #channelWrite(GatheringByteChannel, BufferChain)</em>
-<a class="jxr_linenumber" name="2480" href="#2480">2480</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2481" href="#2481">2481</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> channelIO(ReadableByteChannel readCh,
-<a class="jxr_linenumber" name="2482" href="#2482">2482</a>                                WritableByteChannel writeCh,
-<a class="jxr_linenumber" name="2483" href="#2483">2483</a>                                ByteBuffer buf) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="2484" href="#2484">2484</a> 
-<a class="jxr_linenumber" name="2485" href="#2485">2485</a>     <strong class="jxr_keyword">int</strong> originalLimit = buf.limit();
-<a class="jxr_linenumber" name="2486" href="#2486">2486</a>     <strong class="jxr_keyword">int</strong> initialRemaining = buf.remaining();
-<a class="jxr_linenumber" name="2487" href="#2487">2487</a>     <strong class="jxr_keyword">int</strong> ret = 0;
-<a class="jxr_linenumber" name="2488" href="#2488">2488</a> 
-<a class="jxr_linenumber" name="2489" href="#2489">2489</a>     <strong class="jxr_keyword">while</strong> (buf.remaining() &gt; 0) {
-<a class="jxr_linenumber" name="2490" href="#2490">2490</a>       <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="2491" href="#2491">2491</a>         <strong class="jxr_keyword">int</strong> ioSize = Math.min(buf.remaining(), NIO_BUFFER_LIMIT);
-<a class="jxr_linenumber" name="2492" href="#2492">2492</a>         buf.limit(buf.position() + ioSize);
-<a class="jxr_linenumber" name="2493" href="#2493">2493</a> 
-<a class="jxr_linenumber" name="2494" href="#2494">2494</a>         ret = (readCh == <strong class="jxr_keyword">null</strong>) ? writeCh.write(buf) : readCh.read(buf);
-<a class="jxr_linenumber" name="2495" href="#2495">2495</a> 
-<a class="jxr_linenumber" name="2496" href="#2496">2496</a>         <strong class="jxr_keyword">if</strong> (ret &lt; ioSize) {
-<a class="jxr_linenumber" name="2497" href="#2497">2497</a>           <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="2498" href="#2498">2498</a>         }
-<a class="jxr_linenumber" name="2499" href="#2499">2499</a> 
-<a class="jxr_linenumber" name="2500" href="#2500">2500</a>       } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="2501" href="#2501">2501</a>         buf.limit(originalLimit);
-<a class="jxr_linenumber" name="2502" href="#2502">2502</a>       }
-<a class="jxr_linenumber" name="2503" href="#2503">2503</a>     }
-<a class="jxr_linenumber" name="2504" href="#2504">2504</a> 
-<a class="jxr_linenumber" name="2505" href="#2505">2505</a>     <strong class="jxr_keyword">int</strong> nBytes = initialRemaining - buf.remaining();
-<a class="jxr_linenumber" name="2506" href="#2506">2506</a>     <strong class="jxr_keyword">return</strong> (nBytes &gt; 0) ? nBytes : ret;
-<a class="jxr_linenumber" name="2507" href="#2507">2507</a>   }
-<a class="jxr_linenumber" name="2508" href="#2508">2508</a> 
-<a class="jxr_linenumber" name="2509" href="#2509">2509</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2510" href="#2510">2510</a> <em class="jxr_javadoccomment">   * Needed for features such as delayed calls.  We need to be able to store the current call</em>
-<a class="jxr_linenumber" name="2511" href="#2511">2511</a> <em class="jxr_javadoccomment">   * so that we can complete it later or ask questions of what is supported by the current ongoing</em>
-<a class="jxr_linenumber" name="2512" href="#2512">2512</a> <em class="jxr_javadoccomment">   * call.</em>
-<a class="jxr_linenumber" name="2513" href="#2513">2513</a> <em class="jxr_javadoccomment">   * @return An RpcCallContext backed by the currently ongoing call (gotten from a thread local)</em>
-<a class="jxr_linenumber" name="2514" href="#2514">2514</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2515" href="#2515">2515</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcCallContext.html">RpcCallContext</a> getCurrentCall() {
-<a class="jxr_linenumber" name="2516" href="#2516">2516</a>     <strong class="jxr_keyword">return</strong> CurCall.get();
-<a class="jxr_linenumber" name="2517" href="#2517">2517</a>   }
-<a class="jxr_linenumber" name="2518" href="#2518">2518</a> 
-<a class="jxr_linenumber" name="2519" href="#2519">2519</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isInRpcCallContext() {
-<a class="jxr_linenumber" name="2520" href="#2520">2520</a>     <strong class="jxr_keyword">return</strong> CurCall.get() != <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="2521" href="#2521">2521</a>   }
-<a class="jxr_linenumber" name="2522" href="#2522">2522</a> 
-<a class="jxr_linenumber" name="2523" href="#2523">2523</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2524" href="#2524">2524</a> <em class="jxr_javadoccomment">   * Returns the user credentials associated with the current RPC request or</em>
-<a class="jxr_linenumber" name="2525" href="#2525">2525</a> <em class="jxr_javadoccomment">   * &lt;code&gt;null&lt;/code&gt; if no credentials were provided.</em>
-<a class="jxr_linenumber" name="2526" href="#2526">2526</a> <em class="jxr_javadoccomment">   * @return A User</em>
-<a class="jxr_linenumber" name="2527" href="#2527">2527</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2528" href="#2528">2528</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../../org/apache/hadoop/hbase/security/User.html">User</a> getRequestUser() {
-<a class="jxr_linenumber" name="2529" href="#2529">2529</a>     <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcCallContext.html">RpcCallContext</a> ctx = getCurrentCall();
-<a class="jxr_linenumber" name="2530" href="#2530">2530</a>     <strong class="jxr_keyword">return</strong> ctx == <strong class="jxr_keyword">null</strong>? <strong class="jxr_keyword">null</strong>: ctx.getRequestUser();
-<a class="jxr_linenumber" name="2531" href="#2531">2531</a>   }
-<a class="jxr_linenumber" name="2532" href="#2532">2532</a> 
-<a class="jxr_linenumber" name="2533" href="#2533">2533</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2534" href="#2534">2534</a> <em class="jxr_javadoccomment">   * Returns the username for any user associated with the current RPC</em>
-<a class="jxr_linenumber" name="2535" href="#2535">2535</a> <em class="jxr_javadoccomment">   * request or &lt;code&gt;null&lt;/code&gt; if no user is set.</em>
-<a class="jxr_linenumber" name="2536" href="#2536">2536</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2537" href="#2537">2537</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String getRequestUserName() {
-<a class="jxr_linenumber" name="2538" href="#2538">2538</a>     <a href="../../../../../org/apache/hadoop/hbase/security/User.html">User</a> user = getRequestUser();
-<a class="jxr_linenumber" name="2539" href="#2539">2539</a>     <strong class="jxr_keyword">return</strong> user == <strong class="jxr_keyword">null</strong>? <strong class="jxr_keyword">null</strong>: user.getShortName();
-<a class="jxr_linenumber" name="2540" href="#2540">2540</a>   }
-<a class="jxr_linenumber" name="2541" href="#2541">2541</a> 
-<a class="jxr_linenumber" name="2542" href="#2542">2542</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2543" href="#2543">2543</a> <em class="jxr_javadoccomment">   * @return Address of remote client if a request is ongoing, else null</em>
-<a class="jxr_linenumber" name="2544" href="#2544">2544</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2545" href="#2545">2545</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> InetAddress getRemoteAddress() {
-<a class="jxr_linenumber" name="2546" href="#2546">2546</a>     <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcCallContext.html">RpcCallContext</a> ctx = getCurrentCall();
-<a class="jxr_linenumber" name="2547" href="#2547">2547</a>     <strong class="jxr_keyword">return</strong> ctx == <strong class="jxr_keyword">null</strong>? <strong class="jxr_keyword">null</strong>: ctx.getRemoteAddress();
-<a class="jxr_linenumber" name="2548" href="#2548">2548</a>   }
-<a class="jxr_linenumber" name="2549" href="#2549">2549</a> 
-<a class="jxr_linenumber" name="2550" href="#2550">2550</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2551" href="#2551">2551</a> <em class="jxr_javadoccomment">   * @param serviceName Some arbitrary string that represents a 'service'.</em>
-<a class="jxr_linenumber" name="2552" href="#2552">2552</a> <em class="jxr_javadoccomment">   * @param services Available service instances</em>
-<a class="jxr_linenumber" name="2553" href="#2553">2553</a> <em class="jxr_javadoccomment">   * @return Matching BlockingServiceAndInterface pair</em>
-<a class="jxr_linenumber" name="2554" href="#2554">2554</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2555" href="#2555">2555</a>   <strong class="jxr_keyword">static</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.html">BlockingServiceAndInterface</a> getServiceAndInterface(
-<a class="jxr_linenumber" name="2556" href="#2556">2556</a>       <strong class="jxr_keyword">final</strong> List&lt;BlockingServiceAndInterface&gt; services, <strong class="jxr_keyword">final</strong> String serviceName) {
-<a class="jxr_linenumber" name="2557" href="#2557">2557</a>     <strong class="jxr_keyword">for</strong> (BlockingServiceAndInterface bs : services) {
-<a class="jxr_linenumber" name="2558" href="#2558">2558</a>       <strong class="jxr_keyword">if</strong> (bs.getBlockingService().getDescriptorForType().getName().equals(serviceName)) {
-<a class="jxr_linenumber" name="2559" href="#2559">2559</a>         <strong class="jxr_keyword">return</strong> bs;
-<a class="jxr_linenumber" name="2560" href="#2560">2560</a>       }
-<a class="jxr_linenumber" name="2561" href="#2561">2561</a>     }
-<a class="jxr_linenumber" name="2562" href="#2562">2562</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="2563" href="#2563">2563</a>   }
-<a class="jxr_linenumber" name="2564" href="#2564">2564</a> 
-<a class="jxr_linenumber" name="2565" href="#2565">2565</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2566" href="#2566">2566</a> <em class="jxr_javadoccomment">   * @param serviceName Some arbitrary string that represents a 'service'.</em>
-<a class="jxr_linenumber" name="2567" href="#2567">2567</a> <em class="jxr_javadoccomment">   * @param services Available services and their service interfaces.</em>
-<a class="jxr_linenumber" name="2568" href="#2568">2568</a> <em class="jxr_javadoccomment">   * @return Service interface class for &lt;code&gt;serviceName&lt;/code&gt;</em>
-<a class="jxr_linenumber" name="2569" href="#2569">2569</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2570" href="#2570">2570</a>   <strong class="jxr_keyword">static</strong> Class&lt;?&gt; getServiceInterface(
-<a class="jxr_linenumber" name="2571" href="#2571">2571</a>       <strong class="jxr_keyword">final</strong> List&lt;BlockingServiceAndInterface&gt; services,
-<a class="jxr_linenumber" name="2572" href="#2572">2572</a>       <strong class="jxr_keyword">final</strong> String serviceName) {
-<a class="jxr_linenumber" name="2573" href="#2573">2573</a>     <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.html">BlockingServiceAndInterface</a> bsasi =
-<a class="jxr_linenumber" name="2574" href="#2574">2574</a>         getServiceAndInterface(services, serviceName);
-<a class="jxr_linenumber" name="2575" href="#2575">2575</a>     <strong class="jxr_keyword">return</strong> bsasi == <strong class="jxr_keyword">null</strong>? <strong class="jxr_keyword">null</strong>: bsasi.getServiceInterface();
-<a class="jxr_linenumber" name="2576" href="#2576">2576</a>   }
-<a class="jxr_linenumber" name="2577" href="#2577">2577</a> 
-<a class="jxr_linenumber" name="2578" href="#2578">2578</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="2579" href="#2579">2579</a> <em class="jxr_javadoccomment">   * @param serviceName Some arbitrary string that represents a 'service'.</em>
-<a class="jxr_linenumber" name="2580" href="#2580">2580</a> <em class="jxr_javadoccomment">   * @param services Available services and their service interfaces.</em>
-<a class="jxr_linenumber" name="2581" href="#2581">2581</a> <em class="jxr_javadoccomment">   * @return BlockingService that goes with the passed &lt;code&gt;serviceName&lt;/code&gt;</em>
-<a class="jxr_linenumber" name="2582" href="#2582">2582</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="2583" href="#2583">2583</a>   <strong class="jxr_keyword">static</strong> BlockingService getService(
-<a class="jxr_linenumber" name="2584" href="#2584">2584</a>       <strong class="jxr_keyword">final</strong> List&lt;BlockingServiceAndInterface&gt; services,
-<a class="jxr_linenumber" name="2585" href="#2585">2585</a>       <strong class="jxr_keyword">final</strong> String serviceName) {
-<a class="jxr_linenumber" name="2586" href="#2586">2586</a>     <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.html">BlockingServiceAndInterface</a> bsasi =
-<a class="jxr_linenumber" name="2587" href="#2587">2587</a>         getServiceAndInterface(services, serviceName);
-<a class="jxr_linenumber" name="2588" href="#2588">2588</a>     <strong class="jxr_keyword">return</strong> bsasi == <strong class="jxr_keyword">null</strong>? <strong class="jxr_keyword">null</strong>: bsasi.getBlockingService();
-<a class="jxr_linenumber" name="258

<TRUNCATED>

[17/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html
index 856be7b..6beef12 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.CallPriorityComparator.html
@@ -36,203 +36,219 @@
 <span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HConstants;<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.util.BoundedPriorityBlockingQueue;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>/**<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * A scheduler that maintains isolated handler pools for general,<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * high-priority, and replication requests.<a name="line.35"></a>
-<span class="sourceLineNo">036</span> */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>@InterfaceAudience.LimitedPrivate({HBaseInterfaceAudience.COPROC, HBaseInterfaceAudience.PHOENIX})<a name="line.37"></a>
-<span class="sourceLineNo">038</span>@InterfaceStability.Evolving<a name="line.38"></a>
-<span class="sourceLineNo">039</span>public class SimpleRpcScheduler extends RpcScheduler {<a name="line.39"></a>
-<span class="sourceLineNo">040</span>  private static final Log LOG = LogFactory.getLog(SimpleRpcScheduler.class);<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>  public static final String CALL_QUEUE_READ_SHARE_CONF_KEY =<a name="line.42"></a>
-<span class="sourceLineNo">043</span>      "hbase.ipc.server.callqueue.read.ratio";<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  public static final String CALL_QUEUE_SCAN_SHARE_CONF_KEY =<a name="line.44"></a>
-<span class="sourceLineNo">045</span>      "hbase.ipc.server.callqueue.scan.ratio";<a name="line.45"></a>
-<span class="sourceLineNo">046</span>  public static final String CALL_QUEUE_HANDLER_FACTOR_CONF_KEY =<a name="line.46"></a>
-<span class="sourceLineNo">047</span>      "hbase.ipc.server.callqueue.handler.factor";<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>  /** If set to 'deadline', uses a priority queue and deprioritize long-running scans */<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  public static final String CALL_QUEUE_TYPE_CONF_KEY = "hbase.ipc.server.callqueue.type";<a name="line.50"></a>
-<span class="sourceLineNo">051</span>  public static final String CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE = "deadline";<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  public static final String CALL_QUEUE_TYPE_FIFO_CONF_VALUE = "fifo";<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>  /** max delay in msec used to bound the deprioritized requests */<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  public static final String QUEUE_MAX_CALL_DELAY_CONF_KEY<a name="line.55"></a>
-<span class="sourceLineNo">056</span>      = "hbase.ipc.server.queue.max.call.delay";<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>   * Comparator used by the "normal callQueue" if DEADLINE_CALL_QUEUE_CONF_KEY is set to true.<a name="line.59"></a>
-<span class="sourceLineNo">060</span>   * It uses the calculated "deadline" e.g. to deprioritize long-running job<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   *<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   * If multiple requests have the same deadline BoundedPriorityBlockingQueue will order them in<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   * FIFO (first-in-first-out) manner.<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   */<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static class CallPriorityComparator implements Comparator&lt;CallRunner&gt; {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    private final static int DEFAULT_MAX_CALL_DELAY = 5000;<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>    private final PriorityFunction priority;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    private final int maxDelay;<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>    public CallPriorityComparator(final Configuration conf, final PriorityFunction priority) {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      this.priority = priority;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      this.maxDelay = conf.getInt(QUEUE_MAX_CALL_DELAY_CONF_KEY, DEFAULT_MAX_CALL_DELAY);<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>    @Override<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    public int compare(CallRunner a, CallRunner b) {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      RpcServer.Call callA = a.getCall();<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      RpcServer.Call callB = b.getCall();<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      long deadlineA = priority.getDeadline(callA.getHeader(), callA.param);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      long deadlineB = priority.getDeadline(callB.getHeader(), callB.param);<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      deadlineA = callA.timestamp + Math.min(deadlineA, maxDelay);<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      deadlineB = callB.timestamp + Math.min(deadlineB, maxDelay);<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      return (int)(deadlineA - deadlineB);<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    }<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  private int port;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  private final PriorityFunction priority;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private final RpcExecutor callExecutor;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private final RpcExecutor priorityExecutor;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  private final RpcExecutor replicationExecutor;<a name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>  /** What level a high priority call is at. */<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private final int highPriorityLevel;<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private Abortable abortable = null;<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>  /**<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * @param conf<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * @param handlerCount the number of handler threads that will be used to process calls<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * @param priorityHandlerCount How many threads for priority handling.<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @param replicationHandlerCount How many threads for replication handling.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @param highPriorityLevel<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * @param priority Function to extract request priority.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   */<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  public SimpleRpcScheduler(<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      Configuration conf,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      int handlerCount,<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      int priorityHandlerCount,<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      int replicationHandlerCount,<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      PriorityFunction priority,<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      Abortable server,<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      int highPriorityLevel) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    int maxQueueLength = conf.getInt("hbase.ipc.server.max.callqueue.length",<a name="line.115"></a>
-<span class="sourceLineNo">116</span>        handlerCount * RpcServer.DEFAULT_MAX_CALLQUEUE_LENGTH_PER_HANDLER);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    this.priority = priority;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    this.highPriorityLevel = highPriorityLevel;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    this.abortable = server;<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>    String callQueueType = conf.get(CALL_QUEUE_TYPE_CONF_KEY, CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    float callqReadShare = conf.getFloat(CALL_QUEUE_READ_SHARE_CONF_KEY, 0);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    float callqScanShare = conf.getFloat(CALL_QUEUE_SCAN_SHARE_CONF_KEY, 0);<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>    float callQueuesHandlersFactor = conf.getFloat(CALL_QUEUE_HANDLER_FACTOR_CONF_KEY, 0);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    int numCallQueues = Math.max(1, (int)Math.round(handlerCount * callQueuesHandlersFactor));<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>    LOG.info("Using " + callQueueType + " as user call queue, count=" + numCallQueues);<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>    if (numCallQueues &gt; 1 &amp;&amp; callqReadShare &gt; 0) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      // multiple read/write queues<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      if (callQueueType.equals(CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE)) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>        CallPriorityComparator callPriority = new CallPriorityComparator(conf, this.priority);<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        callExecutor = new RWQueueRpcExecutor("RW.default", handlerCount, numCallQueues,<a name="line.134"></a>
-<span class="sourceLineNo">135</span>            callqReadShare, callqScanShare, maxQueueLength, conf, abortable,<a name="line.135"></a>
-<span class="sourceLineNo">136</span>            BoundedPriorityBlockingQueue.class, callPriority);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      } else {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>        callExecutor = new RWQueueRpcExecutor("RW.default", handlerCount, numCallQueues,<a name="line.138"></a>
-<span class="sourceLineNo">139</span>          callqReadShare, callqScanShare, maxQueueLength, conf, abortable);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      }<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    } else {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      // multiple queues<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      if (callQueueType.equals(CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE)) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        CallPriorityComparator callPriority = new CallPriorityComparator(conf, this.priority);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>        callExecutor = new BalancedQueueRpcExecutor("B.default", handlerCount, numCallQueues,<a name="line.145"></a>
-<span class="sourceLineNo">146</span>          conf, abortable, BoundedPriorityBlockingQueue.class, maxQueueLength, callPriority);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      } else {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        callExecutor = new BalancedQueueRpcExecutor("B.default", handlerCount,<a name="line.148"></a>
-<span class="sourceLineNo">149</span>            numCallQueues, maxQueueLength, conf, abortable);<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>    // Create 2 queues to help priorityExecutor be more scalable.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    this.priorityExecutor = priorityHandlerCount &gt; 0 ?<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        new BalancedQueueRpcExecutor("Priority", priorityHandlerCount, 2, maxQueueLength) : null;<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>   this.replicationExecutor =<a name="line.157"></a>
-<span class="sourceLineNo">158</span>     replicationHandlerCount &gt; 0 ? new BalancedQueueRpcExecutor("Replication",<a name="line.158"></a>
-<span class="sourceLineNo">159</span>       replicationHandlerCount, 1, maxQueueLength, conf, abortable) : null;<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 SimpleRpcScheduler(<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        Configuration conf,<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        int handlerCount,<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        int priorityHandlerCount,<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        int replicationHandlerCount,<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        PriorityFunction priority,<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        int highPriorityLevel) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this(conf, handlerCount, priorityHandlerCount, replicationHandlerCount, priority,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      null, highPriorityLevel);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.conf.ConfigurationObserver;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.util.BoundedPriorityBlockingQueue;<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>/**<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * A scheduler that maintains isolated handler pools for general,<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * high-priority, and replication requests.<a name="line.36"></a>
+<span class="sourceLineNo">037</span> */<a name="line.37"></a>
+<span class="sourceLineNo">038</span>@InterfaceAudience.LimitedPrivate({HBaseInterfaceAudience.COPROC, HBaseInterfaceAudience.PHOENIX})<a name="line.38"></a>
+<span class="sourceLineNo">039</span>@InterfaceStability.Evolving<a name="line.39"></a>
+<span class="sourceLineNo">040</span>public class SimpleRpcScheduler extends RpcScheduler implements ConfigurationObserver {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  private static final Log LOG = LogFactory.getLog(SimpleRpcScheduler.class);<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>  public static final String CALL_QUEUE_READ_SHARE_CONF_KEY =<a name="line.43"></a>
+<span class="sourceLineNo">044</span>      "hbase.ipc.server.callqueue.read.ratio";<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  public static final String CALL_QUEUE_SCAN_SHARE_CONF_KEY =<a name="line.45"></a>
+<span class="sourceLineNo">046</span>      "hbase.ipc.server.callqueue.scan.ratio";<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  public static final String CALL_QUEUE_HANDLER_FACTOR_CONF_KEY =<a name="line.47"></a>
+<span class="sourceLineNo">048</span>      "hbase.ipc.server.callqueue.handler.factor";<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>  /** If set to 'deadline', uses a priority queue and deprioritize long-running scans */<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  public static final String CALL_QUEUE_TYPE_CONF_KEY = "hbase.ipc.server.callqueue.type";<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public static final String CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE = "deadline";<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  public static final String CALL_QUEUE_TYPE_FIFO_CONF_VALUE = "fifo";<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  /** max delay in msec used to bound the deprioritized requests */<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  public static final String QUEUE_MAX_CALL_DELAY_CONF_KEY<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      = "hbase.ipc.server.queue.max.call.delay";<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  /**<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   * Resize call queues;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   * @param conf new configuration<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   */<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  @Override<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  public void onConfigurationChange(Configuration conf) {<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    callExecutor.resizeQueues(conf);<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    if (priorityExecutor != null) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      priorityExecutor.resizeQueues(conf);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    }<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    if (replicationExecutor != null) {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      replicationExecutor.resizeQueues(conf);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    }<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  /**<a name="line.74"></a>
+<span class="sourceLineNo">075</span>   * Comparator used by the "normal callQueue" if DEADLINE_CALL_QUEUE_CONF_KEY is set to true.<a name="line.75"></a>
+<span class="sourceLineNo">076</span>   * It uses the calculated "deadline" e.g. to deprioritize long-running job<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   *<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   * If multiple requests have the same deadline BoundedPriorityBlockingQueue will order them in<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   * FIFO (first-in-first-out) manner.<a name="line.79"></a>
+<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private static class CallPriorityComparator implements Comparator&lt;CallRunner&gt; {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    private final static int DEFAULT_MAX_CALL_DELAY = 5000;<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>    private final PriorityFunction priority;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    private final int maxDelay;<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>    public CallPriorityComparator(final Configuration conf, final PriorityFunction priority) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      this.priority = priority;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      this.maxDelay = conf.getInt(QUEUE_MAX_CALL_DELAY_CONF_KEY, DEFAULT_MAX_CALL_DELAY);<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>    @Override<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    public int compare(CallRunner a, CallRunner b) {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      RpcServer.Call callA = a.getCall();<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      RpcServer.Call callB = b.getCall();<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      long deadlineA = priority.getDeadline(callA.getHeader(), callA.param);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      long deadlineB = priority.getDeadline(callB.getHeader(), callB.param);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      deadlineA = callA.timestamp + Math.min(deadlineA, maxDelay);<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      deadlineB = callB.timestamp + Math.min(deadlineB, maxDelay);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      return (int)(deadlineA - deadlineB);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    }<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  }<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private int port;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  private final PriorityFunction priority;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  private final RpcExecutor callExecutor;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  private final RpcExecutor priorityExecutor;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private final RpcExecutor replicationExecutor;<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  /** What level a high priority call is at. */<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private final int highPriorityLevel;<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private Abortable abortable = null;<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>   * @param conf<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * @param handlerCount the number of handler threads that will be used to process calls<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   * @param priorityHandlerCount How many threads for priority handling.<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   * @param replicationHandlerCount How many threads for replication handling.<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * @param highPriorityLevel<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * @param priority Function to extract request priority.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  public SimpleRpcScheduler(<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      Configuration conf,<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      int handlerCount,<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      int priorityHandlerCount,<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      int replicationHandlerCount,<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      PriorityFunction priority,<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      Abortable server,<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      int highPriorityLevel) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    int maxQueueLength = conf.getInt("hbase.ipc.server.max.callqueue.length",<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        handlerCount * RpcServer.DEFAULT_MAX_CALLQUEUE_LENGTH_PER_HANDLER);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    this.priority = priority;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    this.highPriorityLevel = highPriorityLevel;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    this.abortable = server;<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>    String callQueueType = conf.get(CALL_QUEUE_TYPE_CONF_KEY, CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    float callqReadShare = conf.getFloat(CALL_QUEUE_READ_SHARE_CONF_KEY, 0);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    float callqScanShare = conf.getFloat(CALL_QUEUE_SCAN_SHARE_CONF_KEY, 0);<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    float callQueuesHandlersFactor = conf.getFloat(CALL_QUEUE_HANDLER_FACTOR_CONF_KEY, 0);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    int numCallQueues = Math.max(1, (int)Math.round(handlerCount * callQueuesHandlersFactor));<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    LOG.info("Using " + callQueueType + " as user call queue, count=" + numCallQueues);<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    if (numCallQueues &gt; 1 &amp;&amp; callqReadShare &gt; 0) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      // multiple read/write queues<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      if (callQueueType.equals(CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE)) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        CallPriorityComparator callPriority = new CallPriorityComparator(conf, this.priority);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        callExecutor = new RWQueueRpcExecutor("RW.default", handlerCount, numCallQueues,<a name="line.150"></a>
+<span class="sourceLineNo">151</span>            callqReadShare, callqScanShare, maxQueueLength, conf, abortable,<a name="line.151"></a>
+<span class="sourceLineNo">152</span>            BoundedPriorityBlockingQueue.class, callPriority);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      } else {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>        callExecutor = new RWQueueRpcExecutor("RW.default", handlerCount, numCallQueues,<a name="line.154"></a>
+<span class="sourceLineNo">155</span>          callqReadShare, callqScanShare, maxQueueLength, conf, abortable);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      }<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    } else {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      // multiple queues<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      if (callQueueType.equals(CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE)) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        CallPriorityComparator callPriority = new CallPriorityComparator(conf, this.priority);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        callExecutor = new BalancedQueueRpcExecutor("B.default", handlerCount, numCallQueues,<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          conf, abortable, BoundedPriorityBlockingQueue.class, maxQueueLength, callPriority);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      } else {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        callExecutor = new BalancedQueueRpcExecutor("B.default", handlerCount,<a name="line.164"></a>
+<span class="sourceLineNo">165</span>            numCallQueues, maxQueueLength, conf, abortable);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // Create 2 queues to help priorityExecutor be more scalable.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    this.priorityExecutor = priorityHandlerCount &gt; 0 ?<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        new BalancedQueueRpcExecutor("Priority", priorityHandlerCount, 2, maxQueueLength) : null;<a name="line.171"></a>
 <span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  @Override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public void init(Context context) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    this.port = context.getListenerAddress().getPort();<a name="line.175"></a>
+<span class="sourceLineNo">173</span>   this.replicationExecutor =<a name="line.173"></a>
+<span class="sourceLineNo">174</span>     replicationHandlerCount &gt; 0 ? new BalancedQueueRpcExecutor("Replication",<a name="line.174"></a>
+<span class="sourceLineNo">175</span>       replicationHandlerCount, 1, maxQueueLength, conf, abortable) : null;<a name="line.175"></a>
 <span class="sourceLineNo">176</span>  }<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  @Override<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  public void start() {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    callExecutor.start(port);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    if (priorityExecutor != null) priorityExecutor.start(port);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    if (replicationExecutor != null) replicationExecutor.start(port);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  public void stop() {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    callExecutor.stop();<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    if (priorityExecutor != null) priorityExecutor.stop();<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    if (replicationExecutor != null) replicationExecutor.stop();<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 boolean dispatch(CallRunner callTask) throws InterruptedException {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    RpcServer.Call call = callTask.getCall();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    int level = priority.getPriority(call.getHeader(), call.param, call.getRequestUser());<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    if (priorityExecutor != null &amp;&amp; level &gt; highPriorityLevel) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      return priorityExecutor.dispatch(callTask);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } else if (replicationExecutor != null &amp;&amp; level == HConstants.REPLICATION_QOS) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      return replicationExecutor.dispatch(callTask);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    } else {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      return callExecutor.dispatch(callTask);<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><a name="line.204"></a>
-<span class="sourceLineNo">205</span>  @Override<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  public int getGeneralQueueLength() {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    return callExecutor.getQueueLength();<a name="line.207"></a>
-<span class="sourceLineNo">208</span>  }<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span>  @Override<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  public int getPriorityQueueLength() {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    return priorityExecutor == null ? 0 : priorityExecutor.getQueueLength();<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>  @Override<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  public int getReplicationQueueLength() {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    return replicationExecutor == null ? 0 : replicationExecutor.getQueueLength();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  @Override<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  public int getActiveRpcHandlerCount() {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    return callExecutor.getActiveHandlerCount() +<a name="line.222"></a>
-<span class="sourceLineNo">223</span>           (priorityExecutor == null ? 0 : priorityExecutor.getActiveHandlerCount()) +<a name="line.223"></a>
-<span class="sourceLineNo">224</span>           (replicationExecutor == null ? 0 : replicationExecutor.getActiveHandlerCount());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>}<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
+<span class="sourceLineNo">178</span>  public SimpleRpcScheduler(<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        Configuration conf,<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        int handlerCount,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>        int priorityHandlerCount,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        int replicationHandlerCount,<a name="line.182"></a>
+<span class="sourceLineNo">183</span>        PriorityFunction priority,<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        int highPriorityLevel) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    this(conf, handlerCount, priorityHandlerCount, replicationHandlerCount, priority,<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      null, highPriorityLevel);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  }<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>  @Override<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  public void init(Context context) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    this.port = context.getListenerAddress().getPort();<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>  @Override<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  public void start() {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    callExecutor.start(port);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    if (priorityExecutor != null) priorityExecutor.start(port);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    if (replicationExecutor != null) replicationExecutor.start(port);<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>  @Override<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  public void stop() {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    callExecutor.stop();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    if (priorityExecutor != null) priorityExecutor.stop();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    if (replicationExecutor != null) replicationExecutor.stop();<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 boolean dispatch(CallRunner callTask) throws InterruptedException {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    RpcServer.Call call = callTask.getCall();<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    int level = priority.getPriority(call.getHeader(), call.param, call.getRequestUser());<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    if (priorityExecutor != null &amp;&amp; level &gt; highPriorityLevel) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      return priorityExecutor.dispatch(callTask);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    } else if (replicationExecutor != null &amp;&amp; level == HConstants.REPLICATION_QOS) {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      return replicationExecutor.dispatch(callTask);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    } else {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      return callExecutor.dispatch(callTask);<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>  @Override<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  public int getGeneralQueueLength() {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    return callExecutor.getQueueLength();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  @Override<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public int getPriorityQueueLength() {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    return priorityExecutor == null ? 0 : priorityExecutor.getQueueLength();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>  @Override<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  public int getReplicationQueueLength() {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    return replicationExecutor == null ? 0 : replicationExecutor.getQueueLength();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  @Override<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  public int getActiveRpcHandlerCount() {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    return callExecutor.getActiveHandlerCount() +<a name="line.238"></a>
+<span class="sourceLineNo">239</span>           (priorityExecutor == null ? 0 : priorityExecutor.getActiveHandlerCount()) +<a name="line.239"></a>
+<span class="sourceLineNo">240</span>           (replicationExecutor == null ? 0 : replicationExecutor.getActiveHandlerCount());<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/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 856be7b..6beef12 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html
@@ -36,203 +36,219 @@
 <span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HConstants;<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.util.BoundedPriorityBlockingQueue;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>/**<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * A scheduler that maintains isolated handler pools for general,<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * high-priority, and replication requests.<a name="line.35"></a>
-<span class="sourceLineNo">036</span> */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>@InterfaceAudience.LimitedPrivate({HBaseInterfaceAudience.COPROC, HBaseInterfaceAudience.PHOENIX})<a name="line.37"></a>
-<span class="sourceLineNo">038</span>@InterfaceStability.Evolving<a name="line.38"></a>
-<span class="sourceLineNo">039</span>public class SimpleRpcScheduler extends RpcScheduler {<a name="line.39"></a>
-<span class="sourceLineNo">040</span>  private static final Log LOG = LogFactory.getLog(SimpleRpcScheduler.class);<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>  public static final String CALL_QUEUE_READ_SHARE_CONF_KEY =<a name="line.42"></a>
-<span class="sourceLineNo">043</span>      "hbase.ipc.server.callqueue.read.ratio";<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  public static final String CALL_QUEUE_SCAN_SHARE_CONF_KEY =<a name="line.44"></a>
-<span class="sourceLineNo">045</span>      "hbase.ipc.server.callqueue.scan.ratio";<a name="line.45"></a>
-<span class="sourceLineNo">046</span>  public static final String CALL_QUEUE_HANDLER_FACTOR_CONF_KEY =<a name="line.46"></a>
-<span class="sourceLineNo">047</span>      "hbase.ipc.server.callqueue.handler.factor";<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>  /** If set to 'deadline', uses a priority queue and deprioritize long-running scans */<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  public static final String CALL_QUEUE_TYPE_CONF_KEY = "hbase.ipc.server.callqueue.type";<a name="line.50"></a>
-<span class="sourceLineNo">051</span>  public static final String CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE = "deadline";<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  public static final String CALL_QUEUE_TYPE_FIFO_CONF_VALUE = "fifo";<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>  /** max delay in msec used to bound the deprioritized requests */<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  public static final String QUEUE_MAX_CALL_DELAY_CONF_KEY<a name="line.55"></a>
-<span class="sourceLineNo">056</span>      = "hbase.ipc.server.queue.max.call.delay";<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>   * Comparator used by the "normal callQueue" if DEADLINE_CALL_QUEUE_CONF_KEY is set to true.<a name="line.59"></a>
-<span class="sourceLineNo">060</span>   * It uses the calculated "deadline" e.g. to deprioritize long-running job<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   *<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   * If multiple requests have the same deadline BoundedPriorityBlockingQueue will order them in<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   * FIFO (first-in-first-out) manner.<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   */<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static class CallPriorityComparator implements Comparator&lt;CallRunner&gt; {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    private final static int DEFAULT_MAX_CALL_DELAY = 5000;<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>    private final PriorityFunction priority;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    private final int maxDelay;<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>    public CallPriorityComparator(final Configuration conf, final PriorityFunction priority) {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      this.priority = priority;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      this.maxDelay = conf.getInt(QUEUE_MAX_CALL_DELAY_CONF_KEY, DEFAULT_MAX_CALL_DELAY);<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>    @Override<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    public int compare(CallRunner a, CallRunner b) {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      RpcServer.Call callA = a.getCall();<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      RpcServer.Call callB = b.getCall();<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      long deadlineA = priority.getDeadline(callA.getHeader(), callA.param);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      long deadlineB = priority.getDeadline(callB.getHeader(), callB.param);<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      deadlineA = callA.timestamp + Math.min(deadlineA, maxDelay);<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      deadlineB = callB.timestamp + Math.min(deadlineB, maxDelay);<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      return (int)(deadlineA - deadlineB);<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    }<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  private int port;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  private final PriorityFunction priority;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private final RpcExecutor callExecutor;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private final RpcExecutor priorityExecutor;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  private final RpcExecutor replicationExecutor;<a name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>  /** What level a high priority call is at. */<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private final int highPriorityLevel;<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private Abortable abortable = null;<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>  /**<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * @param conf<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * @param handlerCount the number of handler threads that will be used to process calls<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * @param priorityHandlerCount How many threads for priority handling.<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @param replicationHandlerCount How many threads for replication handling.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @param highPriorityLevel<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * @param priority Function to extract request priority.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   */<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  public SimpleRpcScheduler(<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      Configuration conf,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      int handlerCount,<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      int priorityHandlerCount,<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      int replicationHandlerCount,<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      PriorityFunction priority,<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      Abortable server,<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      int highPriorityLevel) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    int maxQueueLength = conf.getInt("hbase.ipc.server.max.callqueue.length",<a name="line.115"></a>
-<span class="sourceLineNo">116</span>        handlerCount * RpcServer.DEFAULT_MAX_CALLQUEUE_LENGTH_PER_HANDLER);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    this.priority = priority;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    this.highPriorityLevel = highPriorityLevel;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    this.abortable = server;<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>    String callQueueType = conf.get(CALL_QUEUE_TYPE_CONF_KEY, CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    float callqReadShare = conf.getFloat(CALL_QUEUE_READ_SHARE_CONF_KEY, 0);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    float callqScanShare = conf.getFloat(CALL_QUEUE_SCAN_SHARE_CONF_KEY, 0);<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>    float callQueuesHandlersFactor = conf.getFloat(CALL_QUEUE_HANDLER_FACTOR_CONF_KEY, 0);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    int numCallQueues = Math.max(1, (int)Math.round(handlerCount * callQueuesHandlersFactor));<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>    LOG.info("Using " + callQueueType + " as user call queue, count=" + numCallQueues);<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>    if (numCallQueues &gt; 1 &amp;&amp; callqReadShare &gt; 0) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      // multiple read/write queues<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      if (callQueueType.equals(CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE)) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>        CallPriorityComparator callPriority = new CallPriorityComparator(conf, this.priority);<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        callExecutor = new RWQueueRpcExecutor("RW.default", handlerCount, numCallQueues,<a name="line.134"></a>
-<span class="sourceLineNo">135</span>            callqReadShare, callqScanShare, maxQueueLength, conf, abortable,<a name="line.135"></a>
-<span class="sourceLineNo">136</span>            BoundedPriorityBlockingQueue.class, callPriority);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      } else {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>        callExecutor = new RWQueueRpcExecutor("RW.default", handlerCount, numCallQueues,<a name="line.138"></a>
-<span class="sourceLineNo">139</span>          callqReadShare, callqScanShare, maxQueueLength, conf, abortable);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      }<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    } else {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      // multiple queues<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      if (callQueueType.equals(CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE)) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        CallPriorityComparator callPriority = new CallPriorityComparator(conf, this.priority);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>        callExecutor = new BalancedQueueRpcExecutor("B.default", handlerCount, numCallQueues,<a name="line.145"></a>
-<span class="sourceLineNo">146</span>          conf, abortable, BoundedPriorityBlockingQueue.class, maxQueueLength, callPriority);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      } else {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        callExecutor = new BalancedQueueRpcExecutor("B.default", handlerCount,<a name="line.148"></a>
-<span class="sourceLineNo">149</span>            numCallQueues, maxQueueLength, conf, abortable);<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>    // Create 2 queues to help priorityExecutor be more scalable.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    this.priorityExecutor = priorityHandlerCount &gt; 0 ?<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        new BalancedQueueRpcExecutor("Priority", priorityHandlerCount, 2, maxQueueLength) : null;<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>   this.replicationExecutor =<a name="line.157"></a>
-<span class="sourceLineNo">158</span>     replicationHandlerCount &gt; 0 ? new BalancedQueueRpcExecutor("Replication",<a name="line.158"></a>
-<span class="sourceLineNo">159</span>       replicationHandlerCount, 1, maxQueueLength, conf, abortable) : null;<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 SimpleRpcScheduler(<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        Configuration conf,<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        int handlerCount,<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        int priorityHandlerCount,<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        int replicationHandlerCount,<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        PriorityFunction priority,<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        int highPriorityLevel) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this(conf, handlerCount, priorityHandlerCount, replicationHandlerCount, priority,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      null, highPriorityLevel);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.conf.ConfigurationObserver;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.util.BoundedPriorityBlockingQueue;<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>/**<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * A scheduler that maintains isolated handler pools for general,<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * high-priority, and replication requests.<a name="line.36"></a>
+<span class="sourceLineNo">037</span> */<a name="line.37"></a>
+<span class="sourceLineNo">038</span>@InterfaceAudience.LimitedPrivate({HBaseInterfaceAudience.COPROC, HBaseInterfaceAudience.PHOENIX})<a name="line.38"></a>
+<span class="sourceLineNo">039</span>@InterfaceStability.Evolving<a name="line.39"></a>
+<span class="sourceLineNo">040</span>public class SimpleRpcScheduler extends RpcScheduler implements ConfigurationObserver {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  private static final Log LOG = LogFactory.getLog(SimpleRpcScheduler.class);<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>  public static final String CALL_QUEUE_READ_SHARE_CONF_KEY =<a name="line.43"></a>
+<span class="sourceLineNo">044</span>      "hbase.ipc.server.callqueue.read.ratio";<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  public static final String CALL_QUEUE_SCAN_SHARE_CONF_KEY =<a name="line.45"></a>
+<span class="sourceLineNo">046</span>      "hbase.ipc.server.callqueue.scan.ratio";<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  public static final String CALL_QUEUE_HANDLER_FACTOR_CONF_KEY =<a name="line.47"></a>
+<span class="sourceLineNo">048</span>      "hbase.ipc.server.callqueue.handler.factor";<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>  /** If set to 'deadline', uses a priority queue and deprioritize long-running scans */<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  public static final String CALL_QUEUE_TYPE_CONF_KEY = "hbase.ipc.server.callqueue.type";<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public static final String CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE = "deadline";<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  public static final String CALL_QUEUE_TYPE_FIFO_CONF_VALUE = "fifo";<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  /** max delay in msec used to bound the deprioritized requests */<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  public static final String QUEUE_MAX_CALL_DELAY_CONF_KEY<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      = "hbase.ipc.server.queue.max.call.delay";<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  /**<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   * Resize call queues;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   * @param conf new configuration<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   */<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  @Override<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  public void onConfigurationChange(Configuration conf) {<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    callExecutor.resizeQueues(conf);<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    if (priorityExecutor != null) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      priorityExecutor.resizeQueues(conf);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    }<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    if (replicationExecutor != null) {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      replicationExecutor.resizeQueues(conf);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    }<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  /**<a name="line.74"></a>
+<span class="sourceLineNo">075</span>   * Comparator used by the "normal callQueue" if DEADLINE_CALL_QUEUE_CONF_KEY is set to true.<a name="line.75"></a>
+<span class="sourceLineNo">076</span>   * It uses the calculated "deadline" e.g. to deprioritize long-running job<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   *<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   * If multiple requests have the same deadline BoundedPriorityBlockingQueue will order them in<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   * FIFO (first-in-first-out) manner.<a name="line.79"></a>
+<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private static class CallPriorityComparator implements Comparator&lt;CallRunner&gt; {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    private final static int DEFAULT_MAX_CALL_DELAY = 5000;<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>    private final PriorityFunction priority;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    private final int maxDelay;<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>    public CallPriorityComparator(final Configuration conf, final PriorityFunction priority) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      this.priority = priority;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      this.maxDelay = conf.getInt(QUEUE_MAX_CALL_DELAY_CONF_KEY, DEFAULT_MAX_CALL_DELAY);<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>    @Override<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    public int compare(CallRunner a, CallRunner b) {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      RpcServer.Call callA = a.getCall();<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      RpcServer.Call callB = b.getCall();<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      long deadlineA = priority.getDeadline(callA.getHeader(), callA.param);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      long deadlineB = priority.getDeadline(callB.getHeader(), callB.param);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      deadlineA = callA.timestamp + Math.min(deadlineA, maxDelay);<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      deadlineB = callB.timestamp + Math.min(deadlineB, maxDelay);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      return (int)(deadlineA - deadlineB);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    }<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  }<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private int port;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  private final PriorityFunction priority;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  private final RpcExecutor callExecutor;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  private final RpcExecutor priorityExecutor;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private final RpcExecutor replicationExecutor;<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  /** What level a high priority call is at. */<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private final int highPriorityLevel;<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private Abortable abortable = null;<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>   * @param conf<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * @param handlerCount the number of handler threads that will be used to process calls<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   * @param priorityHandlerCount How many threads for priority handling.<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   * @param replicationHandlerCount How many threads for replication handling.<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * @param highPriorityLevel<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * @param priority Function to extract request priority.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  public SimpleRpcScheduler(<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      Configuration conf,<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      int handlerCount,<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      int priorityHandlerCount,<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      int replicationHandlerCount,<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      PriorityFunction priority,<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      Abortable server,<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      int highPriorityLevel) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    int maxQueueLength = conf.getInt("hbase.ipc.server.max.callqueue.length",<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        handlerCount * RpcServer.DEFAULT_MAX_CALLQUEUE_LENGTH_PER_HANDLER);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    this.priority = priority;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    this.highPriorityLevel = highPriorityLevel;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    this.abortable = server;<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>    String callQueueType = conf.get(CALL_QUEUE_TYPE_CONF_KEY, CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    float callqReadShare = conf.getFloat(CALL_QUEUE_READ_SHARE_CONF_KEY, 0);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    float callqScanShare = conf.getFloat(CALL_QUEUE_SCAN_SHARE_CONF_KEY, 0);<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    float callQueuesHandlersFactor = conf.getFloat(CALL_QUEUE_HANDLER_FACTOR_CONF_KEY, 0);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    int numCallQueues = Math.max(1, (int)Math.round(handlerCount * callQueuesHandlersFactor));<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    LOG.info("Using " + callQueueType + " as user call queue, count=" + numCallQueues);<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    if (numCallQueues &gt; 1 &amp;&amp; callqReadShare &gt; 0) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      // multiple read/write queues<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      if (callQueueType.equals(CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE)) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        CallPriorityComparator callPriority = new CallPriorityComparator(conf, this.priority);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        callExecutor = new RWQueueRpcExecutor("RW.default", handlerCount, numCallQueues,<a name="line.150"></a>
+<span class="sourceLineNo">151</span>            callqReadShare, callqScanShare, maxQueueLength, conf, abortable,<a name="line.151"></a>
+<span class="sourceLineNo">152</span>            BoundedPriorityBlockingQueue.class, callPriority);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      } else {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>        callExecutor = new RWQueueRpcExecutor("RW.default", handlerCount, numCallQueues,<a name="line.154"></a>
+<span class="sourceLineNo">155</span>          callqReadShare, callqScanShare, maxQueueLength, conf, abortable);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      }<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    } else {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      // multiple queues<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      if (callQueueType.equals(CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE)) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        CallPriorityComparator callPriority = new CallPriorityComparator(conf, this.priority);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        callExecutor = new BalancedQueueRpcExecutor("B.default", handlerCount, numCallQueues,<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          conf, abortable, BoundedPriorityBlockingQueue.class, maxQueueLength, callPriority);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      } else {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        callExecutor = new BalancedQueueRpcExecutor("B.default", handlerCount,<a name="line.164"></a>
+<span class="sourceLineNo">165</span>            numCallQueues, maxQueueLength, conf, abortable);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // Create 2 queues to help priorityExecutor be more scalable.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    this.priorityExecutor = priorityHandlerCount &gt; 0 ?<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        new BalancedQueueRpcExecutor("Priority", priorityHandlerCount, 2, maxQueueLength) : null;<a name="line.171"></a>
 <span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  @Override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public void init(Context context) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    this.port = context.getListenerAddress().getPort();<a name="line.175"></a>
+<span class="sourceLineNo">173</span>   this.replicationExecutor =<a name="line.173"></a>
+<span class="sourceLineNo">174</span>     replicationHandlerCount &gt; 0 ? new BalancedQueueRpcExecutor("Replication",<a name="line.174"></a>
+<span class="sourceLineNo">175</span>       replicationHandlerCount, 1, maxQueueLength, conf, abortable) : null;<a name="line.175"></a>
 <span class="sourceLineNo">176</span>  }<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  @Override<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  public void start() {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    callExecutor.start(port);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    if (priorityExecutor != null) priorityExecutor.start(port);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    if (replicationExecutor != null) replicationExecutor.start(port);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  public void stop() {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    callExecutor.stop();<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    if (priorityExecutor != null) priorityExecutor.stop();<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    if (replicationExecutor != null) replicationExecutor.stop();<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 boolean dispatch(CallRunner callTask) throws InterruptedException {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    RpcServer.Call call = callTask.getCall();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    int level = priority.getPriority(call.getHeader(), call.param, call.getRequestUser());<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    if (priorityExecutor != null &amp;&amp; level &gt; highPriorityLevel) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      return priorityExecutor.dispatch(callTask);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } else if (replicationExecutor != null &amp;&amp; level == HConstants.REPLICATION_QOS) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      return replicationExecutor.dispatch(callTask);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    } else {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      return callExecutor.dispatch(callTask);<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><a name="line.204"></a>
-<span class="sourceLineNo">205</span>  @Override<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  public int getGeneralQueueLength() {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    return callExecutor.getQueueLength();<a name="line.207"></a>
-<span class="sourceLineNo">208</span>  }<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span>  @Override<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  public int getPriorityQueueLength() {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    return priorityExecutor == null ? 0 : priorityExecutor.getQueueLength();<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>  @Override<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  public int getReplicationQueueLength() {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    return replicationExecutor == null ? 0 : replicationExecutor.getQueueLength();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  @Override<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  public int getActiveRpcHandlerCount() {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    return callExecutor.getActiveHandlerCount() +<a name="line.222"></a>
-<span class="sourceLineNo">223</span>           (priorityExecutor == null ? 0 : priorityExecutor.getActiveHandlerCount()) +<a name="line.223"></a>
-<span class="sourceLineNo">224</span>           (replicationExecutor == null ? 0 : replicationExecutor.getActiveHandlerCount());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>}<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
+<span class="sourceLineNo">178</span>  public SimpleRpcScheduler(<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        Configuration conf,<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        int handlerCount,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>        int priorityHandlerCount,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        int replicationHandlerCount,<a name="line.182"></a>
+<span class="sourceLineNo">183</span>        PriorityFunction priority,<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        int highPriorityLevel) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    this(conf, handlerCount, priorityHandlerCount, replicationHandlerCount, priority,<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      null, highPriorityLevel);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  }<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>  @Override<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  public void init(Context context) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    this.port = context.getListenerAddress().getPort();<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>  @Override<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  public void start() {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    callExecutor.start(port);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    if (priorityExecutor != null) priorityExecutor.start(port);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    if (replicationExecutor != null) replicationExecutor.start(port);<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>  @Override<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  public void stop() {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    callExecutor.stop();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    if (priorityExecutor != null) priorityExecutor.stop();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    if (replicationExecutor != null) replicationExecutor.stop();<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 boolean dispatch(CallRunner callTask) throws InterruptedException {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    RpcServer.Call call = callTask.getCall();<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    int level = priority.getPriority(call.getHeader(), call.param, call.getRequestUser());<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    if (priorityExecutor != null &amp;&amp; level &gt; highPriorityLevel) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      return priorityExecutor.dispatch(callTask);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    } else if (replicationExecutor != null &amp;&amp; level == HConstants.REPLICATION_QOS) {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      return replicationExecutor.dispatch(callTask);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    } else {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      return callExecutor.dispatch(callTask);<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>  @Override<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  public int getGeneralQueueLength() {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    return callExecutor.getQueueLength();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  @Override<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public int getPriorityQueueLength() {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    return priorityExecutor == null ? 0 : priorityExecutor.getQueueLength();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>  @Override<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  public int getReplicationQueueLength() {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    return replicationExecutor == null ? 0 : replicationExecutor.getQueueLength();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  @Override<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  public int getActiveRpcHandlerCount() {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    return callExecutor.getActiveHandlerCount() +<a name="line.238"></a>
+<span class="sourceLineNo">239</span>           (priorityExecutor == null ? 0 : priorityExecutor.getActiveHandlerCount()) +<a name="line.239"></a>
+<span class="sourceLineNo">240</span>           (replicationExecutor == null ? 0 : replicationExecutor.getActiveHandlerCount());<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/master/TableStateManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/TableStateManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/TableStateManager.html
index 13d7619..53306c7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/TableStateManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/TableStateManager.html
@@ -139,7 +139,7 @@
 <span class="sourceLineNo">131</span>      TableState.State tableState = getTableState(tableName);<a name="line.131"></a>
 <span class="sourceLineNo">132</span>      return TableState.isInStates(tableState, states);<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    } catch (IOException e) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      LOG.error("Unable to get table " + tableName + " state, probably table not exists");<a name="line.134"></a>
+<span class="sourceLineNo">134</span>      LOG.error("Unable to get table " + tableName + " state", e);<a name="line.134"></a>
 <span class="sourceLineNo">135</span>      return false;<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>


[05/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/xref/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html b/xref/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html
index 738c35c..af5539b 100644
--- a/xref/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html
+++ b/xref/org/apache/hadoop/hbase/ipc/BalancedQueueRpcExecutor.html
@@ -76,31 +76,40 @@
 <a class="jxr_linenumber" name="66" href="#66">66</a>  
 <a class="jxr_linenumber" name="67" href="#67">67</a>    <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> initializeQueues(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> numQueues,
 <a class="jxr_linenumber" name="68" href="#68">68</a>        <strong class="jxr_keyword">final</strong> Class&lt;? <strong class="jxr_keyword">extends</strong> BlockingQueue&gt; queueClass, Object... initargs) {
-<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; numQueues; ++i) {
-<a class="jxr_linenumber" name="70" href="#70">70</a>        queues.add((BlockingQueue&lt;CallRunner&gt;) ReflectionUtils.newInstance(queueClass, initargs));
-<a class="jxr_linenumber" name="71" href="#71">71</a>      }
-<a class="jxr_linenumber" name="72" href="#72">72</a>    }
-<a class="jxr_linenumber" name="73" href="#73">73</a>  
-<a class="jxr_linenumber" name="74" href="#74">74</a>    @Override
-<a class="jxr_linenumber" name="75" href="#75">75</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> dispatch(<strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html">CallRunner</a> callTask) <strong class="jxr_keyword">throws</strong> InterruptedException {
-<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">int</strong> queueIndex = balancer.getNextQueue();
-<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">return</strong> queues.get(queueIndex).offer(callTask);
-<a class="jxr_linenumber" name="78" href="#78">78</a>    }
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>    @Override
-<a class="jxr_linenumber" name="81" href="#81">81</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getQueueLength() {
-<a class="jxr_linenumber" name="82" href="#82">82</a>      <strong class="jxr_keyword">int</strong> length = 0;
-<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> BlockingQueue&lt;CallRunner&gt; queue : queues) {
-<a class="jxr_linenumber" name="84" href="#84">84</a>        length += queue.size();
+<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">if</strong> (initargs.length &gt; 0) {
+<a class="jxr_linenumber" name="70" href="#70">70</a>        currentQueueLimit = (<strong class="jxr_keyword">int</strong>) initargs[0];
+<a class="jxr_linenumber" name="71" href="#71">71</a>        initargs[0] = Math.max((<strong class="jxr_keyword">int</strong>) initargs[0], DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT);
+<a class="jxr_linenumber" name="72" href="#72">72</a>      }
+<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; numQueues; ++i) {
+<a class="jxr_linenumber" name="74" href="#74">74</a>        queues.add((BlockingQueue&lt;CallRunner&gt;) ReflectionUtils.newInstance(queueClass, initargs));
+<a class="jxr_linenumber" name="75" href="#75">75</a>      }
+<a class="jxr_linenumber" name="76" href="#76">76</a>    }
+<a class="jxr_linenumber" name="77" href="#77">77</a>  
+<a class="jxr_linenumber" name="78" href="#78">78</a>    @Override
+<a class="jxr_linenumber" name="79" href="#79">79</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> dispatch(<strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html">CallRunner</a> callTask) <strong class="jxr_keyword">throws</strong> InterruptedException {
+<a class="jxr_linenumber" name="80" href="#80">80</a>      <strong class="jxr_keyword">int</strong> queueIndex = balancer.getNextQueue();
+<a class="jxr_linenumber" name="81" href="#81">81</a>      BlockingQueue&lt;CallRunner&gt; queue = queues.get(queueIndex);
+<a class="jxr_linenumber" name="82" href="#82">82</a>      <em class="jxr_comment">// that means we can overflow by at most &lt;num reader&gt; size (5), that's ok</em>
+<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">if</strong> (queue.size() &gt;= currentQueueLimit) {
+<a class="jxr_linenumber" name="84" href="#84">84</a>        <strong class="jxr_keyword">return</strong> false;
 <a class="jxr_linenumber" name="85" href="#85">85</a>      }
-<a class="jxr_linenumber" name="86" href="#86">86</a>      <strong class="jxr_keyword">return</strong> length;
+<a class="jxr_linenumber" name="86" href="#86">86</a>      <strong class="jxr_keyword">return</strong> queue.offer(callTask);
 <a class="jxr_linenumber" name="87" href="#87">87</a>    }
 <a class="jxr_linenumber" name="88" href="#88">88</a>  
 <a class="jxr_linenumber" name="89" href="#89">89</a>    @Override
-<a class="jxr_linenumber" name="90" href="#90">90</a>    <strong class="jxr_keyword">public</strong> List&lt;BlockingQueue&lt;CallRunner&gt;&gt; getQueues() {
-<a class="jxr_linenumber" name="91" href="#91">91</a>      <strong class="jxr_keyword">return</strong> queues;
-<a class="jxr_linenumber" name="92" href="#92">92</a>    }
-<a class="jxr_linenumber" name="93" href="#93">93</a>  }
+<a class="jxr_linenumber" name="90" href="#90">90</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getQueueLength() {
+<a class="jxr_linenumber" name="91" href="#91">91</a>      <strong class="jxr_keyword">int</strong> length = 0;
+<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> BlockingQueue&lt;CallRunner&gt; queue : queues) {
+<a class="jxr_linenumber" name="93" href="#93">93</a>        length += queue.size();
+<a class="jxr_linenumber" name="94" href="#94">94</a>      }
+<a class="jxr_linenumber" name="95" href="#95">95</a>      <strong class="jxr_keyword">return</strong> length;
+<a class="jxr_linenumber" name="96" href="#96">96</a>    }
+<a class="jxr_linenumber" name="97" href="#97">97</a>  
+<a class="jxr_linenumber" name="98" href="#98">98</a>    @Override
+<a class="jxr_linenumber" name="99" href="#99">99</a>    <strong class="jxr_keyword">public</strong> List&lt;BlockingQueue&lt;CallRunner&gt;&gt; getQueues() {
+<a class="jxr_linenumber" name="100" href="#100">100</a>     <strong class="jxr_keyword">return</strong> queues;
+<a class="jxr_linenumber" name="101" href="#101">101</a>   }
+<a class="jxr_linenumber" name="102" href="#102">102</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/xref/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html b/xref/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html
index 5498e19..05441c7 100644
--- a/xref/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html
+++ b/xref/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.html
@@ -149,112 +149,127 @@
 <a class="jxr_linenumber" name="139" href="#139">139</a>               <span class="jxr_string">" readQueues="</span> + numReadQueues + <span class="jxr_string">" readHandlers="</span> + readHandlersCount +
 <a class="jxr_linenumber" name="140" href="#140">140</a>               ((numScanQueues == 0) ? <span class="jxr_string">""</span> : <span class="jxr_string">" scanQueues="</span> + numScanQueues +
 <a class="jxr_linenumber" name="141" href="#141">141</a>                 <span class="jxr_string">" scanHandlers="</span> + scanHandlersCount));
-<a class="jxr_linenumber" name="142" href="#142">142</a> 
-<a class="jxr_linenumber" name="143" href="#143">143</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; numWriteQueues; ++i) {
-<a class="jxr_linenumber" name="144" href="#144">144</a>       queues.add((BlockingQueue&lt;CallRunner&gt;)
-<a class="jxr_linenumber" name="145" href="#145">145</a>         ReflectionUtils.newInstance(writeQueueClass, writeQueueInitArgs));
+<a class="jxr_linenumber" name="142" href="#142">142</a>     <strong class="jxr_keyword">if</strong> (writeQueueInitArgs.length &gt; 0) {
+<a class="jxr_linenumber" name="143" href="#143">143</a>       currentQueueLimit = (<strong class="jxr_keyword">int</strong>) writeQueueInitArgs[0];
+<a class="jxr_linenumber" name="144" href="#144">144</a>       writeQueueInitArgs[0] = Math.max((<strong class="jxr_keyword">int</strong>) writeQueueInitArgs[0],
+<a class="jxr_linenumber" name="145" href="#145">145</a>         DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT);
 <a class="jxr_linenumber" name="146" href="#146">146</a>     }
-<a class="jxr_linenumber" name="147" href="#147">147</a> 
-<a class="jxr_linenumber" name="148" href="#148">148</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; (numReadQueues + numScanQueues); ++i) {
+<a class="jxr_linenumber" name="147" href="#147">147</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; numWriteQueues; ++i) {
+<a class="jxr_linenumber" name="148" href="#148">148</a> 
 <a class="jxr_linenumber" name="149" href="#149">149</a>       queues.add((BlockingQueue&lt;CallRunner&gt;)
-<a class="jxr_linenumber" name="150" href="#150">150</a>         ReflectionUtils.newInstance(readQueueClass, readQueueInitArgs));
+<a class="jxr_linenumber" name="150" href="#150">150</a>         ReflectionUtils.newInstance(writeQueueClass, writeQueueInitArgs));
 <a class="jxr_linenumber" name="151" href="#151">151</a>     }
-<a class="jxr_linenumber" name="152" href="#152">152</a>   }
-<a class="jxr_linenumber" name="153" href="#153">153</a> 
-<a class="jxr_linenumber" name="154" href="#154">154</a>   @Override
-<a class="jxr_linenumber" name="155" href="#155">155</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> startHandlers(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> port) {
-<a class="jxr_linenumber" name="156" href="#156">156</a>     startHandlers(<span class="jxr_string">".write"</span>, writeHandlersCount, queues, 0, numWriteQueues, port);
-<a class="jxr_linenumber" name="157" href="#157">157</a>     startHandlers(<span class="jxr_string">".read"</span>, readHandlersCount, queues, numWriteQueues, numReadQueues, port);
-<a class="jxr_linenumber" name="158" href="#158">158</a>     startHandlers(<span class="jxr_string">".scan"</span>, scanHandlersCount, queues,
-<a class="jxr_linenumber" name="159" href="#159">159</a>                   numWriteQueues + numReadQueues, numScanQueues, port);
-<a class="jxr_linenumber" name="160" href="#160">160</a>   }
-<a class="jxr_linenumber" name="161" href="#161">161</a> 
-<a class="jxr_linenumber" name="162" href="#162">162</a>   @Override
-<a class="jxr_linenumber" name="163" href="#163">163</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> dispatch(<strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html">CallRunner</a> callTask) <strong class="jxr_keyword">throws</strong> InterruptedException {
-<a class="jxr_linenumber" name="164" href="#164">164</a>     RpcServer.Call call = callTask.getCall();
-<a class="jxr_linenumber" name="165" href="#165">165</a>     <strong class="jxr_keyword">int</strong> queueIndex;
-<a class="jxr_linenumber" name="166" href="#166">166</a>     <strong class="jxr_keyword">if</strong> (isWriteRequest(call.getHeader(), call.param)) {
-<a class="jxr_linenumber" name="167" href="#167">167</a>       queueIndex = writeBalancer.getNextQueue();
-<a class="jxr_linenumber" name="168" href="#168">168</a>     } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (numScanQueues &gt; 0 &amp;&amp; isScanRequest(call.getHeader(), call.param)) {
-<a class="jxr_linenumber" name="169" href="#169">169</a>       queueIndex = numWriteQueues + numReadQueues + scanBalancer.getNextQueue();
-<a class="jxr_linenumber" name="170" href="#170">170</a>     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="171" href="#171">171</a>       queueIndex = numWriteQueues + readBalancer.getNextQueue();
-<a class="jxr_linenumber" name="172" href="#172">172</a>     }
-<a class="jxr_linenumber" name="173" href="#173">173</a>     <strong class="jxr_keyword">return</strong> queues.get(queueIndex).offer(callTask);
-<a class="jxr_linenumber" name="174" href="#174">174</a>   }
-<a class="jxr_linenumber" name="175" href="#175">175</a> 
-<a class="jxr_linenumber" name="176" href="#176">176</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isWriteRequest(<strong class="jxr_keyword">final</strong> RequestHeader header, <strong class="jxr_keyword">final</strong> Message param) {
-<a class="jxr_linenumber" name="177" href="#177">177</a>     <em class="jxr_comment">// TODO: Is there a better way to do this?</em>
-<a class="jxr_linenumber" name="178" href="#178">178</a>     <strong class="jxr_keyword">if</strong> (param instanceof MultiRequest) {
-<a class="jxr_linenumber" name="179" href="#179">179</a>       MultiRequest multi = (MultiRequest)param;
-<a class="jxr_linenumber" name="180" href="#180">180</a>       <strong class="jxr_keyword">for</strong> (RegionAction regionAction : multi.getRegionActionList()) {
-<a class="jxr_linenumber" name="181" href="#181">181</a>         <strong class="jxr_keyword">for</strong> (Action action: regionAction.getActionList()) {
-<a class="jxr_linenumber" name="182" href="#182">182</a>           <strong class="jxr_keyword">if</strong> (action.hasMutation()) {
-<a class="jxr_linenumber" name="183" href="#183">183</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="184" href="#184">184</a>           }
-<a class="jxr_linenumber" name="185" href="#185">185</a>         }
-<a class="jxr_linenumber" name="186" href="#186">186</a>       }
+<a class="jxr_linenumber" name="152" href="#152">152</a> 
+<a class="jxr_linenumber" name="153" href="#153">153</a>     <strong class="jxr_keyword">if</strong> (readQueueInitArgs.length &gt; 0) {
+<a class="jxr_linenumber" name="154" href="#154">154</a>       currentQueueLimit = (<strong class="jxr_keyword">int</strong>) readQueueInitArgs[0];
+<a class="jxr_linenumber" name="155" href="#155">155</a>       readQueueInitArgs[0] = Math.max((<strong class="jxr_keyword">int</strong>) readQueueInitArgs[0],
+<a class="jxr_linenumber" name="156" href="#156">156</a>         DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT);
+<a class="jxr_linenumber" name="157" href="#157">157</a>     }
+<a class="jxr_linenumber" name="158" href="#158">158</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; (numReadQueues + numScanQueues); ++i) {
+<a class="jxr_linenumber" name="159" href="#159">159</a>       queues.add((BlockingQueue&lt;CallRunner&gt;)
+<a class="jxr_linenumber" name="160" href="#160">160</a>         ReflectionUtils.newInstance(readQueueClass, readQueueInitArgs));
+<a class="jxr_linenumber" name="161" href="#161">161</a>     }
+<a class="jxr_linenumber" name="162" href="#162">162</a>   }
+<a class="jxr_linenumber" name="163" href="#163">163</a> 
+<a class="jxr_linenumber" name="164" href="#164">164</a>   @Override
+<a class="jxr_linenumber" name="165" href="#165">165</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> startHandlers(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> port) {
+<a class="jxr_linenumber" name="166" href="#166">166</a>     startHandlers(<span class="jxr_string">".write"</span>, writeHandlersCount, queues, 0, numWriteQueues, port);
+<a class="jxr_linenumber" name="167" href="#167">167</a>     startHandlers(<span class="jxr_string">".read"</span>, readHandlersCount, queues, numWriteQueues, numReadQueues, port);
+<a class="jxr_linenumber" name="168" href="#168">168</a>     startHandlers(<span class="jxr_string">".scan"</span>, scanHandlersCount, queues,
+<a class="jxr_linenumber" name="169" href="#169">169</a>                   numWriteQueues + numReadQueues, numScanQueues, port);
+<a class="jxr_linenumber" name="170" href="#170">170</a>   }
+<a class="jxr_linenumber" name="171" href="#171">171</a> 
+<a class="jxr_linenumber" name="172" href="#172">172</a>   @Override
+<a class="jxr_linenumber" name="173" href="#173">173</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> dispatch(<strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html">CallRunner</a> callTask) <strong class="jxr_keyword">throws</strong> InterruptedException {
+<a class="jxr_linenumber" name="174" href="#174">174</a>     RpcServer.Call call = callTask.getCall();
+<a class="jxr_linenumber" name="175" href="#175">175</a>     <strong class="jxr_keyword">int</strong> queueIndex;
+<a class="jxr_linenumber" name="176" href="#176">176</a>     <strong class="jxr_keyword">if</strong> (isWriteRequest(call.getHeader(), call.param)) {
+<a class="jxr_linenumber" name="177" href="#177">177</a>       queueIndex = writeBalancer.getNextQueue();
+<a class="jxr_linenumber" name="178" href="#178">178</a>     } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (numScanQueues &gt; 0 &amp;&amp; isScanRequest(call.getHeader(), call.param)) {
+<a class="jxr_linenumber" name="179" href="#179">179</a>       queueIndex = numWriteQueues + numReadQueues + scanBalancer.getNextQueue();
+<a class="jxr_linenumber" name="180" href="#180">180</a>     } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="181" href="#181">181</a>       queueIndex = numWriteQueues + readBalancer.getNextQueue();
+<a class="jxr_linenumber" name="182" href="#182">182</a>     }
+<a class="jxr_linenumber" name="183" href="#183">183</a> 
+<a class="jxr_linenumber" name="184" href="#184">184</a>     BlockingQueue&lt;CallRunner&gt; queue = queues.get(queueIndex);
+<a class="jxr_linenumber" name="185" href="#185">185</a>     <strong class="jxr_keyword">if</strong> (queue.size() &gt;= currentQueueLimit) {
+<a class="jxr_linenumber" name="186" href="#186">186</a>       <strong class="jxr_keyword">return</strong> false;
 <a class="jxr_linenumber" name="187" href="#187">187</a>     }
-<a class="jxr_linenumber" name="188" href="#188">188</a>     <strong class="jxr_keyword">if</strong> (param instanceof MutateRequest) {
-<a class="jxr_linenumber" name="189" href="#189">189</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="190" href="#190">190</a>     }
-<a class="jxr_linenumber" name="191" href="#191">191</a>     <em class="jxr_comment">// Below here are methods for master. It's a pretty brittle version of this.</em>
-<a class="jxr_linenumber" name="192" href="#192">192</a>     <em class="jxr_comment">// Not sure that master actually needs a read/write queue since 90% of requests to</em>
-<a class="jxr_linenumber" name="193" href="#193">193</a>     <em class="jxr_comment">// master are writing to status or changing the meta table.</em>
-<a class="jxr_linenumber" name="194" href="#194">194</a>     <em class="jxr_comment">// All other read requests are admin generated and can be processed whenever.</em>
-<a class="jxr_linenumber" name="195" href="#195">195</a>     <em class="jxr_comment">// However changing that would require a pretty drastic change and should be done for</em>
-<a class="jxr_linenumber" name="196" href="#196">196</a>     <em class="jxr_comment">// the next major release and not as a fix for HBASE-14239</em>
-<a class="jxr_linenumber" name="197" href="#197">197</a>     <strong class="jxr_keyword">if</strong> (param instanceof RegionServerStatusProtos.ReportRegionStateTransitionRequest) {
-<a class="jxr_linenumber" name="198" href="#198">198</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="199" href="#199">199</a>     }
-<a class="jxr_linenumber" name="200" href="#200">200</a>     <strong class="jxr_keyword">if</strong> (param instanceof RegionServerStatusProtos.RegionServerStartupRequest) {
-<a class="jxr_linenumber" name="201" href="#201">201</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="188" href="#188">188</a>     <strong class="jxr_keyword">return</strong> queue.offer(callTask);
+<a class="jxr_linenumber" name="189" href="#189">189</a>   }
+<a class="jxr_linenumber" name="190" href="#190">190</a> 
+<a class="jxr_linenumber" name="191" href="#191">191</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isWriteRequest(<strong class="jxr_keyword">final</strong> RequestHeader header, <strong class="jxr_keyword">final</strong> Message param) {
+<a class="jxr_linenumber" name="192" href="#192">192</a>     <em class="jxr_comment">// TODO: Is there a better way to do this?</em>
+<a class="jxr_linenumber" name="193" href="#193">193</a>     <strong class="jxr_keyword">if</strong> (param instanceof MultiRequest) {
+<a class="jxr_linenumber" name="194" href="#194">194</a>       MultiRequest multi = (MultiRequest)param;
+<a class="jxr_linenumber" name="195" href="#195">195</a>       <strong class="jxr_keyword">for</strong> (RegionAction regionAction : multi.getRegionActionList()) {
+<a class="jxr_linenumber" name="196" href="#196">196</a>         <strong class="jxr_keyword">for</strong> (Action action: regionAction.getActionList()) {
+<a class="jxr_linenumber" name="197" href="#197">197</a>           <strong class="jxr_keyword">if</strong> (action.hasMutation()) {
+<a class="jxr_linenumber" name="198" href="#198">198</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="199" href="#199">199</a>           }
+<a class="jxr_linenumber" name="200" href="#200">200</a>         }
+<a class="jxr_linenumber" name="201" href="#201">201</a>       }
 <a class="jxr_linenumber" name="202" href="#202">202</a>     }
-<a class="jxr_linenumber" name="203" href="#203">203</a>     <strong class="jxr_keyword">if</strong> (param instanceof RegionServerStatusProtos.RegionServerReportRequest) {
+<a class="jxr_linenumber" name="203" href="#203">203</a>     <strong class="jxr_keyword">if</strong> (param instanceof MutateRequest) {
 <a class="jxr_linenumber" name="204" href="#204">204</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="205" href="#205">205</a>     }
-<a class="jxr_linenumber" name="206" href="#206">206</a>     <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="207" href="#207">207</a>   }
-<a class="jxr_linenumber" name="208" href="#208">208</a> 
-<a class="jxr_linenumber" name="209" href="#209">209</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isScanRequest(<strong class="jxr_keyword">final</strong> RequestHeader header, <strong class="jxr_keyword">final</strong> Message param) {
-<a class="jxr_linenumber" name="210" href="#210">210</a>     <strong class="jxr_keyword">if</strong> (param instanceof ScanRequest) {
-<a class="jxr_linenumber" name="211" href="#211">211</a>       <em class="jxr_comment">// The first scan request will be executed as a "short read"</em>
-<a class="jxr_linenumber" name="212" href="#212">212</a>       ScanRequest request = (ScanRequest)param;
-<a class="jxr_linenumber" name="213" href="#213">213</a>       <strong class="jxr_keyword">return</strong> request.hasScannerId();
+<a class="jxr_linenumber" name="206" href="#206">206</a>     <em class="jxr_comment">// Below here are methods for master. It's a pretty brittle version of this.</em>
+<a class="jxr_linenumber" name="207" href="#207">207</a>     <em class="jxr_comment">// Not sure that master actually needs a read/write queue since 90% of requests to</em>
+<a class="jxr_linenumber" name="208" href="#208">208</a>     <em class="jxr_comment">// master are writing to status or changing the meta table.</em>
+<a class="jxr_linenumber" name="209" href="#209">209</a>     <em class="jxr_comment">// All other read requests are admin generated and can be processed whenever.</em>
+<a class="jxr_linenumber" name="210" href="#210">210</a>     <em class="jxr_comment">// However changing that would require a pretty drastic change and should be done for</em>
+<a class="jxr_linenumber" name="211" href="#211">211</a>     <em class="jxr_comment">// the next major release and not as a fix for HBASE-14239</em>
+<a class="jxr_linenumber" name="212" href="#212">212</a>     <strong class="jxr_keyword">if</strong> (param instanceof RegionServerStatusProtos.ReportRegionStateTransitionRequest) {
+<a class="jxr_linenumber" name="213" href="#213">213</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="214" href="#214">214</a>     }
-<a class="jxr_linenumber" name="215" href="#215">215</a>     <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="216" href="#216">216</a>   }
-<a class="jxr_linenumber" name="217" href="#217">217</a> 
-<a class="jxr_linenumber" name="218" href="#218">218</a>   @Override
-<a class="jxr_linenumber" name="219" href="#219">219</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getQueueLength() {
-<a class="jxr_linenumber" name="220" href="#220">220</a>     <strong class="jxr_keyword">int</strong> length = 0;
-<a class="jxr_linenumber" name="221" href="#221">221</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> BlockingQueue&lt;CallRunner&gt; queue: queues) {
-<a class="jxr_linenumber" name="222" href="#222">222</a>       length += queue.size();
-<a class="jxr_linenumber" name="223" href="#223">223</a>     }
-<a class="jxr_linenumber" name="224" href="#224">224</a>     <strong class="jxr_keyword">return</strong> length;
-<a class="jxr_linenumber" name="225" href="#225">225</a>   }
-<a class="jxr_linenumber" name="226" href="#226">226</a> 
-<a class="jxr_linenumber" name="227" href="#227">227</a>   @Override
-<a class="jxr_linenumber" name="228" href="#228">228</a>   <strong class="jxr_keyword">protected</strong> List&lt;BlockingQueue&lt;CallRunner&gt;&gt; getQueues() {
-<a class="jxr_linenumber" name="229" href="#229">229</a>     <strong class="jxr_keyword">return</strong> queues;
-<a class="jxr_linenumber" name="230" href="#230">230</a>   }
-<a class="jxr_linenumber" name="231" href="#231">231</a> 
-<a class="jxr_linenumber" name="232" href="#232">232</a>   <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="233" href="#233">233</a> <em class="jxr_comment">   * Calculate the number of writers based on the "total count" and the read share.</em>
-<a class="jxr_linenumber" name="234" href="#234">234</a> <em class="jxr_comment">   * You'll get at least one writer.</em>
-<a class="jxr_linenumber" name="235" href="#235">235</a> <em class="jxr_comment">   */</em>
-<a class="jxr_linenumber" name="236" href="#236">236</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> calcNumWriters(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> count, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">float</strong> readShare) {
-<a class="jxr_linenumber" name="237" href="#237">237</a>     <strong class="jxr_keyword">return</strong> Math.max(1, count - Math.max(1, (<strong class="jxr_keyword">int</strong>)Math.round(count * readShare)));
-<a class="jxr_linenumber" name="238" href="#238">238</a>   }
-<a class="jxr_linenumber" name="239" href="#239">239</a> 
-<a class="jxr_linenumber" name="240" href="#240">240</a>   <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="241" href="#241">241</a> <em class="jxr_comment">   * Calculate the number of readers based on the "total count" and the read share.</em>
-<a class="jxr_linenumber" name="242" href="#242">242</a> <em class="jxr_comment">   * You'll get at least one reader.</em>
-<a class="jxr_linenumber" name="243" href="#243">243</a> <em class="jxr_comment">   */</em>
-<a class="jxr_linenumber" name="244" href="#244">244</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> calcNumReaders(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> count, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">float</strong> readShare) {
-<a class="jxr_linenumber" name="245" href="#245">245</a>     <strong class="jxr_keyword">return</strong> count - calcNumWriters(count, readShare);
-<a class="jxr_linenumber" name="246" href="#246">246</a>   }
-<a class="jxr_linenumber" name="247" href="#247">247</a> }
+<a class="jxr_linenumber" name="215" href="#215">215</a>     <strong class="jxr_keyword">if</strong> (param instanceof RegionServerStatusProtos.RegionServerStartupRequest) {
+<a class="jxr_linenumber" name="216" href="#216">216</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="217" href="#217">217</a>     }
+<a class="jxr_linenumber" name="218" href="#218">218</a>     <strong class="jxr_keyword">if</strong> (param instanceof RegionServerStatusProtos.RegionServerReportRequest) {
+<a class="jxr_linenumber" name="219" href="#219">219</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="220" href="#220">220</a>     }
+<a class="jxr_linenumber" name="221" href="#221">221</a>     <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="222" href="#222">222</a>   }
+<a class="jxr_linenumber" name="223" href="#223">223</a> 
+<a class="jxr_linenumber" name="224" href="#224">224</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isScanRequest(<strong class="jxr_keyword">final</strong> RequestHeader header, <strong class="jxr_keyword">final</strong> Message param) {
+<a class="jxr_linenumber" name="225" href="#225">225</a>     <strong class="jxr_keyword">if</strong> (param instanceof ScanRequest) {
+<a class="jxr_linenumber" name="226" href="#226">226</a>       <em class="jxr_comment">// The first scan request will be executed as a "short read"</em>
+<a class="jxr_linenumber" name="227" href="#227">227</a>       ScanRequest request = (ScanRequest)param;
+<a class="jxr_linenumber" name="228" href="#228">228</a>       <strong class="jxr_keyword">return</strong> request.hasScannerId();
+<a class="jxr_linenumber" name="229" href="#229">229</a>     }
+<a class="jxr_linenumber" name="230" href="#230">230</a>     <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="231" href="#231">231</a>   }
+<a class="jxr_linenumber" name="232" href="#232">232</a> 
+<a class="jxr_linenumber" name="233" href="#233">233</a>   @Override
+<a class="jxr_linenumber" name="234" href="#234">234</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getQueueLength() {
+<a class="jxr_linenumber" name="235" href="#235">235</a>     <strong class="jxr_keyword">int</strong> length = 0;
+<a class="jxr_linenumber" name="236" href="#236">236</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> BlockingQueue&lt;CallRunner&gt; queue: queues) {
+<a class="jxr_linenumber" name="237" href="#237">237</a>       length += queue.size();
+<a class="jxr_linenumber" name="238" href="#238">238</a>     }
+<a class="jxr_linenumber" name="239" href="#239">239</a>     <strong class="jxr_keyword">return</strong> length;
+<a class="jxr_linenumber" name="240" href="#240">240</a>   }
+<a class="jxr_linenumber" name="241" href="#241">241</a> 
+<a class="jxr_linenumber" name="242" href="#242">242</a>   @Override
+<a class="jxr_linenumber" name="243" href="#243">243</a>   <strong class="jxr_keyword">protected</strong> List&lt;BlockingQueue&lt;CallRunner&gt;&gt; getQueues() {
+<a class="jxr_linenumber" name="244" href="#244">244</a>     <strong class="jxr_keyword">return</strong> queues;
+<a class="jxr_linenumber" name="245" href="#245">245</a>   }
+<a class="jxr_linenumber" name="246" href="#246">246</a> 
+<a class="jxr_linenumber" name="247" href="#247">247</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="248" href="#248">248</a> <em class="jxr_comment">   * Calculate the number of writers based on the "total count" and the read share.</em>
+<a class="jxr_linenumber" name="249" href="#249">249</a> <em class="jxr_comment">   * You'll get at least one writer.</em>
+<a class="jxr_linenumber" name="250" href="#250">250</a> <em class="jxr_comment">   */</em>
+<a class="jxr_linenumber" name="251" href="#251">251</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> calcNumWriters(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> count, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">float</strong> readShare) {
+<a class="jxr_linenumber" name="252" href="#252">252</a>     <strong class="jxr_keyword">return</strong> Math.max(1, count - Math.max(1, (<strong class="jxr_keyword">int</strong>)Math.round(count * readShare)));
+<a class="jxr_linenumber" name="253" href="#253">253</a>   }
+<a class="jxr_linenumber" name="254" href="#254">254</a> 
+<a class="jxr_linenumber" name="255" href="#255">255</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="256" href="#256">256</a> <em class="jxr_comment">   * Calculate the number of readers based on the "total count" and the read share.</em>
+<a class="jxr_linenumber" name="257" href="#257">257</a> <em class="jxr_comment">   * You'll get at least one reader.</em>
+<a class="jxr_linenumber" name="258" href="#258">258</a> <em class="jxr_comment">   */</em>
+<a class="jxr_linenumber" name="259" href="#259">259</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> calcNumReaders(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> count, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">float</strong> readShare) {
+<a class="jxr_linenumber" name="260" href="#260">260</a>     <strong class="jxr_keyword">return</strong> count - calcNumWriters(count, readShare);
+<a class="jxr_linenumber" name="261" href="#261">261</a>   }
+<a class="jxr_linenumber" name="262" href="#262">262</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/xref/org/apache/hadoop/hbase/ipc/RpcExecutor.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/ipc/RpcExecutor.html b/xref/org/apache/hadoop/hbase/ipc/RpcExecutor.html
index e2673d5..03e4209 100644
--- a/xref/org/apache/hadoop/hbase/ipc/RpcExecutor.html
+++ b/xref/org/apache/hadoop/hbase/ipc/RpcExecutor.html
@@ -52,175 +52,186 @@
 <a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RpcExecutor</a> {
 <a class="jxr_linenumber" name="43" href="#43">43</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(RpcExecutor.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="44" href="#44">44</a>  
-<a class="jxr_linenumber" name="45" href="#45">45</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> AtomicInteger activeHandlerCount = <strong class="jxr_keyword">new</strong> AtomicInteger(0);
-<a class="jxr_linenumber" name="46" href="#46">46</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> List&lt;Thread&gt; handlers;
-<a class="jxr_linenumber" name="47" href="#47">47</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> handlerCount;
-<a class="jxr_linenumber" name="48" href="#48">48</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String name;
-<a class="jxr_linenumber" name="49" href="#49">49</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> AtomicInteger failedHandlerCount = <strong class="jxr_keyword">new</strong> AtomicInteger(0);
-<a class="jxr_linenumber" name="50" href="#50">50</a>  
-<a class="jxr_linenumber" name="51" href="#51">51</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> running;
-<a class="jxr_linenumber" name="52" href="#52">52</a>  
-<a class="jxr_linenumber" name="53" href="#53">53</a>    <strong class="jxr_keyword">private</strong> Configuration conf = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="54" href="#54">54</a>    <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/Abortable.html">Abortable</a> abortable = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="45" href="#45">45</a>    <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT = 250;
+<a class="jxr_linenumber" name="46" href="#46">46</a>    <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">volatile</strong> <strong class="jxr_keyword">int</strong> currentQueueLimit;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  
+<a class="jxr_linenumber" name="48" href="#48">48</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> AtomicInteger activeHandlerCount = <strong class="jxr_keyword">new</strong> AtomicInteger(0);
+<a class="jxr_linenumber" name="49" href="#49">49</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> List&lt;Thread&gt; handlers;
+<a class="jxr_linenumber" name="50" href="#50">50</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> handlerCount;
+<a class="jxr_linenumber" name="51" href="#51">51</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String name;
+<a class="jxr_linenumber" name="52" href="#52">52</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> AtomicInteger failedHandlerCount = <strong class="jxr_keyword">new</strong> AtomicInteger(0);
+<a class="jxr_linenumber" name="53" href="#53">53</a>  
+<a class="jxr_linenumber" name="54" href="#54">54</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> running;
 <a class="jxr_linenumber" name="55" href="#55">55</a>  
-<a class="jxr_linenumber" name="56" href="#56">56</a>    <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RpcExecutor</a>(<strong class="jxr_keyword">final</strong> String name, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> handlerCount) {
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">this</strong>.handlers = <strong class="jxr_keyword">new</strong> ArrayList&lt;Thread&gt;(handlerCount);
-<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">this</strong>.handlerCount = handlerCount;
-<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">this</strong>.name = Strings.nullToEmpty(name);
-<a class="jxr_linenumber" name="60" href="#60">60</a>    }
-<a class="jxr_linenumber" name="61" href="#61">61</a>  
-<a class="jxr_linenumber" name="62" href="#62">62</a>    <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RpcExecutor</a>(<strong class="jxr_keyword">final</strong> String name, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> handlerCount, <strong class="jxr_keyword">final</strong> Configuration conf,
-<a class="jxr_linenumber" name="63" href="#63">63</a>        <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/Abortable.html">Abortable</a> abortable) {
-<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">this</strong>(name, handlerCount);
-<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">this</strong>.conf = conf;
-<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">this</strong>.abortable = abortable;
-<a class="jxr_linenumber" name="67" href="#67">67</a>    }
-<a class="jxr_linenumber" name="68" href="#68">68</a>  
-<a class="jxr_linenumber" name="69" href="#69">69</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> start(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> port) {
-<a class="jxr_linenumber" name="70" href="#70">70</a>      running = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="71" href="#71">71</a>      startHandlers(port);
-<a class="jxr_linenumber" name="72" href="#72">72</a>    }
-<a class="jxr_linenumber" name="73" href="#73">73</a>  
-<a class="jxr_linenumber" name="74" href="#74">74</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> stop() {
-<a class="jxr_linenumber" name="75" href="#75">75</a>      running = false;
-<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">for</strong> (Thread handler : handlers) {
-<a class="jxr_linenumber" name="77" href="#77">77</a>        handler.interrupt();
-<a class="jxr_linenumber" name="78" href="#78">78</a>      }
-<a class="jxr_linenumber" name="79" href="#79">79</a>    }
-<a class="jxr_linenumber" name="80" href="#80">80</a>  
-<a class="jxr_linenumber" name="81" href="#81">81</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getActiveHandlerCount() {
-<a class="jxr_linenumber" name="82" href="#82">82</a>      <strong class="jxr_keyword">return</strong> activeHandlerCount.get();
-<a class="jxr_linenumber" name="83" href="#83">83</a>    }
-<a class="jxr_linenumber" name="84" href="#84">84</a>  
-<a class="jxr_linenumber" name="85" href="#85">85</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Returns the length of the pending queue */</em>
-<a class="jxr_linenumber" name="86" href="#86">86</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">int</strong> getQueueLength();
+<a class="jxr_linenumber" name="56" href="#56">56</a>    <strong class="jxr_keyword">private</strong> Configuration conf = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="57" href="#57">57</a>    <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/Abortable.html">Abortable</a> abortable = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="58" href="#58">58</a>  
+<a class="jxr_linenumber" name="59" href="#59">59</a>    <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RpcExecutor</a>(<strong class="jxr_keyword">final</strong> String name, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> handlerCount) {
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">this</strong>.handlers = <strong class="jxr_keyword">new</strong> ArrayList&lt;Thread&gt;(handlerCount);
+<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">this</strong>.handlerCount = handlerCount;
+<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">this</strong>.name = Strings.nullToEmpty(name);
+<a class="jxr_linenumber" name="63" href="#63">63</a>    }
+<a class="jxr_linenumber" name="64" href="#64">64</a>  
+<a class="jxr_linenumber" name="65" href="#65">65</a>    <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RpcExecutor</a>(<strong class="jxr_keyword">final</strong> String name, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> handlerCount, <strong class="jxr_keyword">final</strong> Configuration conf,
+<a class="jxr_linenumber" name="66" href="#66">66</a>        <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/Abortable.html">Abortable</a> abortable) {
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">this</strong>(name, handlerCount);
+<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">this</strong>.conf = conf;
+<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">this</strong>.abortable = abortable;
+<a class="jxr_linenumber" name="70" href="#70">70</a>    }
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> start(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> port) {
+<a class="jxr_linenumber" name="73" href="#73">73</a>      running = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="74" href="#74">74</a>      startHandlers(port);
+<a class="jxr_linenumber" name="75" href="#75">75</a>    }
+<a class="jxr_linenumber" name="76" href="#76">76</a>  
+<a class="jxr_linenumber" name="77" href="#77">77</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> stop() {
+<a class="jxr_linenumber" name="78" href="#78">78</a>      running = false;
+<a class="jxr_linenumber" name="79" href="#79">79</a>      <strong class="jxr_keyword">for</strong> (Thread handler : handlers) {
+<a class="jxr_linenumber" name="80" href="#80">80</a>        handler.interrupt();
+<a class="jxr_linenumber" name="81" href="#81">81</a>      }
+<a class="jxr_linenumber" name="82" href="#82">82</a>    }
+<a class="jxr_linenumber" name="83" href="#83">83</a>  
+<a class="jxr_linenumber" name="84" href="#84">84</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getActiveHandlerCount() {
+<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">return</strong> activeHandlerCount.get();
+<a class="jxr_linenumber" name="86" href="#86">86</a>    }
 <a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Add the request to the executor queue */</em>
-<a class="jxr_linenumber" name="89" href="#89">89</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">boolean</strong> dispatch(<strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html">CallRunner</a> callTask) <strong class="jxr_keyword">throws</strong> InterruptedException;
+<a class="jxr_linenumber" name="88" href="#88">88</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Returns the length of the pending queue */</em>
+<a class="jxr_linenumber" name="89" href="#89">89</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">int</strong> getQueueLength();
 <a class="jxr_linenumber" name="90" href="#90">90</a>  
-<a class="jxr_linenumber" name="91" href="#91">91</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Returns the list of request queues */</em>
-<a class="jxr_linenumber" name="92" href="#92">92</a>    <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">abstract</strong> List&lt;BlockingQueue&lt;CallRunner&gt;&gt; getQueues();
+<a class="jxr_linenumber" name="91" href="#91">91</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Add the request to the executor queue */</em>
+<a class="jxr_linenumber" name="92" href="#92">92</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">boolean</strong> dispatch(<strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html">CallRunner</a> callTask) <strong class="jxr_keyword">throws</strong> InterruptedException;
 <a class="jxr_linenumber" name="93" href="#93">93</a>  
-<a class="jxr_linenumber" name="94" href="#94">94</a>    <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> startHandlers(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> port) {
-<a class="jxr_linenumber" name="95" href="#95">95</a>      List&lt;BlockingQueue&lt;CallRunner&gt;&gt; callQueues = getQueues();
-<a class="jxr_linenumber" name="96" href="#96">96</a>      startHandlers(<strong class="jxr_keyword">null</strong>, handlerCount, callQueues, 0, callQueues.size(), port);
-<a class="jxr_linenumber" name="97" href="#97">97</a>    }
-<a class="jxr_linenumber" name="98" href="#98">98</a>  
-<a class="jxr_linenumber" name="99" href="#99">99</a>    <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> startHandlers(<strong class="jxr_keyword">final</strong> String nameSuffix, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> numHandlers,
-<a class="jxr_linenumber" name="100" href="#100">100</a>       <strong class="jxr_keyword">final</strong> List&lt;BlockingQueue&lt;CallRunner&gt;&gt; callQueues,
-<a class="jxr_linenumber" name="101" href="#101">101</a>       <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> qindex, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> qsize, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> port) {
-<a class="jxr_linenumber" name="102" href="#102">102</a>     <strong class="jxr_keyword">final</strong> String threadPrefix = name + Strings.nullToEmpty(nameSuffix);
-<a class="jxr_linenumber" name="103" href="#103">103</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; numHandlers; i++) {
-<a class="jxr_linenumber" name="104" href="#104">104</a>       <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> index = qindex + (i % qsize);
-<a class="jxr_linenumber" name="105" href="#105">105</a>       Thread t = <strong class="jxr_keyword">new</strong> Thread(<strong class="jxr_keyword">new</strong> Runnable() {
-<a class="jxr_linenumber" name="106" href="#106">106</a>         @Override
-<a class="jxr_linenumber" name="107" href="#107">107</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run() {
-<a class="jxr_linenumber" name="108" href="#108">108</a>           consumerLoop(callQueues.get(index));
-<a class="jxr_linenumber" name="109" href="#109">109</a>         }
-<a class="jxr_linenumber" name="110" href="#110">110</a>       });
-<a class="jxr_linenumber" name="111" href="#111">111</a>       t.setDaemon(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="112" href="#112">112</a>       t.setName(threadPrefix + <span class="jxr_string">"RpcServer.handler="</span> + handlers.size() +
-<a class="jxr_linenumber" name="113" href="#113">113</a>         <span class="jxr_string">",queue="</span> + index + <span class="jxr_string">",port="</span> + port);
-<a class="jxr_linenumber" name="114" href="#114">114</a>       t.start();
-<a class="jxr_linenumber" name="115" href="#115">115</a>       LOG.debug(threadPrefix + <span class="jxr_string">" Start Handler index="</span> + handlers.size() + <span class="jxr_string">" queue="</span> + index);
-<a class="jxr_linenumber" name="116" href="#116">116</a>       handlers.add(t);
-<a class="jxr_linenumber" name="117" href="#117">117</a>     }
-<a class="jxr_linenumber" name="118" href="#118">118</a>   }
-<a class="jxr_linenumber" name="119" href="#119">119</a> 
-<a class="jxr_linenumber" name="120" href="#120">120</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> consumerLoop(<strong class="jxr_keyword">final</strong> BlockingQueue&lt;CallRunner&gt; myQueue) {
-<a class="jxr_linenumber" name="121" href="#121">121</a>     <strong class="jxr_keyword">boolean</strong> interrupted = false;
-<a class="jxr_linenumber" name="122" href="#122">122</a>     <strong class="jxr_keyword">double</strong> handlerFailureThreshhold =
-<a class="jxr_linenumber" name="123" href="#123">123</a>         conf == <strong class="jxr_keyword">null</strong> ? 1.0 : conf.getDouble(HConstants.REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT,
-<a class="jxr_linenumber" name="124" href="#124">124</a>           HConstants.DEFAULT_REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT);
-<a class="jxr_linenumber" name="125" href="#125">125</a>     <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="126" href="#126">126</a>       <strong class="jxr_keyword">while</strong> (running) {
-<a class="jxr_linenumber" name="127" href="#127">127</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="128" href="#128">128</a>           <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredRPCHandler.html">MonitoredRPCHandler</a> status = RpcServer.getStatus();
-<a class="jxr_linenumber" name="129" href="#129">129</a>           <a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html">CallRunner</a> task = myQueue.take();
-<a class="jxr_linenumber" name="130" href="#130">130</a>           task.setStatus(status);
-<a class="jxr_linenumber" name="131" href="#131">131</a>           <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="132" href="#132">132</a>             activeHandlerCount.incrementAndGet();
-<a class="jxr_linenumber" name="133" href="#133">133</a>             task.run();
-<a class="jxr_linenumber" name="134" href="#134">134</a>           } <strong class="jxr_keyword">catch</strong> (Throwable e) {
-<a class="jxr_linenumber" name="135" href="#135">135</a>             <strong class="jxr_keyword">if</strong> (e instanceof Error) {
-<a class="jxr_linenumber" name="136" href="#136">136</a>               <strong class="jxr_keyword">int</strong> failedCount = failedHandlerCount.incrementAndGet();
-<a class="jxr_linenumber" name="137" href="#137">137</a>               <strong class="jxr_keyword">if</strong> (handlerFailureThreshhold &gt;= 0
-<a class="jxr_linenumber" name="138" href="#138">138</a>                   &amp;&amp; failedCount &gt; handlerCount * handlerFailureThreshhold) {
-<a class="jxr_linenumber" name="139" href="#139">139</a>                 String message =
-<a class="jxr_linenumber" name="140" href="#140">140</a>                     <span class="jxr_string">"Number of failed RpcServer handler exceeded threshhold "</span>
-<a class="jxr_linenumber" name="141" href="#141">141</a>                         + handlerFailureThreshhold + <span class="jxr_string">"  with failed reason: "</span>
-<a class="jxr_linenumber" name="142" href="#142">142</a>                         + StringUtils.stringifyException(e);
-<a class="jxr_linenumber" name="143" href="#143">143</a>                 <strong class="jxr_keyword">if</strong> (abortable != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="144" href="#144">144</a>                   abortable.abort(message, e);
-<a class="jxr_linenumber" name="145" href="#145">145</a>                 } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="146" href="#146">146</a>                   LOG.error(<span class="jxr_string">"Received "</span> + StringUtils.stringifyException(e)
-<a class="jxr_linenumber" name="147" href="#147">147</a>                     + <span class="jxr_string">" but not aborting due to abortable being null"</span>);
-<a class="jxr_linenumber" name="148" href="#148">148</a>                   <strong class="jxr_keyword">throw</strong> e;
-<a class="jxr_linenumber" name="149" href="#149">149</a>                 }
-<a class="jxr_linenumber" name="150" href="#150">150</a>               } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="151" href="#151">151</a>                 LOG.warn(<span class="jxr_string">"RpcServer handler threads encountered errors "</span>
-<a class="jxr_linenumber" name="152" href="#152">152</a>                     + StringUtils.stringifyException(e));
-<a class="jxr_linenumber" name="153" href="#153">153</a>               }
-<a class="jxr_linenumber" name="154" href="#154">154</a>             } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="155" href="#155">155</a>               LOG.warn(<span class="jxr_string">"RpcServer handler threads encountered exceptions "</span>
-<a class="jxr_linenumber" name="156" href="#156">156</a>                   + StringUtils.stringifyException(e));
-<a class="jxr_linenumber" name="157" href="#157">157</a>             }
-<a class="jxr_linenumber" name="158" href="#158">158</a>           } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="159" href="#159">159</a>             activeHandlerCount.decrementAndGet();
-<a class="jxr_linenumber" name="160" href="#160">160</a>           }
-<a class="jxr_linenumber" name="161" href="#161">161</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
-<a class="jxr_linenumber" name="162" href="#162">162</a>           interrupted = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="163" href="#163">163</a>         }
-<a class="jxr_linenumber" name="164" href="#164">164</a>       }
-<a class="jxr_linenumber" name="165" href="#165">165</a>     } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="166" href="#166">166</a>       <strong class="jxr_keyword">if</strong> (interrupted) {
-<a class="jxr_linenumber" name="167" href="#167">167</a>         Thread.currentThread().interrupt();
-<a class="jxr_linenumber" name="168" href="#168">168</a>       }
-<a class="jxr_linenumber" name="169" href="#169">169</a>     }
-<a class="jxr_linenumber" name="170" href="#170">170</a>   }
-<a class="jxr_linenumber" name="171" href="#171">171</a> 
-<a class="jxr_linenumber" name="172" href="#172">172</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">QueueBalancer</a> {
-<a class="jxr_linenumber" name="173" href="#173">173</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="174" href="#174">174</a> <em class="jxr_javadoccomment">     * @return the index of the next queue to which a request should be inserted</em>
-<a class="jxr_linenumber" name="175" href="#175">175</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="176" href="#176">176</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">int</strong> getNextQueue();
-<a class="jxr_linenumber" name="177" href="#177">177</a>   }
-<a class="jxr_linenumber" name="178" href="#178">178</a> 
-<a class="jxr_linenumber" name="179" href="#179">179</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">QueueBalancer</a> getBalancer(<strong class="jxr_keyword">int</strong> queueSize) {
-<a class="jxr_linenumber" name="180" href="#180">180</a>     Preconditions.checkArgument(queueSize &gt; 0, <span class="jxr_string">"Queue size is &lt;= 0, must be at least 1"</span>);
-<a class="jxr_linenumber" name="181" href="#181">181</a>     <strong class="jxr_keyword">if</strong> (queueSize == 1) {
-<a class="jxr_linenumber" name="182" href="#182">182</a>       <strong class="jxr_keyword">return</strong> ONE_QUEUE;
-<a class="jxr_linenumber" name="183" href="#183">183</a>     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="184" href="#184">184</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RandomQueueBalancer</a>(queueSize);
-<a class="jxr_linenumber" name="185" href="#185">185</a>     }
-<a class="jxr_linenumber" name="186" href="#186">186</a>   }
-<a class="jxr_linenumber" name="187" href="#187">187</a> 
-<a class="jxr_linenumber" name="188" href="#188">188</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="189" href="#189">189</a> <em class="jxr_javadoccomment">   * All requests go to the first queue, at index 0</em>
-<a class="jxr_linenumber" name="190" href="#190">190</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="191" href="#191">191</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">QueueBalancer</a> ONE_QUEUE = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">QueueBalancer</a>() {
-<a class="jxr_linenumber" name="192" href="#192">192</a> 
-<a class="jxr_linenumber" name="193" href="#193">193</a>     @Override
-<a class="jxr_linenumber" name="194" href="#194">194</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getNextQueue() {
-<a class="jxr_linenumber" name="195" href="#195">195</a>       <strong class="jxr_keyword">return</strong> 0;
-<a class="jxr_linenumber" name="196" href="#196">196</a>     }
-<a class="jxr_linenumber" name="197" href="#197">197</a>   };
-<a class="jxr_linenumber" name="198" href="#198">198</a> 
-<a class="jxr_linenumber" name="199" href="#199">199</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="200" href="#200">200</a> <em class="jxr_javadoccomment">   * Queue balancer that just randomly selects a queue in the range [0, num queues).</em>
-<a class="jxr_linenumber" name="201" href="#201">201</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="202" href="#202">202</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RandomQueueBalancer</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">QueueBalancer</a> {
-<a class="jxr_linenumber" name="203" href="#203">203</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> queueSize;
-<a class="jxr_linenumber" name="204" href="#204">204</a> 
-<a class="jxr_linenumber" name="205" href="#205">205</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RandomQueueBalancer</a>(<strong class="jxr_keyword">int</strong> queueSize) {
-<a class="jxr_linenumber" name="206" href="#206">206</a>       <strong class="jxr_keyword">this</strong>.queueSize = queueSize;
-<a class="jxr_linenumber" name="207" href="#207">207</a>     }
-<a class="jxr_linenumber" name="208" href="#208">208</a> 
-<a class="jxr_linenumber" name="209" href="#209">209</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getNextQueue() {
-<a class="jxr_linenumber" name="210" href="#210">210</a>       <strong class="jxr_keyword">return</strong> ThreadLocalRandom.current().nextInt(queueSize);
-<a class="jxr_linenumber" name="211" href="#211">211</a>     }
-<a class="jxr_linenumber" name="212" href="#212">212</a>   }
-<a class="jxr_linenumber" name="213" href="#213">213</a> }
+<a class="jxr_linenumber" name="94" href="#94">94</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Returns the list of request queues */</em>
+<a class="jxr_linenumber" name="95" href="#95">95</a>    <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">abstract</strong> List&lt;BlockingQueue&lt;CallRunner&gt;&gt; getQueues();
+<a class="jxr_linenumber" name="96" href="#96">96</a>  
+<a class="jxr_linenumber" name="97" href="#97">97</a>    <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> startHandlers(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> port) {
+<a class="jxr_linenumber" name="98" href="#98">98</a>      List&lt;BlockingQueue&lt;CallRunner&gt;&gt; callQueues = getQueues();
+<a class="jxr_linenumber" name="99" href="#99">99</a>      startHandlers(<strong class="jxr_keyword">null</strong>, handlerCount, callQueues, 0, callQueues.size(), port);
+<a class="jxr_linenumber" name="100" href="#100">100</a>   }
+<a class="jxr_linenumber" name="101" href="#101">101</a> 
+<a class="jxr_linenumber" name="102" href="#102">102</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> startHandlers(<strong class="jxr_keyword">final</strong> String nameSuffix, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> numHandlers,
+<a class="jxr_linenumber" name="103" href="#103">103</a>       <strong class="jxr_keyword">final</strong> List&lt;BlockingQueue&lt;CallRunner&gt;&gt; callQueues,
+<a class="jxr_linenumber" name="104" href="#104">104</a>       <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> qindex, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> qsize, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> port) {
+<a class="jxr_linenumber" name="105" href="#105">105</a>     <strong class="jxr_keyword">final</strong> String threadPrefix = name + Strings.nullToEmpty(nameSuffix);
+<a class="jxr_linenumber" name="106" href="#106">106</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; numHandlers; i++) {
+<a class="jxr_linenumber" name="107" href="#107">107</a>       <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> index = qindex + (i % qsize);
+<a class="jxr_linenumber" name="108" href="#108">108</a>       Thread t = <strong class="jxr_keyword">new</strong> Thread(<strong class="jxr_keyword">new</strong> Runnable() {
+<a class="jxr_linenumber" name="109" href="#109">109</a>         @Override
+<a class="jxr_linenumber" name="110" href="#110">110</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run() {
+<a class="jxr_linenumber" name="111" href="#111">111</a>           consumerLoop(callQueues.get(index));
+<a class="jxr_linenumber" name="112" href="#112">112</a>         }
+<a class="jxr_linenumber" name="113" href="#113">113</a>       });
+<a class="jxr_linenumber" name="114" href="#114">114</a>       t.setDaemon(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="115" href="#115">115</a>       t.setName(threadPrefix + <span class="jxr_string">"RpcServer.handler="</span> + handlers.size() +
+<a class="jxr_linenumber" name="116" href="#116">116</a>         <span class="jxr_string">",queue="</span> + index + <span class="jxr_string">",port="</span> + port);
+<a class="jxr_linenumber" name="117" href="#117">117</a>       t.start();
+<a class="jxr_linenumber" name="118" href="#118">118</a>       LOG.debug(threadPrefix + <span class="jxr_string">" Start Handler index="</span> + handlers.size() + <span class="jxr_string">" queue="</span> + index);
+<a class="jxr_linenumber" name="119" href="#119">119</a>       handlers.add(t);
+<a class="jxr_linenumber" name="120" href="#120">120</a>     }
+<a class="jxr_linenumber" name="121" href="#121">121</a>   }
+<a class="jxr_linenumber" name="122" href="#122">122</a> 
+<a class="jxr_linenumber" name="123" href="#123">123</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> consumerLoop(<strong class="jxr_keyword">final</strong> BlockingQueue&lt;CallRunner&gt; myQueue) {
+<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">boolean</strong> interrupted = false;
+<a class="jxr_linenumber" name="125" href="#125">125</a>     <strong class="jxr_keyword">double</strong> handlerFailureThreshhold =
+<a class="jxr_linenumber" name="126" href="#126">126</a>         conf == <strong class="jxr_keyword">null</strong> ? 1.0 : conf.getDouble(HConstants.REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT,
+<a class="jxr_linenumber" name="127" href="#127">127</a>           HConstants.DEFAULT_REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT);
+<a class="jxr_linenumber" name="128" href="#128">128</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="129" href="#129">129</a>       <strong class="jxr_keyword">while</strong> (running) {
+<a class="jxr_linenumber" name="130" href="#130">130</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="131" href="#131">131</a>           <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredRPCHandler.html">MonitoredRPCHandler</a> status = RpcServer.getStatus();
+<a class="jxr_linenumber" name="132" href="#132">132</a>           <a href="../../../../../org/apache/hadoop/hbase/ipc/CallRunner.html">CallRunner</a> task = myQueue.take();
+<a class="jxr_linenumber" name="133" href="#133">133</a>           task.setStatus(status);
+<a class="jxr_linenumber" name="134" href="#134">134</a>           <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="135" href="#135">135</a>             activeHandlerCount.incrementAndGet();
+<a class="jxr_linenumber" name="136" href="#136">136</a>             task.run();
+<a class="jxr_linenumber" name="137" href="#137">137</a>           } <strong class="jxr_keyword">catch</strong> (Throwable e) {
+<a class="jxr_linenumber" name="138" href="#138">138</a>             <strong class="jxr_keyword">if</strong> (e instanceof Error) {
+<a class="jxr_linenumber" name="139" href="#139">139</a>               <strong class="jxr_keyword">int</strong> failedCount = failedHandlerCount.incrementAndGet();
+<a class="jxr_linenumber" name="140" href="#140">140</a>               <strong class="jxr_keyword">if</strong> (handlerFailureThreshhold &gt;= 0
+<a class="jxr_linenumber" name="141" href="#141">141</a>                   &amp;&amp; failedCount &gt; handlerCount * handlerFailureThreshhold) {
+<a class="jxr_linenumber" name="142" href="#142">142</a>                 String message =
+<a class="jxr_linenumber" name="143" href="#143">143</a>                     <span class="jxr_string">"Number of failed RpcServer handler exceeded threshhold "</span>
+<a class="jxr_linenumber" name="144" href="#144">144</a>                         + handlerFailureThreshhold + <span class="jxr_string">"  with failed reason: "</span>
+<a class="jxr_linenumber" name="145" href="#145">145</a>                         + StringUtils.stringifyException(e);
+<a class="jxr_linenumber" name="146" href="#146">146</a>                 <strong class="jxr_keyword">if</strong> (abortable != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="147" href="#147">147</a>                   abortable.abort(message, e);
+<a class="jxr_linenumber" name="148" href="#148">148</a>                 } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="149" href="#149">149</a>                   LOG.error(<span class="jxr_string">"Received "</span> + StringUtils.stringifyException(e)
+<a class="jxr_linenumber" name="150" href="#150">150</a>                     + <span class="jxr_string">" but not aborting due to abortable being null"</span>);
+<a class="jxr_linenumber" name="151" href="#151">151</a>                   <strong class="jxr_keyword">throw</strong> e;
+<a class="jxr_linenumber" name="152" href="#152">152</a>                 }
+<a class="jxr_linenumber" name="153" href="#153">153</a>               } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="154" href="#154">154</a>                 LOG.warn(<span class="jxr_string">"RpcServer handler threads encountered errors "</span>
+<a class="jxr_linenumber" name="155" href="#155">155</a>                     + StringUtils.stringifyException(e));
+<a class="jxr_linenumber" name="156" href="#156">156</a>               }
+<a class="jxr_linenumber" name="157" href="#157">157</a>             } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="158" href="#158">158</a>               LOG.warn(<span class="jxr_string">"RpcServer handler threads encountered exceptions "</span>
+<a class="jxr_linenumber" name="159" href="#159">159</a>                   + StringUtils.stringifyException(e));
+<a class="jxr_linenumber" name="160" href="#160">160</a>             }
+<a class="jxr_linenumber" name="161" href="#161">161</a>           } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="162" href="#162">162</a>             activeHandlerCount.decrementAndGet();
+<a class="jxr_linenumber" name="163" href="#163">163</a>           }
+<a class="jxr_linenumber" name="164" href="#164">164</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
+<a class="jxr_linenumber" name="165" href="#165">165</a>           interrupted = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="166" href="#166">166</a>         }
+<a class="jxr_linenumber" name="167" href="#167">167</a>       }
+<a class="jxr_linenumber" name="168" href="#168">168</a>     } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="169" href="#169">169</a>       <strong class="jxr_keyword">if</strong> (interrupted) {
+<a class="jxr_linenumber" name="170" href="#170">170</a>         Thread.currentThread().interrupt();
+<a class="jxr_linenumber" name="171" href="#171">171</a>       }
+<a class="jxr_linenumber" name="172" href="#172">172</a>     }
+<a class="jxr_linenumber" name="173" href="#173">173</a>   }
+<a class="jxr_linenumber" name="174" href="#174">174</a> 
+<a class="jxr_linenumber" name="175" href="#175">175</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">QueueBalancer</a> {
+<a class="jxr_linenumber" name="176" href="#176">176</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="177" href="#177">177</a> <em class="jxr_javadoccomment">     * @return the index of the next queue to which a request should be inserted</em>
+<a class="jxr_linenumber" name="178" href="#178">178</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="179" href="#179">179</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">int</strong> getNextQueue();
+<a class="jxr_linenumber" name="180" href="#180">180</a>   }
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">QueueBalancer</a> getBalancer(<strong class="jxr_keyword">int</strong> queueSize) {
+<a class="jxr_linenumber" name="183" href="#183">183</a>     Preconditions.checkArgument(queueSize &gt; 0, <span class="jxr_string">"Queue size is &lt;= 0, must be at least 1"</span>);
+<a class="jxr_linenumber" name="184" href="#184">184</a>     <strong class="jxr_keyword">if</strong> (queueSize == 1) {
+<a class="jxr_linenumber" name="185" href="#185">185</a>       <strong class="jxr_keyword">return</strong> ONE_QUEUE;
+<a class="jxr_linenumber" name="186" href="#186">186</a>     } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="187" href="#187">187</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RandomQueueBalancer</a>(queueSize);
+<a class="jxr_linenumber" name="188" href="#188">188</a>     }
+<a class="jxr_linenumber" name="189" href="#189">189</a>   }
+<a class="jxr_linenumber" name="190" href="#190">190</a> 
+<a class="jxr_linenumber" name="191" href="#191">191</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="192" href="#192">192</a> <em class="jxr_javadoccomment">   * All requests go to the first queue, at index 0</em>
+<a class="jxr_linenumber" name="193" href="#193">193</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="194" href="#194">194</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">QueueBalancer</a> ONE_QUEUE = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">QueueBalancer</a>() {
+<a class="jxr_linenumber" name="195" href="#195">195</a> 
+<a class="jxr_linenumber" name="196" href="#196">196</a>     @Override
+<a class="jxr_linenumber" name="197" href="#197">197</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getNextQueue() {
+<a class="jxr_linenumber" name="198" href="#198">198</a>       <strong class="jxr_keyword">return</strong> 0;
+<a class="jxr_linenumber" name="199" href="#199">199</a>     }
+<a class="jxr_linenumber" name="200" href="#200">200</a>   };
+<a class="jxr_linenumber" name="201" href="#201">201</a> 
+<a class="jxr_linenumber" name="202" href="#202">202</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="203" href="#203">203</a> <em class="jxr_javadoccomment">   * Queue balancer that just randomly selects a queue in the range [0, num queues).</em>
+<a class="jxr_linenumber" name="204" href="#204">204</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="205" href="#205">205</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RandomQueueBalancer</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">QueueBalancer</a> {
+<a class="jxr_linenumber" name="206" href="#206">206</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> queueSize;
+<a class="jxr_linenumber" name="207" href="#207">207</a> 
+<a class="jxr_linenumber" name="208" href="#208">208</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html">RandomQueueBalancer</a>(<strong class="jxr_keyword">int</strong> queueSize) {
+<a class="jxr_linenumber" name="209" href="#209">209</a>       <strong class="jxr_keyword">this</strong>.queueSize = queueSize;
+<a class="jxr_linenumber" name="210" href="#210">210</a>     }
+<a class="jxr_linenumber" name="211" href="#211">211</a> 
+<a class="jxr_linenumber" name="212" href="#212">212</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getNextQueue() {
+<a class="jxr_linenumber" name="213" href="#213">213</a>       <strong class="jxr_keyword">return</strong> ThreadLocalRandom.current().nextInt(queueSize);
+<a class="jxr_linenumber" name="214" href="#214">214</a>     }
+<a class="jxr_linenumber" name="215" href="#215">215</a>   }
+<a class="jxr_linenumber" name="216" href="#216">216</a> 
+<a class="jxr_linenumber" name="217" href="#217">217</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="218" href="#218">218</a> <em class="jxr_javadoccomment">   * Update current soft limit for executor's call queues</em>
+<a class="jxr_linenumber" name="219" href="#219">219</a> <em class="jxr_javadoccomment">   * @param conf updated configuration</em>
+<a class="jxr_linenumber" name="220" href="#220">220</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="221" href="#221">221</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> resizeQueues(Configuration conf) {
+<a class="jxr_linenumber" name="222" href="#222">222</a>     currentQueueLimit = conf.getInt(<span class="jxr_string">"hbase.ipc.server.max.callqueue.length"</span>, currentQueueLimit);
+<a class="jxr_linenumber" name="223" href="#223">223</a>   }
+<a class="jxr_linenumber" name="224" href="#224">224</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[11/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/testdevapidocs/src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html
index d9b56af..a654855 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.html
@@ -64,274 +64,313 @@
 <span class="sourceLineNo">056</span>import java.util.concurrent.CountDownLatch;<a name="line.56"></a>
 <span class="sourceLineNo">057</span><a name="line.57"></a>
 <span class="sourceLineNo">058</span>import static org.junit.Assert.assertEquals;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import static org.junit.Assert.assertNotEquals;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import static org.mockito.Matchers.any;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import static org.mockito.Matchers.anyObject;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import static org.mockito.Matchers.eq;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import static org.mockito.Mockito.doAnswer;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import static org.mockito.Mockito.mock;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import static org.mockito.Mockito.timeout;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import static org.mockito.Mockito.verify;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import static org.mockito.Mockito.when;<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>@Category({RPCTests.class, SmallTests.class})<a name="line.69"></a>
-<span class="sourceLineNo">070</span>public class TestSimpleRpcScheduler {<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().withTimeout(this.getClass()).<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      withLookingForStuckThread(true).build();<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private static final Log LOG = LogFactory.getLog(TestSimpleRpcScheduler.class);<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private final RpcScheduler.Context CONTEXT = new RpcScheduler.Context() {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    @Override<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    public InetSocketAddress getListenerAddress() {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      return InetSocketAddress.createUnresolved("127.0.0.1", 1000);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    }<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  };<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private Configuration conf;<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  @Before<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  public void setUp() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    conf = HBaseConfiguration.create();<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>  @Test<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  public void testBasic() throws IOException, InterruptedException {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    PriorityFunction qosFunction = mock(PriorityFunction.class);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    RpcScheduler scheduler = new SimpleRpcScheduler(<a name="line.91"></a>
-<span class="sourceLineNo">092</span>        conf, 10, 0, 0, qosFunction, 0);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    scheduler.init(CONTEXT);<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    scheduler.start();<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    CallRunner task = createMockTask();<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    task.setStatus(new MonitoredRPCHandlerImpl());<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    scheduler.dispatch(task);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    verify(task, timeout(1000)).run();<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    scheduler.stop();<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 testHandlerIsolation() throws IOException, InterruptedException {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    CallRunner generalTask = createMockTask();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    CallRunner priorityTask = createMockTask();<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    CallRunner replicationTask = createMockTask();<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    List&lt;CallRunner&gt; tasks = ImmutableList.of(<a name="line.107"></a>
-<span class="sourceLineNo">108</span>        generalTask,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        priorityTask,<a name="line.109"></a>
-<span class="sourceLineNo">110</span>        replicationTask);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    Map&lt;CallRunner, Integer&gt; qos = ImmutableMap.of(<a name="line.111"></a>
-<span class="sourceLineNo">112</span>        generalTask, 0,<a name="line.112"></a>
-<span class="sourceLineNo">113</span>        priorityTask, HConstants.HIGH_QOS + 1,<a name="line.113"></a>
-<span class="sourceLineNo">114</span>        replicationTask, HConstants.REPLICATION_QOS);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    PriorityFunction qosFunction = mock(PriorityFunction.class);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    final Map&lt;CallRunner, Thread&gt; handlerThreads = Maps.newHashMap();<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    final CountDownLatch countDownLatch = new CountDownLatch(tasks.size());<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    Answer&lt;Void&gt; answerToRun = new Answer&lt;Void&gt;() {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      @Override<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      public Void answer(InvocationOnMock invocationOnMock) throws Throwable {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        synchronized (handlerThreads) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          handlerThreads.put(<a name="line.122"></a>
-<span class="sourceLineNo">123</span>              (CallRunner) invocationOnMock.getMock(),<a name="line.123"></a>
-<span class="sourceLineNo">124</span>              Thread.currentThread());<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        }<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        countDownLatch.countDown();<a name="line.126"></a>
-<span class="sourceLineNo">127</span>        return null;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    };<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    for (CallRunner task : tasks) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      task.setStatus(new MonitoredRPCHandlerImpl());<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      doAnswer(answerToRun).when(task).run();<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>    RpcScheduler scheduler = new SimpleRpcScheduler(<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        conf, 1, 1 ,1, qosFunction, HConstants.HIGH_QOS);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    scheduler.init(CONTEXT);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    scheduler.start();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    for (CallRunner task : tasks) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      when(qosFunction.getPriority((RPCProtos.RequestHeader) anyObject(),<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        (Message) anyObject(), (User) anyObject()))<a name="line.141"></a>
-<span class="sourceLineNo">142</span>          .thenReturn(qos.get(task));<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      scheduler.dispatch(task);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    for (CallRunner task : tasks) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      verify(task, timeout(1000)).run();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    }<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    scheduler.stop();<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>    // Tests that these requests are handled by three distinct threads.<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    countDownLatch.await();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    assertEquals(3, ImmutableSet.copyOf(handlerThreads.values()).size());<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>  private CallRunner createMockTask() {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    Call call = mock(Call.class);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    CallRunner task = mock(CallRunner.class);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    when(task.getCall()).thenReturn(call);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    return task;<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>  @Test<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  public void testRpcScheduler() throws Exception {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    testRpcScheduler(SimpleRpcScheduler.CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    testRpcScheduler(SimpleRpcScheduler.CALL_QUEUE_TYPE_FIFO_CONF_VALUE);<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>  private void testRpcScheduler(final String queueType) throws Exception {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    Configuration schedConf = HBaseConfiguration.create();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    schedConf.set(SimpleRpcScheduler.CALL_QUEUE_TYPE_CONF_KEY, queueType);<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>    PriorityFunction priority = mock(PriorityFunction.class);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    when(priority.getPriority(any(RequestHeader.class),<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      any(Message.class), any(User.class)))<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      .thenReturn(HConstants.NORMAL_QOS);<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>    RpcScheduler scheduler = new SimpleRpcScheduler(schedConf, 1, 1, 1, priority,<a name="line.177"></a>
-<span class="sourceLineNo">178</span>                                                    HConstants.QOS_THRESHOLD);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    try {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      scheduler.start();<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>      CallRunner smallCallTask = mock(CallRunner.class);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      RpcServer.Call smallCall = mock(RpcServer.Call.class);<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      RequestHeader smallHead = RequestHeader.newBuilder().setCallId(1).build();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      when(smallCallTask.getCall()).thenReturn(smallCall);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      when(smallCall.getHeader()).thenReturn(smallHead);<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>      CallRunner largeCallTask = mock(CallRunner.class);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      RpcServer.Call largeCall = mock(RpcServer.Call.class);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      RequestHeader largeHead = RequestHeader.newBuilder().setCallId(50).build();<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      when(largeCallTask.getCall()).thenReturn(largeCall);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      when(largeCall.getHeader()).thenReturn(largeHead);<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>      CallRunner hugeCallTask = mock(CallRunner.class);<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      RpcServer.Call hugeCall = mock(RpcServer.Call.class);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      RequestHeader hugeHead = RequestHeader.newBuilder().setCallId(100).build();<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      when(hugeCallTask.getCall()).thenReturn(hugeCall);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      when(hugeCall.getHeader()).thenReturn(hugeHead);<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>      when(priority.getDeadline(eq(smallHead), any(Message.class))).thenReturn(0L);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      when(priority.getDeadline(eq(largeHead), any(Message.class))).thenReturn(50L);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      when(priority.getDeadline(eq(hugeHead), any(Message.class))).thenReturn(100L);<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>      final ArrayList&lt;Integer&gt; work = new ArrayList&lt;Integer&gt;();<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      doAnswerTaskExecution(smallCallTask, work, 10, 250);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      doAnswerTaskExecution(largeCallTask, work, 50, 250);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      doAnswerTaskExecution(hugeCallTask, work, 100, 250);<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>      scheduler.dispatch(smallCallTask);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      scheduler.dispatch(smallCallTask);<a name="line.210"></a>
+<span class="sourceLineNo">059</span>import static org.junit.Assert.assertFalse;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import static org.junit.Assert.assertNotEquals;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import static org.junit.Assert.assertTrue;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import static org.mockito.Matchers.any;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import static org.mockito.Matchers.anyObject;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import static org.mockito.Matchers.eq;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import static org.mockito.Mockito.doAnswer;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import static org.mockito.Mockito.mock;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import static org.mockito.Mockito.timeout;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import static org.mockito.Mockito.verify;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import static org.mockito.Mockito.when;<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>@Category({RPCTests.class, SmallTests.class})<a name="line.71"></a>
+<span class="sourceLineNo">072</span>public class TestSimpleRpcScheduler {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().withTimeout(this.getClass()).<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      withLookingForStuckThread(true).build();<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private static final Log LOG = LogFactory.getLog(TestSimpleRpcScheduler.class);<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private final RpcScheduler.Context CONTEXT = new RpcScheduler.Context() {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    @Override<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    public InetSocketAddress getListenerAddress() {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      return InetSocketAddress.createUnresolved("127.0.0.1", 1000);<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 Configuration conf;<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  @Before<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  public void setUp() {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    conf = HBaseConfiguration.create();<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  }<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Test<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public void testBasic() throws IOException, InterruptedException {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    PriorityFunction qosFunction = mock(PriorityFunction.class);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    RpcScheduler scheduler = new SimpleRpcScheduler(<a name="line.93"></a>
+<span class="sourceLineNo">094</span>        conf, 10, 0, 0, qosFunction, 0);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    scheduler.init(CONTEXT);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    scheduler.start();<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    CallRunner task = createMockTask();<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    task.setStatus(new MonitoredRPCHandlerImpl());<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    scheduler.dispatch(task);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    verify(task, timeout(1000)).run();<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    scheduler.stop();<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>  @Test<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  public void testHandlerIsolation() throws IOException, InterruptedException {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    CallRunner generalTask = createMockTask();<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    CallRunner priorityTask = createMockTask();<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    CallRunner replicationTask = createMockTask();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    List&lt;CallRunner&gt; tasks = ImmutableList.of(<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        generalTask,<a name="line.110"></a>
+<span class="sourceLineNo">111</span>        priorityTask,<a name="line.111"></a>
+<span class="sourceLineNo">112</span>        replicationTask);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    Map&lt;CallRunner, Integer&gt; qos = ImmutableMap.of(<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        generalTask, 0,<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        priorityTask, HConstants.HIGH_QOS + 1,<a name="line.115"></a>
+<span class="sourceLineNo">116</span>        replicationTask, HConstants.REPLICATION_QOS);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    PriorityFunction qosFunction = mock(PriorityFunction.class);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    final Map&lt;CallRunner, Thread&gt; handlerThreads = Maps.newHashMap();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    final CountDownLatch countDownLatch = new CountDownLatch(tasks.size());<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    Answer&lt;Void&gt; answerToRun = new Answer&lt;Void&gt;() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      @Override<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      public Void answer(InvocationOnMock invocationOnMock) throws Throwable {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        synchronized (handlerThreads) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>          handlerThreads.put(<a name="line.124"></a>
+<span class="sourceLineNo">125</span>              (CallRunner) invocationOnMock.getMock(),<a name="line.125"></a>
+<span class="sourceLineNo">126</span>              Thread.currentThread());<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        countDownLatch.countDown();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        return null;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    };<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    for (CallRunner task : tasks) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      task.setStatus(new MonitoredRPCHandlerImpl());<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      doAnswer(answerToRun).when(task).run();<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>    RpcScheduler scheduler = new SimpleRpcScheduler(<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        conf, 1, 1 ,1, qosFunction, HConstants.HIGH_QOS);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    scheduler.init(CONTEXT);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    scheduler.start();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    for (CallRunner task : tasks) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      when(qosFunction.getPriority((RPCProtos.RequestHeader) anyObject(),<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        (Message) anyObject(), (User) anyObject()))<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          .thenReturn(qos.get(task));<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      scheduler.dispatch(task);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    for (CallRunner task : tasks) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      verify(task, timeout(1000)).run();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    scheduler.stop();<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>    // Tests that these requests are handled by three distinct threads.<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    countDownLatch.await();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    assertEquals(3, ImmutableSet.copyOf(handlerThreads.values()).size());<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>  private CallRunner createMockTask() {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    Call call = mock(Call.class);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    CallRunner task = mock(CallRunner.class);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    when(task.getCall()).thenReturn(call);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    return task;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  @Test<a name="line.164"></a>
+<span class="sourceLineNo">165</span>  public void testRpcScheduler() throws Exception {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    testRpcScheduler(SimpleRpcScheduler.CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    testRpcScheduler(SimpleRpcScheduler.CALL_QUEUE_TYPE_FIFO_CONF_VALUE);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>  private void testRpcScheduler(final String queueType) throws Exception {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    Configuration schedConf = HBaseConfiguration.create();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    schedConf.set(SimpleRpcScheduler.CALL_QUEUE_TYPE_CONF_KEY, queueType);<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>    PriorityFunction priority = mock(PriorityFunction.class);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    when(priority.getPriority(any(RequestHeader.class),<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      any(Message.class), any(User.class)))<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      .thenReturn(HConstants.NORMAL_QOS);<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span>    RpcScheduler scheduler = new SimpleRpcScheduler(schedConf, 1, 1, 1, priority,<a name="line.179"></a>
+<span class="sourceLineNo">180</span>                                                    HConstants.QOS_THRESHOLD);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    try {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      scheduler.start();<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>      CallRunner smallCallTask = mock(CallRunner.class);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      RpcServer.Call smallCall = mock(RpcServer.Call.class);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      RequestHeader smallHead = RequestHeader.newBuilder().setCallId(1).build();<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      when(smallCallTask.getCall()).thenReturn(smallCall);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      when(smallCall.getHeader()).thenReturn(smallHead);<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>      CallRunner largeCallTask = mock(CallRunner.class);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      RpcServer.Call largeCall = mock(RpcServer.Call.class);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      RequestHeader largeHead = RequestHeader.newBuilder().setCallId(50).build();<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      when(largeCallTask.getCall()).thenReturn(largeCall);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      when(largeCall.getHeader()).thenReturn(largeHead);<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>      CallRunner hugeCallTask = mock(CallRunner.class);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      RpcServer.Call hugeCall = mock(RpcServer.Call.class);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      RequestHeader hugeHead = RequestHeader.newBuilder().setCallId(100).build();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      when(hugeCallTask.getCall()).thenReturn(hugeCall);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      when(hugeCall.getHeader()).thenReturn(hugeHead);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>      when(priority.getDeadline(eq(smallHead), any(Message.class))).thenReturn(0L);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      when(priority.getDeadline(eq(largeHead), any(Message.class))).thenReturn(50L);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      when(priority.getDeadline(eq(hugeHead), any(Message.class))).thenReturn(100L);<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>      final ArrayList&lt;Integer&gt; work = new ArrayList&lt;Integer&gt;();<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      doAnswerTaskExecution(smallCallTask, work, 10, 250);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      doAnswerTaskExecution(largeCallTask, work, 50, 250);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      doAnswerTaskExecution(hugeCallTask, work, 100, 250);<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
 <span class="sourceLineNo">211</span>      scheduler.dispatch(smallCallTask);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      scheduler.dispatch(hugeCallTask);<a name="line.212"></a>
+<span class="sourceLineNo">212</span>      scheduler.dispatch(smallCallTask);<a name="line.212"></a>
 <span class="sourceLineNo">213</span>      scheduler.dispatch(smallCallTask);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      scheduler.dispatch(largeCallTask);<a name="line.214"></a>
+<span class="sourceLineNo">214</span>      scheduler.dispatch(hugeCallTask);<a name="line.214"></a>
 <span class="sourceLineNo">215</span>      scheduler.dispatch(smallCallTask);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      scheduler.dispatch(smallCallTask);<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>      while (work.size() &lt; 8) {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>        Threads.sleepWithoutInterrupt(100);<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>      int seqSum = 0;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      int totalTime = 0;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      for (int i = 0; i &lt; work.size(); ++i) {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>        LOG.debug("Request i=" + i + " value=" + work.get(i));<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        seqSum += work.get(i);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>        totalTime += seqSum;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      LOG.debug("Total Time: " + totalTime);<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>      // -&gt; [small small small huge small large small small]<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      // -&gt; NO REORDER   [10 10 10 100 10 50 10 10] -&gt; 930 (FIFO Queue)<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      // -&gt; WITH REORDER [10 10 10 10 10 10 50 100] -&gt; 530 (Deadline Queue)<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      if (queueType.equals(SimpleRpcScheduler.CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE)) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        assertEquals(530, totalTime);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      } else /* if (queueType.equals(SimpleRpcScheduler.CALL_QUEUE_TYPE_FIFO_CONF_VALUE)) */ {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        assertEquals(930, totalTime);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      }<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    } finally {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      scheduler.stop();<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>  @Test<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public void testScanQueues() throws Exception {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    Configuration schedConf = HBaseConfiguration.create();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    schedConf.setFloat(SimpleRpcScheduler.CALL_QUEUE_HANDLER_FACTOR_CONF_KEY, 1.0f);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    schedConf.setFloat(SimpleRpcScheduler.CALL_QUEUE_READ_SHARE_CONF_KEY, 0.7f);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    schedConf.setFloat(SimpleRpcScheduler.CALL_QUEUE_SCAN_SHARE_CONF_KEY, 0.5f);<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>    PriorityFunction priority = mock(PriorityFunction.class);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    when(priority.getPriority(any(RequestHeader.class), any(Message.class),<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      any(User.class))).thenReturn(HConstants.NORMAL_QOS);<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>    RpcScheduler scheduler = new SimpleRpcScheduler(schedConf, 3, 1, 1, priority,<a name="line.255"></a>
-<span class="sourceLineNo">256</span>                                                    HConstants.QOS_THRESHOLD);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    try {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      scheduler.start();<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span>      CallRunner putCallTask = mock(CallRunner.class);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      RpcServer.Call putCall = mock(RpcServer.Call.class);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      putCall.param = RequestConverter.buildMutateRequest(<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          Bytes.toBytes("abc"), new Put(Bytes.toBytes("row")));<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      RequestHeader putHead = RequestHeader.newBuilder().setMethodName("mutate").build();<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      when(putCallTask.getCall()).thenReturn(putCall);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      when(putCall.getHeader()).thenReturn(putHead);<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>      CallRunner getCallTask = mock(CallRunner.class);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      RpcServer.Call getCall = mock(RpcServer.Call.class);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      RequestHeader getHead = RequestHeader.newBuilder().setMethodName("get").build();<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      when(getCallTask.getCall()).thenReturn(getCall);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      when(getCall.getHeader()).thenReturn(getHead);<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>      CallRunner scanCallTask = mock(CallRunner.class);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      RpcServer.Call scanCall = mock(RpcServer.Call.class);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      scanCall.param = ScanRequest.newBuilder().setScannerId(1).build();<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      RequestHeader scanHead = RequestHeader.newBuilder().setMethodName("scan").build();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      when(scanCallTask.getCall()).thenReturn(scanCall);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      when(scanCall.getHeader()).thenReturn(scanHead);<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>      ArrayList&lt;Integer&gt; work = new ArrayList&lt;Integer&gt;();<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      doAnswerTaskExecution(putCallTask, work, 1, 1000);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      doAnswerTaskExecution(getCallTask, work, 2, 1000);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      doAnswerTaskExecution(scanCallTask, work, 3, 1000);<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>      // There are 3 queues: [puts], [gets], [scans]<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      // so the calls will be interleaved<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      scheduler.dispatch(putCallTask);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      scheduler.dispatch(putCallTask);<a name="line.289"></a>
+<span class="sourceLineNo">216</span>      scheduler.dispatch(largeCallTask);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      scheduler.dispatch(smallCallTask);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      scheduler.dispatch(smallCallTask);<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>      while (work.size() &lt; 8) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        Threads.sleepWithoutInterrupt(100);<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>      int seqSum = 0;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      int totalTime = 0;<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      for (int i = 0; i &lt; work.size(); ++i) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        LOG.debug("Request i=" + i + " value=" + work.get(i));<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        seqSum += work.get(i);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        totalTime += seqSum;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      }<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      LOG.debug("Total Time: " + totalTime);<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>      // -&gt; [small small small huge small large small small]<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      // -&gt; NO REORDER   [10 10 10 100 10 50 10 10] -&gt; 930 (FIFO Queue)<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      // -&gt; WITH REORDER [10 10 10 10 10 10 50 100] -&gt; 530 (Deadline Queue)<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      if (queueType.equals(SimpleRpcScheduler.CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE)) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        assertEquals(530, totalTime);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      } else /* if (queueType.equals(SimpleRpcScheduler.CALL_QUEUE_TYPE_FIFO_CONF_VALUE)) */ {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        assertEquals(930, totalTime);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      }<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    } finally {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      scheduler.stop();<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  }<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>  @Test<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  public void testScanQueues() throws Exception {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    Configuration schedConf = HBaseConfiguration.create();<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    schedConf.setFloat(SimpleRpcScheduler.CALL_QUEUE_HANDLER_FACTOR_CONF_KEY, 1.0f);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    schedConf.setFloat(SimpleRpcScheduler.CALL_QUEUE_READ_SHARE_CONF_KEY, 0.7f);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    schedConf.setFloat(SimpleRpcScheduler.CALL_QUEUE_SCAN_SHARE_CONF_KEY, 0.5f);<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>    PriorityFunction priority = mock(PriorityFunction.class);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    when(priority.getPriority(any(RequestHeader.class), any(Message.class),<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      any(User.class))).thenReturn(HConstants.NORMAL_QOS);<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    RpcScheduler scheduler = new SimpleRpcScheduler(schedConf, 3, 1, 1, priority,<a name="line.257"></a>
+<span class="sourceLineNo">258</span>                                                    HConstants.QOS_THRESHOLD);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    try {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      scheduler.start();<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>      CallRunner putCallTask = mock(CallRunner.class);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      RpcServer.Call putCall = mock(RpcServer.Call.class);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      putCall.param = RequestConverter.buildMutateRequest(<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          Bytes.toBytes("abc"), new Put(Bytes.toBytes("row")));<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      RequestHeader putHead = RequestHeader.newBuilder().setMethodName("mutate").build();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      when(putCallTask.getCall()).thenReturn(putCall);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      when(putCall.getHeader()).thenReturn(putHead);<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>      CallRunner getCallTask = mock(CallRunner.class);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      RpcServer.Call getCall = mock(RpcServer.Call.class);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      RequestHeader getHead = RequestHeader.newBuilder().setMethodName("get").build();<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      when(getCallTask.getCall()).thenReturn(getCall);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      when(getCall.getHeader()).thenReturn(getHead);<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>      CallRunner scanCallTask = mock(CallRunner.class);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      RpcServer.Call scanCall = mock(RpcServer.Call.class);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      scanCall.param = ScanRequest.newBuilder().setScannerId(1).build();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      RequestHeader scanHead = RequestHeader.newBuilder().setMethodName("scan").build();<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      when(scanCallTask.getCall()).thenReturn(scanCall);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      when(scanCall.getHeader()).thenReturn(scanHead);<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>      ArrayList&lt;Integer&gt; work = new ArrayList&lt;Integer&gt;();<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      doAnswerTaskExecution(putCallTask, work, 1, 1000);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      doAnswerTaskExecution(getCallTask, work, 2, 1000);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      doAnswerTaskExecution(scanCallTask, work, 3, 1000);<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>      // There are 3 queues: [puts], [gets], [scans]<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      // so the calls will be interleaved<a name="line.289"></a>
 <span class="sourceLineNo">290</span>      scheduler.dispatch(putCallTask);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      scheduler.dispatch(getCallTask);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      scheduler.dispatch(getCallTask);<a name="line.292"></a>
+<span class="sourceLineNo">291</span>      scheduler.dispatch(putCallTask);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      scheduler.dispatch(putCallTask);<a name="line.292"></a>
 <span class="sourceLineNo">293</span>      scheduler.dispatch(getCallTask);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      scheduler.dispatch(scanCallTask);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      scheduler.dispatch(scanCallTask);<a name="line.295"></a>
+<span class="sourceLineNo">294</span>      scheduler.dispatch(getCallTask);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      scheduler.dispatch(getCallTask);<a name="line.295"></a>
 <span class="sourceLineNo">296</span>      scheduler.dispatch(scanCallTask);<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>      while (work.size() &lt; 6) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        Threads.sleepWithoutInterrupt(100);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>      for (int i = 0; i &lt; work.size() - 2; i += 3) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        assertNotEquals(work.get(i + 0), work.get(i + 1));<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        assertNotEquals(work.get(i + 0), work.get(i + 2));<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        assertNotEquals(work.get(i + 1), work.get(i + 2));<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    } finally {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      scheduler.stop();<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    }<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  }<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  private void doAnswerTaskExecution(final CallRunner callTask,<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      final ArrayList&lt;Integer&gt; results, final int value, final int sleepInterval) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    callTask.setStatus(new MonitoredRPCHandlerImpl());<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    doAnswer(new Answer&lt;Object&gt;() {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      public Object answer(InvocationOnMock invocation) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>        synchronized (results) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>          results.add(value);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        }<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        Threads.sleepWithoutInterrupt(sleepInterval);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        return null;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }).when(callTask).run();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>}<a name="line.326"></a>
+<span class="sourceLineNo">297</span>      scheduler.dispatch(scanCallTask);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      scheduler.dispatch(scanCallTask);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>      while (work.size() &lt; 6) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        Threads.sleepWithoutInterrupt(100);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      }<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>      for (int i = 0; i &lt; work.size() - 2; i += 3) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        assertNotEquals(work.get(i + 0), work.get(i + 1));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        assertNotEquals(work.get(i + 0), work.get(i + 2));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        assertNotEquals(work.get(i + 1), work.get(i + 2));<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      }<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    } finally {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      scheduler.stop();<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>  private void doAnswerTaskExecution(final CallRunner callTask,<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      final ArrayList&lt;Integer&gt; results, final int value, final int sleepInterval) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    callTask.setStatus(new MonitoredRPCHandlerImpl());<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    doAnswer(new Answer&lt;Object&gt;() {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      public Object answer(InvocationOnMock invocation) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        synchronized (results) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>          results.add(value);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        }<a name="line.322"></a>
+<span class="sourceLineNo">323</span>        Threads.sleepWithoutInterrupt(sleepInterval);<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>    }).when(callTask).run();<a name="line.326"></a>
+<span class="sourceLineNo">327</span>  }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>  @Test<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  public void testSoftAndHardQueueLimits() throws Exception {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    Configuration schedConf = HBaseConfiguration.create();<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>    schedConf.setInt(HConstants.REGION_SERVER_HANDLER_COUNT, 0);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    schedConf.setInt("hbase.ipc.server.max.callqueue.length", 5);<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>    PriorityFunction priority = mock(PriorityFunction.class);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    when(priority.getPriority(any(RequestHeader.class), any(Message.class),<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      any(User.class))).thenReturn(HConstants.NORMAL_QOS);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    SimpleRpcScheduler scheduler = new SimpleRpcScheduler(schedConf, 0, 0, 0, priority,<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      HConstants.QOS_THRESHOLD);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    try {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      scheduler.start();<a name="line.342"></a>
+<span class="sourceLineNo">343</span><a name="line.343"></a>
+<span class="sourceLineNo">344</span>      CallRunner putCallTask = mock(CallRunner.class);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      RpcServer.Call putCall = mock(RpcServer.Call.class);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      putCall.param = RequestConverter.buildMutateRequest(<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        Bytes.toBytes("abc"), new Put(Bytes.toBytes("row")));<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      RequestHeader putHead = RequestHeader.newBuilder().setMethodName("mutate").build();<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      when(putCallTask.getCall()).thenReturn(putCall);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      when(putCall.getHeader()).thenReturn(putHead);<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>      assertTrue(scheduler.dispatch(putCallTask));<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>      schedConf.setInt("hbase.ipc.server.max.callqueue.length", 0);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      scheduler.onConfigurationChange(schedConf);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      assertFalse(scheduler.dispatch(putCallTask));<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>      schedConf.setInt("hbase.ipc.server.max.callqueue.length", 1);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      scheduler.onConfigurationChange(schedConf);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      assertTrue(scheduler.dispatch(putCallTask));<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    } finally {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      scheduler.stop();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    }<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>}<a name="line.365"></a>
 
 
 


[20/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Listener.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Listener.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Listener.html
index e5d9af6..ea9ea4d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Listener.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Listener.html
@@ -2107,556 +2107,559 @@
 <span class="sourceLineNo">2099</span>  @Override<a name="line.2099"></a>
 <span class="sourceLineNo">2100</span>  public void onConfigurationChange(Configuration newConf) {<a name="line.2100"></a>
 <span class="sourceLineNo">2101</span>    initReconfigurable(newConf);<a name="line.2101"></a>
-<span class="sourceLineNo">2102</span>  }<a name="line.2102"></a>
-<span class="sourceLineNo">2103</span><a name="line.2103"></a>
-<span class="sourceLineNo">2104</span>  private void initReconfigurable(Configuration confToLoad) {<a name="line.2104"></a>
-<span class="sourceLineNo">2105</span>    this.allowFallbackToSimpleAuth = confToLoad.getBoolean(FALLBACK_TO_INSECURE_CLIENT_AUTH, false);<a name="line.2105"></a>
-<span class="sourceLineNo">2106</span>    if (isSecurityEnabled &amp;&amp; allowFallbackToSimpleAuth) {<a name="line.2106"></a>
-<span class="sourceLineNo">2107</span>      LOG.warn("********* WARNING! *********");<a name="line.2107"></a>
-<span class="sourceLineNo">2108</span>      LOG.warn("This server is configured to allow connections from INSECURE clients");<a name="line.2108"></a>
-<span class="sourceLineNo">2109</span>      LOG.warn("(" + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = true).");<a name="line.2109"></a>
-<span class="sourceLineNo">2110</span>      LOG.warn("While this option is enabled, client identities cannot be secured, and user");<a name="line.2110"></a>
-<span class="sourceLineNo">2111</span>      LOG.warn("impersonation is possible!");<a name="line.2111"></a>
-<span class="sourceLineNo">2112</span>      LOG.warn("For secure operation, please disable SIMPLE authentication as soon as possible,");<a name="line.2112"></a>
-<span class="sourceLineNo">2113</span>      LOG.warn("by setting " + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = false in hbase-site.xml");<a name="line.2113"></a>
-<span class="sourceLineNo">2114</span>      LOG.warn("****************************");<a name="line.2114"></a>
-<span class="sourceLineNo">2115</span>    }<a name="line.2115"></a>
-<span class="sourceLineNo">2116</span>  }<a name="line.2116"></a>
-<span class="sourceLineNo">2117</span><a name="line.2117"></a>
-<span class="sourceLineNo">2118</span>  /**<a name="line.2118"></a>
-<span class="sourceLineNo">2119</span>   * Subclasses of HBaseServer can override this to provide their own<a name="line.2119"></a>
-<span class="sourceLineNo">2120</span>   * Connection implementations.<a name="line.2120"></a>
-<span class="sourceLineNo">2121</span>   */<a name="line.2121"></a>
-<span class="sourceLineNo">2122</span>  protected Connection getConnection(SocketChannel channel, long time) {<a name="line.2122"></a>
-<span class="sourceLineNo">2123</span>    return new Connection(channel, time);<a name="line.2123"></a>
-<span class="sourceLineNo">2124</span>  }<a name="line.2124"></a>
-<span class="sourceLineNo">2125</span><a name="line.2125"></a>
-<span class="sourceLineNo">2126</span>  /**<a name="line.2126"></a>
-<span class="sourceLineNo">2127</span>   * Setup response for the RPC Call.<a name="line.2127"></a>
-<span class="sourceLineNo">2128</span>   *<a name="line.2128"></a>
-<span class="sourceLineNo">2129</span>   * @param response buffer to serialize the response into<a name="line.2129"></a>
-<span class="sourceLineNo">2130</span>   * @param call {@link Call} to which we are setting up the response<a name="line.2130"></a>
-<span class="sourceLineNo">2131</span>   * @param error error message, if the call failed<a name="line.2131"></a>
-<span class="sourceLineNo">2132</span>   * @throws IOException<a name="line.2132"></a>
-<span class="sourceLineNo">2133</span>   */<a name="line.2133"></a>
-<span class="sourceLineNo">2134</span>  private void setupResponse(ByteArrayOutputStream response, Call call, Throwable t, String error)<a name="line.2134"></a>
-<span class="sourceLineNo">2135</span>  throws IOException {<a name="line.2135"></a>
-<span class="sourceLineNo">2136</span>    if (response != null) response.reset();<a name="line.2136"></a>
-<span class="sourceLineNo">2137</span>    call.setResponse(null, null, t, error);<a name="line.2137"></a>
-<span class="sourceLineNo">2138</span>  }<a name="line.2138"></a>
-<span class="sourceLineNo">2139</span><a name="line.2139"></a>
-<span class="sourceLineNo">2140</span>  protected void closeConnection(Connection connection) {<a name="line.2140"></a>
-<span class="sourceLineNo">2141</span>    synchronized (connectionList) {<a name="line.2141"></a>
-<span class="sourceLineNo">2142</span>      if (connectionList.remove(connection)) {<a name="line.2142"></a>
-<span class="sourceLineNo">2143</span>        numConnections--;<a name="line.2143"></a>
-<span class="sourceLineNo">2144</span>      }<a name="line.2144"></a>
-<span class="sourceLineNo">2145</span>    }<a name="line.2145"></a>
-<span class="sourceLineNo">2146</span>    connection.close();<a name="line.2146"></a>
-<span class="sourceLineNo">2147</span>  }<a name="line.2147"></a>
-<span class="sourceLineNo">2148</span><a name="line.2148"></a>
-<span class="sourceLineNo">2149</span>  Configuration getConf() {<a name="line.2149"></a>
-<span class="sourceLineNo">2150</span>    return conf;<a name="line.2150"></a>
-<span class="sourceLineNo">2151</span>  }<a name="line.2151"></a>
-<span class="sourceLineNo">2152</span><a name="line.2152"></a>
-<span class="sourceLineNo">2153</span>  /** Sets the socket buffer size used for responding to RPCs.<a name="line.2153"></a>
-<span class="sourceLineNo">2154</span>   * @param size send size<a name="line.2154"></a>
-<span class="sourceLineNo">2155</span>   */<a name="line.2155"></a>
-<span class="sourceLineNo">2156</span>  @Override<a name="line.2156"></a>
-<span class="sourceLineNo">2157</span>  public void setSocketSendBufSize(int size) { this.socketSendBufferSize = size; }<a name="line.2157"></a>
-<span class="sourceLineNo">2158</span><a name="line.2158"></a>
+<span class="sourceLineNo">2102</span>    if (scheduler instanceof ConfigurationObserver) {<a name="line.2102"></a>
+<span class="sourceLineNo">2103</span>      ((ConfigurationObserver)scheduler).onConfigurationChange(newConf);<a name="line.2103"></a>
+<span class="sourceLineNo">2104</span>    }<a name="line.2104"></a>
+<span class="sourceLineNo">2105</span>  }<a name="line.2105"></a>
+<span class="sourceLineNo">2106</span><a name="line.2106"></a>
+<span class="sourceLineNo">2107</span>  private void initReconfigurable(Configuration confToLoad) {<a name="line.2107"></a>
+<span class="sourceLineNo">2108</span>    this.allowFallbackToSimpleAuth = confToLoad.getBoolean(FALLBACK_TO_INSECURE_CLIENT_AUTH, false);<a name="line.2108"></a>
+<span class="sourceLineNo">2109</span>    if (isSecurityEnabled &amp;&amp; allowFallbackToSimpleAuth) {<a name="line.2109"></a>
+<span class="sourceLineNo">2110</span>      LOG.warn("********* WARNING! *********");<a name="line.2110"></a>
+<span class="sourceLineNo">2111</span>      LOG.warn("This server is configured to allow connections from INSECURE clients");<a name="line.2111"></a>
+<span class="sourceLineNo">2112</span>      LOG.warn("(" + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = true).");<a name="line.2112"></a>
+<span class="sourceLineNo">2113</span>      LOG.warn("While this option is enabled, client identities cannot be secured, and user");<a name="line.2113"></a>
+<span class="sourceLineNo">2114</span>      LOG.warn("impersonation is possible!");<a name="line.2114"></a>
+<span class="sourceLineNo">2115</span>      LOG.warn("For secure operation, please disable SIMPLE authentication as soon as possible,");<a name="line.2115"></a>
+<span class="sourceLineNo">2116</span>      LOG.warn("by setting " + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = false in hbase-site.xml");<a name="line.2116"></a>
+<span class="sourceLineNo">2117</span>      LOG.warn("****************************");<a name="line.2117"></a>
+<span class="sourceLineNo">2118</span>    }<a name="line.2118"></a>
+<span class="sourceLineNo">2119</span>  }<a name="line.2119"></a>
+<span class="sourceLineNo">2120</span><a name="line.2120"></a>
+<span class="sourceLineNo">2121</span>  /**<a name="line.2121"></a>
+<span class="sourceLineNo">2122</span>   * Subclasses of HBaseServer can override this to provide their own<a name="line.2122"></a>
+<span class="sourceLineNo">2123</span>   * Connection implementations.<a name="line.2123"></a>
+<span class="sourceLineNo">2124</span>   */<a name="line.2124"></a>
+<span class="sourceLineNo">2125</span>  protected Connection getConnection(SocketChannel channel, long time) {<a name="line.2125"></a>
+<span class="sourceLineNo">2126</span>    return new Connection(channel, time);<a name="line.2126"></a>
+<span class="sourceLineNo">2127</span>  }<a name="line.2127"></a>
+<span class="sourceLineNo">2128</span><a name="line.2128"></a>
+<span class="sourceLineNo">2129</span>  /**<a name="line.2129"></a>
+<span class="sourceLineNo">2130</span>   * Setup response for the RPC Call.<a name="line.2130"></a>
+<span class="sourceLineNo">2131</span>   *<a name="line.2131"></a>
+<span class="sourceLineNo">2132</span>   * @param response buffer to serialize the response into<a name="line.2132"></a>
+<span class="sourceLineNo">2133</span>   * @param call {@link Call} to which we are setting up the response<a name="line.2133"></a>
+<span class="sourceLineNo">2134</span>   * @param error error message, if the call failed<a name="line.2134"></a>
+<span class="sourceLineNo">2135</span>   * @throws IOException<a name="line.2135"></a>
+<span class="sourceLineNo">2136</span>   */<a name="line.2136"></a>
+<span class="sourceLineNo">2137</span>  private void setupResponse(ByteArrayOutputStream response, Call call, Throwable t, String error)<a name="line.2137"></a>
+<span class="sourceLineNo">2138</span>  throws IOException {<a name="line.2138"></a>
+<span class="sourceLineNo">2139</span>    if (response != null) response.reset();<a name="line.2139"></a>
+<span class="sourceLineNo">2140</span>    call.setResponse(null, null, t, error);<a name="line.2140"></a>
+<span class="sourceLineNo">2141</span>  }<a name="line.2141"></a>
+<span class="sourceLineNo">2142</span><a name="line.2142"></a>
+<span class="sourceLineNo">2143</span>  protected void closeConnection(Connection connection) {<a name="line.2143"></a>
+<span class="sourceLineNo">2144</span>    synchronized (connectionList) {<a name="line.2144"></a>
+<span class="sourceLineNo">2145</span>      if (connectionList.remove(connection)) {<a name="line.2145"></a>
+<span class="sourceLineNo">2146</span>        numConnections--;<a name="line.2146"></a>
+<span class="sourceLineNo">2147</span>      }<a name="line.2147"></a>
+<span class="sourceLineNo">2148</span>    }<a name="line.2148"></a>
+<span class="sourceLineNo">2149</span>    connection.close();<a name="line.2149"></a>
+<span class="sourceLineNo">2150</span>  }<a name="line.2150"></a>
+<span class="sourceLineNo">2151</span><a name="line.2151"></a>
+<span class="sourceLineNo">2152</span>  Configuration getConf() {<a name="line.2152"></a>
+<span class="sourceLineNo">2153</span>    return conf;<a name="line.2153"></a>
+<span class="sourceLineNo">2154</span>  }<a name="line.2154"></a>
+<span class="sourceLineNo">2155</span><a name="line.2155"></a>
+<span class="sourceLineNo">2156</span>  /** Sets the socket buffer size used for responding to RPCs.<a name="line.2156"></a>
+<span class="sourceLineNo">2157</span>   * @param size send size<a name="line.2157"></a>
+<span class="sourceLineNo">2158</span>   */<a name="line.2158"></a>
 <span class="sourceLineNo">2159</span>  @Override<a name="line.2159"></a>
-<span class="sourceLineNo">2160</span>  public boolean isStarted() {<a name="line.2160"></a>
-<span class="sourceLineNo">2161</span>    return this.started;<a name="line.2161"></a>
-<span class="sourceLineNo">2162</span>  }<a name="line.2162"></a>
-<span class="sourceLineNo">2163</span><a name="line.2163"></a>
-<span class="sourceLineNo">2164</span>  /** Starts the service.  Must be called before any calls will be handled. */<a name="line.2164"></a>
-<span class="sourceLineNo">2165</span>  @Override<a name="line.2165"></a>
-<span class="sourceLineNo">2166</span>  public synchronized void start() {<a name="line.2166"></a>
-<span class="sourceLineNo">2167</span>    if (started) return;<a name="line.2167"></a>
-<span class="sourceLineNo">2168</span>    authTokenSecretMgr = createSecretManager();<a name="line.2168"></a>
-<span class="sourceLineNo">2169</span>    if (authTokenSecretMgr != null) {<a name="line.2169"></a>
-<span class="sourceLineNo">2170</span>      setSecretManager(authTokenSecretMgr);<a name="line.2170"></a>
-<span class="sourceLineNo">2171</span>      authTokenSecretMgr.start();<a name="line.2171"></a>
-<span class="sourceLineNo">2172</span>    }<a name="line.2172"></a>
-<span class="sourceLineNo">2173</span>    this.authManager = new ServiceAuthorizationManager();<a name="line.2173"></a>
-<span class="sourceLineNo">2174</span>    HBasePolicyProvider.init(conf, authManager);<a name="line.2174"></a>
-<span class="sourceLineNo">2175</span>    responder.start();<a name="line.2175"></a>
-<span class="sourceLineNo">2176</span>    listener.start();<a name="line.2176"></a>
-<span class="sourceLineNo">2177</span>    scheduler.start();<a name="line.2177"></a>
-<span class="sourceLineNo">2178</span>    started = true;<a name="line.2178"></a>
-<span class="sourceLineNo">2179</span>  }<a name="line.2179"></a>
-<span class="sourceLineNo">2180</span><a name="line.2180"></a>
-<span class="sourceLineNo">2181</span>  @Override<a name="line.2181"></a>
-<span class="sourceLineNo">2182</span>  public synchronized void refreshAuthManager(PolicyProvider pp) {<a name="line.2182"></a>
-<span class="sourceLineNo">2183</span>    // Ignore warnings that this should be accessed in a static way instead of via an instance;<a name="line.2183"></a>
-<span class="sourceLineNo">2184</span>    // it'll break if you go via static route.<a name="line.2184"></a>
-<span class="sourceLineNo">2185</span>    this.authManager.refresh(this.conf, pp);<a name="line.2185"></a>
-<span class="sourceLineNo">2186</span>  }<a name="line.2186"></a>
-<span class="sourceLineNo">2187</span><a name="line.2187"></a>
-<span class="sourceLineNo">2188</span>  private AuthenticationTokenSecretManager createSecretManager() {<a name="line.2188"></a>
-<span class="sourceLineNo">2189</span>    if (!isSecurityEnabled) return null;<a name="line.2189"></a>
-<span class="sourceLineNo">2190</span>    if (server == null) return null;<a name="line.2190"></a>
-<span class="sourceLineNo">2191</span>    Configuration conf = server.getConfiguration();<a name="line.2191"></a>
-<span class="sourceLineNo">2192</span>    long keyUpdateInterval =<a name="line.2192"></a>
-<span class="sourceLineNo">2193</span>        conf.getLong("hbase.auth.key.update.interval", 24*60*60*1000);<a name="line.2193"></a>
-<span class="sourceLineNo">2194</span>    long maxAge =<a name="line.2194"></a>
-<span class="sourceLineNo">2195</span>        conf.getLong("hbase.auth.token.max.lifetime", 7*24*60*60*1000);<a name="line.2195"></a>
-<span class="sourceLineNo">2196</span>    return new AuthenticationTokenSecretManager(conf, server.getZooKeeper(),<a name="line.2196"></a>
-<span class="sourceLineNo">2197</span>        server.getServerName().toString(), keyUpdateInterval, maxAge);<a name="line.2197"></a>
-<span class="sourceLineNo">2198</span>  }<a name="line.2198"></a>
-<span class="sourceLineNo">2199</span><a name="line.2199"></a>
-<span class="sourceLineNo">2200</span>  public SecretManager&lt;? extends TokenIdentifier&gt; getSecretManager() {<a name="line.2200"></a>
-<span class="sourceLineNo">2201</span>    return this.secretManager;<a name="line.2201"></a>
-<span class="sourceLineNo">2202</span>  }<a name="line.2202"></a>
-<span class="sourceLineNo">2203</span><a name="line.2203"></a>
-<span class="sourceLineNo">2204</span>  @SuppressWarnings("unchecked")<a name="line.2204"></a>
-<span class="sourceLineNo">2205</span>  public void setSecretManager(SecretManager&lt;? extends TokenIdentifier&gt; secretManager) {<a name="line.2205"></a>
-<span class="sourceLineNo">2206</span>    this.secretManager = (SecretManager&lt;TokenIdentifier&gt;) secretManager;<a name="line.2206"></a>
-<span class="sourceLineNo">2207</span>  }<a name="line.2207"></a>
-<span class="sourceLineNo">2208</span><a name="line.2208"></a>
-<span class="sourceLineNo">2209</span>  /**<a name="line.2209"></a>
-<span class="sourceLineNo">2210</span>   * This is a server side method, which is invoked over RPC. On success<a name="line.2210"></a>
-<span class="sourceLineNo">2211</span>   * the return response has protobuf response payload. On failure, the<a name="line.2211"></a>
-<span class="sourceLineNo">2212</span>   * exception name and the stack trace are returned in the protobuf response.<a name="line.2212"></a>
-<span class="sourceLineNo">2213</span>   */<a name="line.2213"></a>
-<span class="sourceLineNo">2214</span>  @Override<a name="line.2214"></a>
-<span class="sourceLineNo">2215</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,<a name="line.2215"></a>
-<span class="sourceLineNo">2216</span>      Message param, CellScanner cellScanner, long receiveTime, MonitoredRPCHandler status)<a name="line.2216"></a>
-<span class="sourceLineNo">2217</span>  throws IOException {<a name="line.2217"></a>
-<span class="sourceLineNo">2218</span>    try {<a name="line.2218"></a>
-<span class="sourceLineNo">2219</span>      status.setRPC(md.getName(), new Object[]{param}, receiveTime);<a name="line.2219"></a>
-<span class="sourceLineNo">2220</span>      // TODO: Review after we add in encoded data blocks.<a name="line.2220"></a>
-<span class="sourceLineNo">2221</span>      status.setRPCPacket(param);<a name="line.2221"></a>
-<span class="sourceLineNo">2222</span>      status.resume("Servicing call");<a name="line.2222"></a>
-<span class="sourceLineNo">2223</span>      //get an instance of the method arg type<a name="line.2223"></a>
-<span class="sourceLineNo">2224</span>      long startTime = System.currentTimeMillis();<a name="line.2224"></a>
-<span class="sourceLineNo">2225</span>      PayloadCarryingRpcController controller = new PayloadCarryingRpcController(cellScanner);<a name="line.2225"></a>
-<span class="sourceLineNo">2226</span>      Message result = service.callBlockingMethod(md, controller, param);<a name="line.2226"></a>
-<span class="sourceLineNo">2227</span>      long endTime = System.currentTimeMillis();<a name="line.2227"></a>
-<span class="sourceLineNo">2228</span>      int processingTime = (int) (endTime - startTime);<a name="line.2228"></a>
-<span class="sourceLineNo">2229</span>      int qTime = (int) (startTime - receiveTime);<a name="line.2229"></a>
-<span class="sourceLineNo">2230</span>      int totalTime = (int) (endTime - receiveTime);<a name="line.2230"></a>
-<span class="sourceLineNo">2231</span>      if (LOG.isTraceEnabled()) {<a name="line.2231"></a>
-<span class="sourceLineNo">2232</span>        LOG.trace(CurCall.get().toString() +<a name="line.2232"></a>
-<span class="sourceLineNo">2233</span>            ", response " + TextFormat.shortDebugString(result) +<a name="line.2233"></a>
-<span class="sourceLineNo">2234</span>            " queueTime: " + qTime +<a name="line.2234"></a>
-<span class="sourceLineNo">2235</span>            " processingTime: " + processingTime +<a name="line.2235"></a>
-<span class="sourceLineNo">2236</span>            " totalTime: " + totalTime);<a name="line.2236"></a>
-<span class="sourceLineNo">2237</span>      }<a name="line.2237"></a>
-<span class="sourceLineNo">2238</span>      long requestSize = param.getSerializedSize();<a name="line.2238"></a>
-<span class="sourceLineNo">2239</span>      long responseSize = result.getSerializedSize();<a name="line.2239"></a>
-<span class="sourceLineNo">2240</span>      metrics.dequeuedCall(qTime);<a name="line.2240"></a>
-<span class="sourceLineNo">2241</span>      metrics.processedCall(processingTime);<a name="line.2241"></a>
-<span class="sourceLineNo">2242</span>      metrics.totalCall(totalTime);<a name="line.2242"></a>
-<span class="sourceLineNo">2243</span>      metrics.receivedRequest(requestSize);<a name="line.2243"></a>
-<span class="sourceLineNo">2244</span>      metrics.sentResponse(responseSize);<a name="line.2244"></a>
-<span class="sourceLineNo">2245</span>      // log any RPC responses that are slower than the configured warn<a name="line.2245"></a>
-<span class="sourceLineNo">2246</span>      // response time or larger than configured warning size<a name="line.2246"></a>
-<span class="sourceLineNo">2247</span>      boolean tooSlow = (processingTime &gt; warnResponseTime &amp;&amp; warnResponseTime &gt; -1);<a name="line.2247"></a>
-<span class="sourceLineNo">2248</span>      boolean tooLarge = (responseSize &gt; warnResponseSize &amp;&amp; warnResponseSize &gt; -1);<a name="line.2248"></a>
-<span class="sourceLineNo">2249</span>      if (tooSlow || tooLarge) {<a name="line.2249"></a>
-<span class="sourceLineNo">2250</span>        // when tagging, we let TooLarge trump TooSmall to keep output simple<a name="line.2250"></a>
-<span class="sourceLineNo">2251</span>        // note that large responses will often also be slow.<a name="line.2251"></a>
-<span class="sourceLineNo">2252</span>        logResponse(new Object[]{param},<a name="line.2252"></a>
-<span class="sourceLineNo">2253</span>            md.getName(), md.getName() + "(" + param.getClass().getName() + ")",<a name="line.2253"></a>
-<span class="sourceLineNo">2254</span>            (tooLarge ? "TooLarge" : "TooSlow"),<a name="line.2254"></a>
-<span class="sourceLineNo">2255</span>            status.getClient(), startTime, processingTime, qTime,<a name="line.2255"></a>
-<span class="sourceLineNo">2256</span>            responseSize);<a name="line.2256"></a>
-<span class="sourceLineNo">2257</span>      }<a name="line.2257"></a>
-<span class="sourceLineNo">2258</span>      return new Pair&lt;Message, CellScanner&gt;(result, controller.cellScanner());<a name="line.2258"></a>
-<span class="sourceLineNo">2259</span>    } catch (Throwable e) {<a name="line.2259"></a>
-<span class="sourceLineNo">2260</span>      // The above callBlockingMethod will always return a SE.  Strip the SE wrapper before<a name="line.2260"></a>
-<span class="sourceLineNo">2261</span>      // putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't<a name="line.2261"></a>
-<span class="sourceLineNo">2262</span>      // need to pass it over the wire.<a name="line.2262"></a>
-<span class="sourceLineNo">2263</span>      if (e instanceof ServiceException) e = e.getCause();<a name="line.2263"></a>
-<span class="sourceLineNo">2264</span><a name="line.2264"></a>
-<span class="sourceLineNo">2265</span>      // increment the number of requests that were exceptions.<a name="line.2265"></a>
-<span class="sourceLineNo">2266</span>      metrics.exception(e);<a name="line.2266"></a>
+<span class="sourceLineNo">2160</span>  public void setSocketSendBufSize(int size) { this.socketSendBufferSize = size; }<a name="line.2160"></a>
+<span class="sourceLineNo">2161</span><a name="line.2161"></a>
+<span class="sourceLineNo">2162</span>  @Override<a name="line.2162"></a>
+<span class="sourceLineNo">2163</span>  public boolean isStarted() {<a name="line.2163"></a>
+<span class="sourceLineNo">2164</span>    return this.started;<a name="line.2164"></a>
+<span class="sourceLineNo">2165</span>  }<a name="line.2165"></a>
+<span class="sourceLineNo">2166</span><a name="line.2166"></a>
+<span class="sourceLineNo">2167</span>  /** Starts the service.  Must be called before any calls will be handled. */<a name="line.2167"></a>
+<span class="sourceLineNo">2168</span>  @Override<a name="line.2168"></a>
+<span class="sourceLineNo">2169</span>  public synchronized void start() {<a name="line.2169"></a>
+<span class="sourceLineNo">2170</span>    if (started) return;<a name="line.2170"></a>
+<span class="sourceLineNo">2171</span>    authTokenSecretMgr = createSecretManager();<a name="line.2171"></a>
+<span class="sourceLineNo">2172</span>    if (authTokenSecretMgr != null) {<a name="line.2172"></a>
+<span class="sourceLineNo">2173</span>      setSecretManager(authTokenSecretMgr);<a name="line.2173"></a>
+<span class="sourceLineNo">2174</span>      authTokenSecretMgr.start();<a name="line.2174"></a>
+<span class="sourceLineNo">2175</span>    }<a name="line.2175"></a>
+<span class="sourceLineNo">2176</span>    this.authManager = new ServiceAuthorizationManager();<a name="line.2176"></a>
+<span class="sourceLineNo">2177</span>    HBasePolicyProvider.init(conf, authManager);<a name="line.2177"></a>
+<span class="sourceLineNo">2178</span>    responder.start();<a name="line.2178"></a>
+<span class="sourceLineNo">2179</span>    listener.start();<a name="line.2179"></a>
+<span class="sourceLineNo">2180</span>    scheduler.start();<a name="line.2180"></a>
+<span class="sourceLineNo">2181</span>    started = true;<a name="line.2181"></a>
+<span class="sourceLineNo">2182</span>  }<a name="line.2182"></a>
+<span class="sourceLineNo">2183</span><a name="line.2183"></a>
+<span class="sourceLineNo">2184</span>  @Override<a name="line.2184"></a>
+<span class="sourceLineNo">2185</span>  public synchronized void refreshAuthManager(PolicyProvider pp) {<a name="line.2185"></a>
+<span class="sourceLineNo">2186</span>    // Ignore warnings that this should be accessed in a static way instead of via an instance;<a name="line.2186"></a>
+<span class="sourceLineNo">2187</span>    // it'll break if you go via static route.<a name="line.2187"></a>
+<span class="sourceLineNo">2188</span>    this.authManager.refresh(this.conf, pp);<a name="line.2188"></a>
+<span class="sourceLineNo">2189</span>  }<a name="line.2189"></a>
+<span class="sourceLineNo">2190</span><a name="line.2190"></a>
+<span class="sourceLineNo">2191</span>  private AuthenticationTokenSecretManager createSecretManager() {<a name="line.2191"></a>
+<span class="sourceLineNo">2192</span>    if (!isSecurityEnabled) return null;<a name="line.2192"></a>
+<span class="sourceLineNo">2193</span>    if (server == null) return null;<a name="line.2193"></a>
+<span class="sourceLineNo">2194</span>    Configuration conf = server.getConfiguration();<a name="line.2194"></a>
+<span class="sourceLineNo">2195</span>    long keyUpdateInterval =<a name="line.2195"></a>
+<span class="sourceLineNo">2196</span>        conf.getLong("hbase.auth.key.update.interval", 24*60*60*1000);<a name="line.2196"></a>
+<span class="sourceLineNo">2197</span>    long maxAge =<a name="line.2197"></a>
+<span class="sourceLineNo">2198</span>        conf.getLong("hbase.auth.token.max.lifetime", 7*24*60*60*1000);<a name="line.2198"></a>
+<span class="sourceLineNo">2199</span>    return new AuthenticationTokenSecretManager(conf, server.getZooKeeper(),<a name="line.2199"></a>
+<span class="sourceLineNo">2200</span>        server.getServerName().toString(), keyUpdateInterval, maxAge);<a name="line.2200"></a>
+<span class="sourceLineNo">2201</span>  }<a name="line.2201"></a>
+<span class="sourceLineNo">2202</span><a name="line.2202"></a>
+<span class="sourceLineNo">2203</span>  public SecretManager&lt;? extends TokenIdentifier&gt; getSecretManager() {<a name="line.2203"></a>
+<span class="sourceLineNo">2204</span>    return this.secretManager;<a name="line.2204"></a>
+<span class="sourceLineNo">2205</span>  }<a name="line.2205"></a>
+<span class="sourceLineNo">2206</span><a name="line.2206"></a>
+<span class="sourceLineNo">2207</span>  @SuppressWarnings("unchecked")<a name="line.2207"></a>
+<span class="sourceLineNo">2208</span>  public void setSecretManager(SecretManager&lt;? extends TokenIdentifier&gt; secretManager) {<a name="line.2208"></a>
+<span class="sourceLineNo">2209</span>    this.secretManager = (SecretManager&lt;TokenIdentifier&gt;) secretManager;<a name="line.2209"></a>
+<span class="sourceLineNo">2210</span>  }<a name="line.2210"></a>
+<span class="sourceLineNo">2211</span><a name="line.2211"></a>
+<span class="sourceLineNo">2212</span>  /**<a name="line.2212"></a>
+<span class="sourceLineNo">2213</span>   * This is a server side method, which is invoked over RPC. On success<a name="line.2213"></a>
+<span class="sourceLineNo">2214</span>   * the return response has protobuf response payload. On failure, the<a name="line.2214"></a>
+<span class="sourceLineNo">2215</span>   * exception name and the stack trace are returned in the protobuf response.<a name="line.2215"></a>
+<span class="sourceLineNo">2216</span>   */<a name="line.2216"></a>
+<span class="sourceLineNo">2217</span>  @Override<a name="line.2217"></a>
+<span class="sourceLineNo">2218</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,<a name="line.2218"></a>
+<span class="sourceLineNo">2219</span>      Message param, CellScanner cellScanner, long receiveTime, MonitoredRPCHandler status)<a name="line.2219"></a>
+<span class="sourceLineNo">2220</span>  throws IOException {<a name="line.2220"></a>
+<span class="sourceLineNo">2221</span>    try {<a name="line.2221"></a>
+<span class="sourceLineNo">2222</span>      status.setRPC(md.getName(), new Object[]{param}, receiveTime);<a name="line.2222"></a>
+<span class="sourceLineNo">2223</span>      // TODO: Review after we add in encoded data blocks.<a name="line.2223"></a>
+<span class="sourceLineNo">2224</span>      status.setRPCPacket(param);<a name="line.2224"></a>
+<span class="sourceLineNo">2225</span>      status.resume("Servicing call");<a name="line.2225"></a>
+<span class="sourceLineNo">2226</span>      //get an instance of the method arg type<a name="line.2226"></a>
+<span class="sourceLineNo">2227</span>      long startTime = System.currentTimeMillis();<a name="line.2227"></a>
+<span class="sourceLineNo">2228</span>      PayloadCarryingRpcController controller = new PayloadCarryingRpcController(cellScanner);<a name="line.2228"></a>
+<span class="sourceLineNo">2229</span>      Message result = service.callBlockingMethod(md, controller, param);<a name="line.2229"></a>
+<span class="sourceLineNo">2230</span>      long endTime = System.currentTimeMillis();<a name="line.2230"></a>
+<span class="sourceLineNo">2231</span>      int processingTime = (int) (endTime - startTime);<a name="line.2231"></a>
+<span class="sourceLineNo">2232</span>      int qTime = (int) (startTime - receiveTime);<a name="line.2232"></a>
+<span class="sourceLineNo">2233</span>      int totalTime = (int) (endTime - receiveTime);<a name="line.2233"></a>
+<span class="sourceLineNo">2234</span>      if (LOG.isTraceEnabled()) {<a name="line.2234"></a>
+<span class="sourceLineNo">2235</span>        LOG.trace(CurCall.get().toString() +<a name="line.2235"></a>
+<span class="sourceLineNo">2236</span>            ", response " + TextFormat.shortDebugString(result) +<a name="line.2236"></a>
+<span class="sourceLineNo">2237</span>            " queueTime: " + qTime +<a name="line.2237"></a>
+<span class="sourceLineNo">2238</span>            " processingTime: " + processingTime +<a name="line.2238"></a>
+<span class="sourceLineNo">2239</span>            " totalTime: " + totalTime);<a name="line.2239"></a>
+<span class="sourceLineNo">2240</span>      }<a name="line.2240"></a>
+<span class="sourceLineNo">2241</span>      long requestSize = param.getSerializedSize();<a name="line.2241"></a>
+<span class="sourceLineNo">2242</span>      long responseSize = result.getSerializedSize();<a name="line.2242"></a>
+<span class="sourceLineNo">2243</span>      metrics.dequeuedCall(qTime);<a name="line.2243"></a>
+<span class="sourceLineNo">2244</span>      metrics.processedCall(processingTime);<a name="line.2244"></a>
+<span class="sourceLineNo">2245</span>      metrics.totalCall(totalTime);<a name="line.2245"></a>
+<span class="sourceLineNo">2246</span>      metrics.receivedRequest(requestSize);<a name="line.2246"></a>
+<span class="sourceLineNo">2247</span>      metrics.sentResponse(responseSize);<a name="line.2247"></a>
+<span class="sourceLineNo">2248</span>      // log any RPC responses that are slower than the configured warn<a name="line.2248"></a>
+<span class="sourceLineNo">2249</span>      // response time or larger than configured warning size<a name="line.2249"></a>
+<span class="sourceLineNo">2250</span>      boolean tooSlow = (processingTime &gt; warnResponseTime &amp;&amp; warnResponseTime &gt; -1);<a name="line.2250"></a>
+<span class="sourceLineNo">2251</span>      boolean tooLarge = (responseSize &gt; warnResponseSize &amp;&amp; warnResponseSize &gt; -1);<a name="line.2251"></a>
+<span class="sourceLineNo">2252</span>      if (tooSlow || tooLarge) {<a name="line.2252"></a>
+<span class="sourceLineNo">2253</span>        // when tagging, we let TooLarge trump TooSmall to keep output simple<a name="line.2253"></a>
+<span class="sourceLineNo">2254</span>        // note that large responses will often also be slow.<a name="line.2254"></a>
+<span class="sourceLineNo">2255</span>        logResponse(new Object[]{param},<a name="line.2255"></a>
+<span class="sourceLineNo">2256</span>            md.getName(), md.getName() + "(" + param.getClass().getName() + ")",<a name="line.2256"></a>
+<span class="sourceLineNo">2257</span>            (tooLarge ? "TooLarge" : "TooSlow"),<a name="line.2257"></a>
+<span class="sourceLineNo">2258</span>            status.getClient(), startTime, processingTime, qTime,<a name="line.2258"></a>
+<span class="sourceLineNo">2259</span>            responseSize);<a name="line.2259"></a>
+<span class="sourceLineNo">2260</span>      }<a name="line.2260"></a>
+<span class="sourceLineNo">2261</span>      return new Pair&lt;Message, CellScanner&gt;(result, controller.cellScanner());<a name="line.2261"></a>
+<span class="sourceLineNo">2262</span>    } catch (Throwable e) {<a name="line.2262"></a>
+<span class="sourceLineNo">2263</span>      // The above callBlockingMethod will always return a SE.  Strip the SE wrapper before<a name="line.2263"></a>
+<span class="sourceLineNo">2264</span>      // putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't<a name="line.2264"></a>
+<span class="sourceLineNo">2265</span>      // need to pass it over the wire.<a name="line.2265"></a>
+<span class="sourceLineNo">2266</span>      if (e instanceof ServiceException) e = e.getCause();<a name="line.2266"></a>
 <span class="sourceLineNo">2267</span><a name="line.2267"></a>
-<span class="sourceLineNo">2268</span>      if (e instanceof LinkageError) throw new DoNotRetryIOException(e);<a name="line.2268"></a>
-<span class="sourceLineNo">2269</span>      if (e instanceof IOException) throw (IOException)e;<a name="line.2269"></a>
-<span class="sourceLineNo">2270</span>      LOG.error("Unexpected throwable object ", e);<a name="line.2270"></a>
-<span class="sourceLineNo">2271</span>      throw new IOException(e.getMessage(), e);<a name="line.2271"></a>
-<span class="sourceLineNo">2272</span>    }<a name="line.2272"></a>
-<span class="sourceLineNo">2273</span>  }<a name="line.2273"></a>
-<span class="sourceLineNo">2274</span><a name="line.2274"></a>
-<span class="sourceLineNo">2275</span>  /**<a name="line.2275"></a>
-<span class="sourceLineNo">2276</span>   * Logs an RPC response to the LOG file, producing valid JSON objects for<a name="line.2276"></a>
-<span class="sourceLineNo">2277</span>   * client Operations.<a name="line.2277"></a>
-<span class="sourceLineNo">2278</span>   * @param params The parameters received in the call.<a name="line.2278"></a>
-<span class="sourceLineNo">2279</span>   * @param methodName The name of the method invoked<a name="line.2279"></a>
-<span class="sourceLineNo">2280</span>   * @param call The string representation of the call<a name="line.2280"></a>
-<span class="sourceLineNo">2281</span>   * @param tag  The tag that will be used to indicate this event in the log.<a name="line.2281"></a>
-<span class="sourceLineNo">2282</span>   * @param clientAddress   The address of the client who made this call.<a name="line.2282"></a>
-<span class="sourceLineNo">2283</span>   * @param startTime       The time that the call was initiated, in ms.<a name="line.2283"></a>
-<span class="sourceLineNo">2284</span>   * @param processingTime  The duration that the call took to run, in ms.<a name="line.2284"></a>
-<span class="sourceLineNo">2285</span>   * @param qTime           The duration that the call spent on the queue<a name="line.2285"></a>
-<span class="sourceLineNo">2286</span>   *                        prior to being initiated, in ms.<a name="line.2286"></a>
-<span class="sourceLineNo">2287</span>   * @param responseSize    The size in bytes of the response buffer.<a name="line.2287"></a>
-<span class="sourceLineNo">2288</span>   */<a name="line.2288"></a>
-<span class="sourceLineNo">2289</span>  void logResponse(Object[] params, String methodName, String call, String tag,<a name="line.2289"></a>
-<span class="sourceLineNo">2290</span>      String clientAddress, long startTime, int processingTime, int qTime,<a name="line.2290"></a>
-<span class="sourceLineNo">2291</span>      long responseSize)<a name="line.2291"></a>
-<span class="sourceLineNo">2292</span>          throws IOException {<a name="line.2292"></a>
-<span class="sourceLineNo">2293</span>    // base information that is reported regardless of type of call<a name="line.2293"></a>
-<span class="sourceLineNo">2294</span>    Map&lt;String, Object&gt; responseInfo = new HashMap&lt;String, Object&gt;();<a name="line.2294"></a>
-<span class="sourceLineNo">2295</span>    responseInfo.put("starttimems", startTime);<a name="line.2295"></a>
-<span class="sourceLineNo">2296</span>    responseInfo.put("processingtimems", processingTime);<a name="line.2296"></a>
-<span class="sourceLineNo">2297</span>    responseInfo.put("queuetimems", qTime);<a name="line.2297"></a>
-<span class="sourceLineNo">2298</span>    responseInfo.put("responsesize", responseSize);<a name="line.2298"></a>
-<span class="sourceLineNo">2299</span>    responseInfo.put("client", clientAddress);<a name="line.2299"></a>
-<span class="sourceLineNo">2300</span>    responseInfo.put("class", server == null? "": server.getClass().getSimpleName());<a name="line.2300"></a>
-<span class="sourceLineNo">2301</span>    responseInfo.put("method", methodName);<a name="line.2301"></a>
-<span class="sourceLineNo">2302</span>    if (params.length == 2 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2302"></a>
-<span class="sourceLineNo">2303</span>        params[0] instanceof byte[] &amp;&amp;<a name="line.2303"></a>
-<span class="sourceLineNo">2304</span>        params[1] instanceof Operation) {<a name="line.2304"></a>
-<span class="sourceLineNo">2305</span>      // if the slow process is a query, we want to log its table as well<a name="line.2305"></a>
-<span class="sourceLineNo">2306</span>      // as its own fingerprint<a name="line.2306"></a>
-<span class="sourceLineNo">2307</span>      TableName tableName = TableName.valueOf(<a name="line.2307"></a>
-<span class="sourceLineNo">2308</span>          HRegionInfo.parseRegionName((byte[]) params[0])[0]);<a name="line.2308"></a>
-<span class="sourceLineNo">2309</span>      responseInfo.put("table", tableName.getNameAsString());<a name="line.2309"></a>
-<span class="sourceLineNo">2310</span>      // annotate the response map with operation details<a name="line.2310"></a>
-<span class="sourceLineNo">2311</span>      responseInfo.putAll(((Operation) params[1]).toMap());<a name="line.2311"></a>
-<span class="sourceLineNo">2312</span>      // report to the log file<a name="line.2312"></a>
-<span class="sourceLineNo">2313</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2313"></a>
-<span class="sourceLineNo">2314</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2314"></a>
-<span class="sourceLineNo">2315</span>    } else if (params.length == 1 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2315"></a>
-<span class="sourceLineNo">2316</span>        params[0] instanceof Operation) {<a name="line.2316"></a>
-<span class="sourceLineNo">2317</span>      // annotate the response map with operation details<a name="line.2317"></a>
-<span class="sourceLineNo">2318</span>      responseInfo.putAll(((Operation) params[0]).toMap());<a name="line.2318"></a>
-<span class="sourceLineNo">2319</span>      // report to the log file<a name="line.2319"></a>
-<span class="sourceLineNo">2320</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2320"></a>
-<span class="sourceLineNo">2321</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2321"></a>
-<span class="sourceLineNo">2322</span>    } else {<a name="line.2322"></a>
-<span class="sourceLineNo">2323</span>      // can't get JSON details, so just report call.toString() along with<a name="line.2323"></a>
-<span class="sourceLineNo">2324</span>      // a more generic tag.<a name="line.2324"></a>
-<span class="sourceLineNo">2325</span>      responseInfo.put("call", call);<a name="line.2325"></a>
-<span class="sourceLineNo">2326</span>      LOG.warn("(response" + tag + "): " + MAPPER.writeValueAsString(responseInfo));<a name="line.2326"></a>
-<span class="sourceLineNo">2327</span>    }<a name="line.2327"></a>
-<span class="sourceLineNo">2328</span>  }<a name="line.2328"></a>
-<span class="sourceLineNo">2329</span><a name="line.2329"></a>
-<span class="sourceLineNo">2330</span>  /** Stops the service.  No new calls will be handled after this is called. */<a name="line.2330"></a>
-<span class="sourceLineNo">2331</span>  @Override<a name="line.2331"></a>
-<span class="sourceLineNo">2332</span>  public synchronized void stop() {<a name="line.2332"></a>
-<span class="sourceLineNo">2333</span>    LOG.info("Stopping server on " + port);<a name="line.2333"></a>
-<span class="sourceLineNo">2334</span>    running = false;<a name="line.2334"></a>
-<span class="sourceLineNo">2335</span>    if (authTokenSecretMgr != null) {<a name="line.2335"></a>
-<span class="sourceLineNo">2336</span>      authTokenSecretMgr.stop();<a name="line.2336"></a>
-<span class="sourceLineNo">2337</span>      authTokenSecretMgr = null;<a name="line.2337"></a>
-<span class="sourceLineNo">2338</span>    }<a name="line.2338"></a>
-<span class="sourceLineNo">2339</span>    listener.interrupt();<a name="line.2339"></a>
-<span class="sourceLineNo">2340</span>    listener.doStop();<a name="line.2340"></a>
-<span class="sourceLineNo">2341</span>    responder.interrupt();<a name="line.2341"></a>
-<span class="sourceLineNo">2342</span>    scheduler.stop();<a name="line.2342"></a>
-<span class="sourceLineNo">2343</span>    notifyAll();<a name="line.2343"></a>
-<span class="sourceLineNo">2344</span>  }<a name="line.2344"></a>
-<span class="sourceLineNo">2345</span><a name="line.2345"></a>
-<span class="sourceLineNo">2346</span>  /** Wait for the server to be stopped.<a name="line.2346"></a>
-<span class="sourceLineNo">2347</span>   * Does not wait for all subthreads to finish.<a name="line.2347"></a>
-<span class="sourceLineNo">2348</span>   *  See {@link #stop()}.<a name="line.2348"></a>
-<span class="sourceLineNo">2349</span>   * @throws InterruptedException e<a name="line.2349"></a>
-<span class="sourceLineNo">2350</span>   */<a name="line.2350"></a>
-<span class="sourceLineNo">2351</span>  @Override<a name="line.2351"></a>
-<span class="sourceLineNo">2352</span>  public synchronized void join() throws InterruptedException {<a name="line.2352"></a>
-<span class="sourceLineNo">2353</span>    while (running) {<a name="line.2353"></a>
-<span class="sourceLineNo">2354</span>      wait();<a name="line.2354"></a>
-<span class="sourceLineNo">2355</span>    }<a name="line.2355"></a>
-<span class="sourceLineNo">2356</span>  }<a name="line.2356"></a>
-<span class="sourceLineNo">2357</span><a name="line.2357"></a>
-<span class="sourceLineNo">2358</span>  /**<a name="line.2358"></a>
-<span class="sourceLineNo">2359</span>   * Return the socket (ip+port) on which the RPC server is listening to. May return null if<a name="line.2359"></a>
-<span class="sourceLineNo">2360</span>   * the listener channel is closed.<a name="line.2360"></a>
-<span class="sourceLineNo">2361</span>   * @return the socket (ip+port) on which the RPC server is listening to, or null if this<a name="line.2361"></a>
-<span class="sourceLineNo">2362</span>   * information cannot be determined<a name="line.2362"></a>
-<span class="sourceLineNo">2363</span>   */<a name="line.2363"></a>
-<span class="sourceLineNo">2364</span>  @Override<a name="line.2364"></a>
-<span class="sourceLineNo">2365</span>  public synchronized InetSocketAddress getListenerAddress() {<a name="line.2365"></a>
-<span class="sourceLineNo">2366</span>    if (listener == null) {<a name="line.2366"></a>
-<span class="sourceLineNo">2367</span>      return null;<a name="line.2367"></a>
-<span class="sourceLineNo">2368</span>    }<a name="line.2368"></a>
-<span class="sourceLineNo">2369</span>    return listener.getAddress();<a name="line.2369"></a>
-<span class="sourceLineNo">2370</span>  }<a name="line.2370"></a>
-<span class="sourceLineNo">2371</span><a name="line.2371"></a>
-<span class="sourceLineNo">2372</span>  /**<a name="line.2372"></a>
-<span class="sourceLineNo">2373</span>   * Set the handler for calling out of RPC for error conditions.<a name="line.2373"></a>
-<span class="sourceLineNo">2374</span>   * @param handler the handler implementation<a name="line.2374"></a>
-<span class="sourceLineNo">2375</span>   */<a name="line.2375"></a>
-<span class="sourceLineNo">2376</span>  @Override<a name="line.2376"></a>
-<span class="sourceLineNo">2377</span>  public void setErrorHandler(HBaseRPCErrorHandler handler) {<a name="line.2377"></a>
-<span class="sourceLineNo">2378</span>    this.errorHandler = handler;<a name="line.2378"></a>
-<span class="sourceLineNo">2379</span>  }<a name="line.2379"></a>
-<span class="sourceLineNo">2380</span><a name="line.2380"></a>
-<span class="sourceLineNo">2381</span>  @Override<a name="line.2381"></a>
-<span class="sourceLineNo">2382</span>  public HBaseRPCErrorHandler getErrorHandler() {<a name="line.2382"></a>
-<span class="sourceLineNo">2383</span>    return this.errorHandler;<a name="line.2383"></a>
-<span class="sourceLineNo">2384</span>  }<a name="line.2384"></a>
-<span class="sourceLineNo">2385</span><a name="line.2385"></a>
-<span class="sourceLineNo">2386</span>  /**<a name="line.2386"></a>
-<span class="sourceLineNo">2387</span>   * Returns the metrics instance for reporting RPC call statistics<a name="line.2387"></a>
-<span class="sourceLineNo">2388</span>   */<a name="line.2388"></a>
-<span class="sourceLineNo">2389</span>  @Override<a name="line.2389"></a>
-<span class="sourceLineNo">2390</span>  public MetricsHBaseServer getMetrics() {<a name="line.2390"></a>
-<span class="sourceLineNo">2391</span>    return metrics;<a name="line.2391"></a>
-<span class="sourceLineNo">2392</span>  }<a name="line.2392"></a>
-<span class="sourceLineNo">2393</span><a name="line.2393"></a>
-<span class="sourceLineNo">2394</span>  @Override<a name="line.2394"></a>
-<span class="sourceLineNo">2395</span>  public void addCallSize(final long diff) {<a name="line.2395"></a>
-<span class="sourceLineNo">2396</span>    this.callQueueSize.add(diff);<a name="line.2396"></a>
-<span class="sourceLineNo">2397</span>  }<a name="line.2397"></a>
-<span class="sourceLineNo">2398</span><a name="line.2398"></a>
-<span class="sourceLineNo">2399</span>  /**<a name="line.2399"></a>
-<span class="sourceLineNo">2400</span>   * Authorize the incoming client connection.<a name="line.2400"></a>
-<span class="sourceLineNo">2401</span>   *<a name="line.2401"></a>
-<span class="sourceLineNo">2402</span>   * @param user client user<a name="line.2402"></a>
-<span class="sourceLineNo">2403</span>   * @param connection incoming connection<a name="line.2403"></a>
-<span class="sourceLineNo">2404</span>   * @param addr InetAddress of incoming connection<a name="line.2404"></a>
-<span class="sourceLineNo">2405</span>   * @throws org.apache.hadoop.security.authorize.AuthorizationException<a name="line.2405"></a>
-<span class="sourceLineNo">2406</span>   *         when the client isn't authorized to talk the protocol<a name="line.2406"></a>
-<span class="sourceLineNo">2407</span>   */<a name="line.2407"></a>
-<span class="sourceLineNo">2408</span>  public synchronized void authorize(UserGroupInformation user, ConnectionHeader connection,<a name="line.2408"></a>
-<span class="sourceLineNo">2409</span>      InetAddress addr)<a name="line.2409"></a>
-<span class="sourceLineNo">2410</span>  throws AuthorizationException {<a name="line.2410"></a>
-<span class="sourceLineNo">2411</span>    if (authorize) {<a name="line.2411"></a>
-<span class="sourceLineNo">2412</span>      Class&lt;?&gt; c = getServiceInterface(services, connection.getServiceName());<a name="line.2412"></a>
-<span class="sourceLineNo">2413</span>      this.authManager.authorize(user != null ? user : null, c, getConf(), addr);<a name="line.2413"></a>
-<span class="sourceLineNo">2414</span>    }<a name="line.2414"></a>
-<span class="sourceLineNo">2415</span>  }<a name="line.2415"></a>
-<span class="sourceLineNo">2416</span><a name="line.2416"></a>
-<span class="sourceLineNo">2417</span>  /**<a name="line.2417"></a>
-<span class="sourceLineNo">2418</span>   * When the read or write buffer size is larger than this limit, i/o will be<a name="line.2418"></a>
-<span class="sourceLineNo">2419</span>   * done in chunks of this size. Most RPC requests and responses would be<a name="line.2419"></a>
-<span class="sourceLineNo">2420</span>   * be smaller.<a name="line.2420"></a>
-<span class="sourceLineNo">2421</span>   */<a name="line.2421"></a>
-<span class="sourceLineNo">2422</span>  private static int NIO_BUFFER_LIMIT = 64 * 1024; //should not be more than 64KB.<a name="line.2422"></a>
-<span class="sourceLineNo">2423</span><a name="line.2423"></a>
-<span class="sourceLineNo">2424</span>  /**<a name="line.2424"></a>
-<span class="sourceLineNo">2425</span>   * This is a wrapper around {@link java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)}.<a name="line.2425"></a>
-<span class="sourceLineNo">2426</span>   * If the amount of data is large, it writes to channel in smaller chunks.<a name="line.2426"></a>
-<span class="sourceLineNo">2427</span>   * This is to avoid jdk from creating many direct buffers as the size of<a name="line.2427"></a>
-<span class="sourceLineNo">2428</span>   * buffer increases. This also minimizes extra copies in NIO layer<a name="line.2428"></a>
-<span class="sourceLineNo">2429</span>   * as a result of multiple write operations required to write a large<a name="line.2429"></a>
-<span class="sourceLineNo">2430</span>   * buffer.<a name="line.2430"></a>
-<span class="sourceLineNo">2431</span>   *<a name="line.2431"></a>
-<span class="sourceLineNo">2432</span>   * @param channel writable byte channel to write to<a name="line.2432"></a>
-<span class="sourceLineNo">2433</span>   * @param bufferChain Chain of buffers to write<a name="line.2433"></a>
-<span class="sourceLineNo">2434</span>   * @return number of bytes written<a name="line.2434"></a>
-<span class="sourceLineNo">2435</span>   * @throws java.io.IOException e<a name="line.2435"></a>
-<span class="sourceLineNo">2436</span>   * @see java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)<a name="line.2436"></a>
-<span class="sourceLineNo">2437</span>   */<a name="line.2437"></a>
-<span class="sourceLineNo">2438</span>  protected long channelWrite(GatheringByteChannel channel, BufferChain bufferChain)<a name="line.2438"></a>
-<span class="sourceLineNo">2439</span>  throws IOException {<a name="line.2439"></a>
-<span class="sourceLineNo">2440</span>    long count =  bufferChain.write(channel, NIO_BUFFER_LIMIT);<a name="line.2440"></a>
-<span class="sourceLineNo">2441</span>    if (count &gt; 0) this.metrics.sentBytes(count);<a name="line.2441"></a>
-<span class="sourceLineNo">2442</span>    return count;<a name="line.2442"></a>
-<span class="sourceLineNo">2443</span>  }<a name="line.2443"></a>
-<span class="sourceLineNo">2444</span><a name="line.2444"></a>
-<span class="sourceLineNo">2445</span>  /**<a name="line.2445"></a>
-<span class="sourceLineNo">2446</span>   * This is a wrapper around {@link java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer)}.<a name="line.2446"></a>
-<span class="sourceLineNo">2447</span>   * If the amount of data is large, it writes to channel in smaller chunks.<a name="line.2447"></a>
-<span class="sourceLineNo">2448</span>   * This is to avoid jdk from creating many direct buffers as the size of<a name="line.2448"></a>
-<span class="sourceLineNo">2449</span>   * ByteBuffer increases. There should not be any performance degredation.<a name="line.2449"></a>
-<span class="sourceLineNo">2450</span>   *<a name="line.2450"></a>
-<span class="sourceLineNo">2451</span>   * @param channel writable byte channel to write on<a name="line.2451"></a>
-<span class="sourceLineNo">2452</span>   * @param buffer buffer to write<a name="line.2452"></a>
-<span class="sourceLineNo">2453</span>   * @return number of bytes written<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>   * @throws java.io.IOException e<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>   * @see java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer)<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>   */<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>  protected int channelRead(ReadableByteChannel channel,<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>                                   ByteBuffer buffer) throws IOException {<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span><a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>    int count = (buffer.remaining() &lt;= NIO_BUFFER_LIMIT) ?<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>           channel.read(buffer) : channelIO(channel, null, buffer);<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span>    if (count &gt; 0) {<a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      metrics.receivedBytes(count);<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>    }<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>    return count;<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>  }<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span><a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>  /**<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>   * Helper for {@link #channelRead(java.nio.channels.ReadableByteChannel, java.nio.ByteBuffer)}<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>   * and {@link #channelWrite(GatheringByteChannel, BufferChain)}. Only<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span>   * one of readCh or writeCh should be non-null.<a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>   *<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>   * @param readCh read channel<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>   * @param writeCh write channel<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>   * @param buf buffer to read or write into/out of<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>   * @return bytes written<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>   * @throws java.io.IOException e<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>   * @see #channelRead(java.nio.channels.ReadableByteChannel, java.nio.ByteBuffer)<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>   * @see #channelWrite(GatheringByteChannel, BufferChain)<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>   */<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>  private static int channelIO(ReadableByteChannel readCh,<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>                               WritableByteChannel writeCh,<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>                               ByteBuffer buf) throws IOException {<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span><a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    int originalLimit = buf.limit();<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    int initialRemaining = buf.remaining();<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>    int ret = 0;<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span><a name="line.2488"></a>
-<span class="sourceLineNo">2489</span>    while (buf.remaining() &gt; 0) {<a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>      try {<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>        int ioSize = Math.min(buf.remaining(), NIO_BUFFER_LIMIT);<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>        buf.limit(buf.position() + ioSize);<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span><a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>        ret = (readCh == null) ? writeCh.write(buf) : readCh.read(buf);<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span><a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>        if (ret &lt; ioSize) {<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>          break;<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>        }<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span><a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      } finally {<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>        buf.limit(originalLimit);<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>      }<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>    }<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span><a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>    int nBytes = initialRemaining - buf.remaining();<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    return (nBytes &gt; 0) ? nBytes : ret;<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>  }<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span><a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>  /**<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>   * Needed for features such as delayed calls.  We need to be able to store the current call<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>   * so that we can complete it later or ask questions of what is supported by the current ongoing<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span>   * call.<a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>   * @return An RpcCallContext backed by the currently ongoing call (gotten from a thread local)<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>   */<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>  public static RpcCallContext getCurrentCall() {<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    return CurCall.get();<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>  }<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span><a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>  public static boolean isInRpcCallContext() {<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>    return CurCall.get() != null;<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>  }<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span><a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>  /**<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>   * Returns the user credentials associated with the current RPC request or<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>   * &lt;code&gt;null&lt;/code&gt; if no credentials were provided.<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>   * @return A User<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>   */<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  public static User getRequestUser() {<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span>    RpcCallContext ctx = getCurrentCall();<a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>    return ctx == null? null: ctx.getRequestUser();<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>  }<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span><a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  /**<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>   * Returns the username for any user associated with the current RPC<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>   * request or &lt;code&gt;null&lt;/code&gt; if no user is set.<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>   */<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>  public static String getRequestUserName() {<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    User user = getRequestUser();<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>    return user == null? null: user.getShortName();<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>  }<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span><a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>  /**<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>   * @return Address of remote client if a request is ongoing, else null<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>   */<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span>  public static InetAddress getRemoteAddress() {<a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>    RpcCallContext ctx = getCurrentCall();<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>    return ctx == null? null: ctx.getRemoteAddress();<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>  }<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span><a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>  /**<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span>   * @param services Available service instances<a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>   * @return Matching BlockingServiceAndInterface pair<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   */<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>  static BlockingServiceAndInterface getServiceAndInterface(<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>      final List&lt;BlockingServiceAndInterface&gt; services, final String serviceName) {<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>    for (BlockingServiceAndInterface bs : services) {<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>      if (bs.getBlockingService().getDescriptorForType().getName().equals(serviceName)) {<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>        return bs;<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>      }<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>    }<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>    return null;<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>  }<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span><a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>  /**<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>   * @param services Available services and their service interfaces.<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>   * @return Service interface class for &lt;code&gt;serviceName&lt;/code&gt;<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>   */<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>  static Class&lt;?&gt; getServiceInterface(<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>      final List&lt;BlockingServiceAndInterface&gt; services,<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>      final String serviceName) {<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>    BlockingServiceAndInterface bsasi =<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span>        getServiceAndInterface(services, serviceName);<a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>    return bsasi == null? null: bsasi.getServiceInterface();<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>  }<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span><a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>  /**<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>   * @param services Available services and their service interfaces.<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>   * @return BlockingService that goes with the passed &lt;code&gt;serviceName&lt;/code&gt;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>   */<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>  static BlockingService getService(<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>      final List&lt;BlockingServiceAndInterface&gt; services,<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span>      final String serviceName) {<a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    BlockingServiceAndInterface bsasi =<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>        getServiceAndInterface(services, serviceName);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    return bsasi == null? null: bsasi.getBlockingService();<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span>  }<a name="line.2589"></a>
-<span class="sourceLineNo">2590</span><a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>  static MonitoredRPCHandler getStatus() {<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // It is ugly the way we park status up in RpcServer.  Let it be for now.  TODO.<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    MonitoredRPCHandler status = RpcServer.MONITORED_RPC.get();<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    if (status != null) {<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>      return status;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    }<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>    status = TaskMonitor.get().createRPCStatus(Thread.currentThread().getName());<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>    status.pause("Waiting for a call");<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>    RpcServer.MONITORED_RPC.set(status);<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>    return status;<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span>  }<a name="line.2601"></a>
-<span class="sourceLineNo">2602</span><a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>  /** Returns the remote side ip address when invoked inside an RPC<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>   *  Returns null incase of an error.<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span>   *  @return InetAddress<a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>   */<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>  public static InetAddress getRemoteIp() {<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>    Call call = CurCall.get();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>    if (call != null &amp;&amp; call.connection != null &amp;&amp; call.connection.socket != null) {<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      return call.connection.socket.getInetAddress();<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>    }<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>    return null;<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>  }<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span><a name="line.2614"></a>
-<span class="sourceLineNo">2615</span><a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>  /**<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>   * A convenience method to bind to a given address and report<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>   * better exceptions if the address is not a valid host.<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>   * @param socket the socket to bind<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>   * @param address the address to bind to<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>   * @param backlog the number of connections allowed in the queue<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>   * @throws BindException if the address can't be bound<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>   * @throws UnknownHostException if the address isn't a valid host name<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>   * @throws IOException other random errors from bind<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>   */<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span>  public static void bind(ServerSocket socket, InetSocketAddress address,<a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>                          int backlog) throws IOException {<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>    try {<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span>      socket.bind(address, backlog);<a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>    } catch (BindException e) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>      BindException bindException =<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        new BindException("Problem binding to " + address + " : " +<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>            e.getMessage());<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>      bindException.initCause(e);<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>      throw bindException;<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>    } catch (SocketException e) {<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>      // If they try to bind to a different host's address, give a better<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // error message.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      if ("Unresolved address".equals(e.getMessage())) {<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>        throw new UnknownHostException("Invalid hostname for server: " +<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>                                       address.getHostName());<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      }<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      throw e;<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>    }<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>  }<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span><a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>  @Override<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>  public RpcScheduler getScheduler() {<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>    return scheduler;<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>  }<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>}<a name="line.2651"></a>
+<span class="sourceLineNo">2268</span>      // increment the number of requests that were exceptions.<a name="line.2268"></a>
+<span class="sourceLineNo">2269</span>      metrics.exception(e);<a name="line.2269"></a>
+<span class="sourceLineNo">2270</span><a name="line.2270"></a>
+<span class="sourceLineNo">2271</span>      if (e instanceof LinkageError) throw new DoNotRetryIOException(e);<a name="line.2271"></a>
+<span class="sourceLineNo">2272</span>      if (e instanceof IOException) throw (IOException)e;<a name="line.2272"></a>
+<span class="sourceLineNo">2273</span>      LOG.error("Unexpected throwable object ", e);<a name="line.2273"></a>
+<span class="sourceLineNo">2274</span>      throw new IOException(e.getMessage(), e);<a name="line.2274"></a>
+<span class="sourceLineNo">2275</span>    }<a name="line.2275"></a>
+<span class="sourceLineNo">2276</span>  }<a name="line.2276"></a>
+<span class="sourceLineNo">2277</span><a name="line.2277"></a>
+<span class="sourceLineNo">2278</span>  /**<a name="line.2278"></a>
+<span class="sourceLineNo">2279</span>   * Logs an RPC response to the LOG file, producing valid JSON objects for<a name="line.2279"></a>
+<span class="sourceLineNo">2280</span>   * client Operations.<a name="line.2280"></a>
+<span class="sourceLineNo">2281</span>   * @param params The parameters received in the call.<a name="line.2281"></a>
+<span class="sourceLineNo">2282</span>   * @param methodName The name of the method invoked<a name="line.2282"></a>
+<span class="sourceLineNo">2283</span>   * @param call The string representation of the call<a name="line.2283"></a>
+<span class="sourceLineNo">2284</span>   * @param tag  The tag that will be used to indicate this event in the log.<a name="line.2284"></a>
+<span class="sourceLineNo">2285</span>   * @param clientAddress   The address of the client who made this call.<a name="line.2285"></a>
+<span class="sourceLineNo">2286</span>   * @param startTime       The time that the call was initiated, in ms.<a name="line.2286"></a>
+<span class="sourceLineNo">2287</span>   * @param processingTime  The duration that the call took to run, in ms.<a name="line.2287"></a>
+<span class="sourceLineNo">2288</span>   * @param qTime           The duration that the call spent on the queue<a name="line.2288"></a>
+<span class="sourceLineNo">2289</span>   *                        prior to being initiated, in ms.<a name="line.2289"></a>
+<span class="sourceLineNo">2290</span>   * @param responseSize    The size in bytes of the response buffer.<a name="line.2290"></a>
+<span class="sourceLineNo">2291</span>   */<a name="line.2291"></a>
+<span class="sourceLineNo">2292</span>  void logResponse(Object[] params, String methodName, String call, String tag,<a name="line.2292"></a>
+<span class="sourceLineNo">2293</span>      String clientAddress, long startTime, int processingTime, int qTime,<a name="line.2293"></a>
+<span class="sourceLineNo">2294</span>      long responseSize)<a name="line.2294"></a>
+<span class="sourceLineNo">2295</span>          throws IOException {<a name="line.2295"></a>
+<span class="sourceLineNo">2296</span>    // base information that is reported regardless of type of call<a name="line.2296"></a>
+<span class="sourceLineNo">2297</span>    Map&lt;String, Object&gt; responseInfo = new HashMap&lt;String, Object&gt;();<a name="line.2297"></a>
+<span class="sourceLineNo">2298</span>    responseInfo.put("starttimems", startTime);<a name="line.2298"></a>
+<span class="sourceLineNo">2299</span>    responseInfo.put("processingtimems", processingTime);<a name="line.2299"></a>
+<span class="sourceLineNo">2300</span>    responseInfo.put("queuetimems", qTime);<a name="line.2300"></a>
+<span class="sourceLineNo">2301</span>    responseInfo.put("responsesize", responseSize);<a name="line.2301"></a>
+<span class="sourceLineNo">2302</span>    responseInfo.put("client", clientAddress);<a name="line.2302"></a>
+<span class="sourceLineNo">2303</span>    responseInfo.put("class", server == null? "": server.getClass().getSimpleName());<a name="line.2303"></a>
+<span class="sourceLineNo">2304</span>    responseInfo.put("method", methodName);<a name="line.2304"></a>
+<span class="sourceLineNo">2305</span>    if (params.length == 2 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2305"></a>
+<span class="sourceLineNo">2306</span>        params[0] instanceof byte[] &amp;&amp;<a name="line.2306"></a>
+<span class="sourceLineNo">2307</span>        params[1] instanceof Operation) {<a name="line.2307"></a>
+<span class="sourceLineNo">2308</span>      // if the slow process is a query, we want to log its table as well<a name="line.2308"></a>
+<span class="sourceLineNo">2309</span>      // as its own fingerprint<a name="line.2309"></a>
+<span class="sourceLineNo">2310</span>      TableName tableName = TableName.valueOf(<a name="line.2310"></a>
+<span class="sourceLineNo">2311</span>          HRegionInfo.parseRegionName((byte[]) params[0])[0]);<a name="line.2311"></a>
+<span class="sourceLineNo">2312</span>      responseInfo.put("table", tableName.getNameAsString());<a name="line.2312"></a>
+<span class="sourceLineNo">2313</span>      // annotate the response map with operation details<a name="line.2313"></a>
+<span class="sourceLineNo">2314</span>      responseInfo.putAll(((Operation) params[1]).toMap());<a name="line.2314"></a>
+<span class="sourceLineNo">2315</span>      // report to the log file<a name="line.2315"></a>
+<span class="sourceLineNo">2316</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2316"></a>
+<span class="sourceLineNo">2317</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2317"></a>
+<span class="sourceLineNo">2318</span>    } else if (params.length == 1 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2318"></a>
+<span class="sourceLineNo">2319</span>        params[0] instanceof Operation) {<a name="line.2319"></a>
+<span class="sourceLineNo">2320</span>      // annotate the response map with operation details<a name="line.2320"></a>
+<span class="sourceLineNo">2321</span>      responseInfo.putAll(((Operation) params[0]).toMap());<a name="line.2321"></a>
+<span class="sourceLineNo">2322</span>      // report to the log file<a name="line.2322"></a>
+<span class="sourceLineNo">2323</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2323"></a>
+<span class="sourceLineNo">2324</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2324"></a>
+<span class="sourceLineNo">2325</span>    } else {<a name="line.2325"></a>
+<span class="sourceLineNo">2326</span>      // can't get JSON details, so just report call.toString() along with<a name="line.2326"></a>
+<span class="sourceLineNo">2327</span>      // a more generic tag.<a name="line.2327"></a>
+<span class="sourceLineNo">2328</span>      responseInfo.put("call", call);<a name="line.2328"></a>
+<span class="sourceLineNo">2329</span>      LOG.warn("(response" + tag + "): " + MAPPER.writeValueAsString(responseInfo));<a name="line.2329"></a>
+<span class="sourceLineNo">2330</span>    }<a name="line.2330"></a>
+<span class="sourceLineNo">2331</span>  }<a name="line.2331"></a>
+<span class="sourceLineNo">2332</span><a name="line.2332"></a>
+<span class="sourceLineNo">2333</span>  /** Stops the service.  No new calls will be handled after this is called. */<a name="line.2333"></a>
+<span class="sourceLineNo">2334</span>  @Override<a name="line.2334"></a>
+<span class="sourceLineNo">2335</span>  public synchronized void stop() {<a name="line.2335"></a>
+<span class="sourceLineNo">2336</span>    LOG.info("Stopping server on " + port);<a name="line.2336"></a>
+<span class="sourceLineNo">2337</span>    running = false;<a name="line.2337"></a>
+<span class="sourceLineNo">2338</span>    if (authTokenSecretMgr != null) {<a name="line.2338"></a>
+<span class="sourceLineNo">2339</span>      authTokenSecretMgr.stop();<a name="line.2339"></a>
+<span class="sourceLineNo">2340</span>      authTokenSecretMgr = null;<a name="line.2340"></a>
+<span class="sourceLineNo">2341</span>    }<a name="line.2341"></a>
+<span class="sourceLineNo">2342</span>    listener.interrupt();<a name="line.2342"></a>
+<span class="sourceLineNo">2343</span>    listener.doStop();<a name="line.2343"></a>
+<span class="sourceLineNo">2344</span>    responder.interrupt();<a name="line.2344"></a>
+<span class="sourceLineNo">2345</span>    scheduler.stop();<a name="line.2345"></a>
+<span class="sourceLineNo">2346</span>    notifyAll();<a name="line.2346"></a>
+<span class="sourceLineNo">2347</span>  }<a name="line.2347"></a>
+<span class="sourceLineNo">2348</span><a name="line.2348"></a>
+<span class="sourceLineNo">2349</span>  /** Wait for the server to be stopped.<a name="line.2349"></a>
+<span class="sourceLineNo">2350</span>   * Does not wait for all subthreads to finish.<a name="line.2350"></a>
+<span class="sourceLineNo">2351</span>   *  See {@link #stop()}.<a name="line.2351"></a>
+<span class="sourceLineNo">2352</span>   * @throws InterruptedException e<a name="line.2352"></a>
+<span class="sourceLineNo">2353</span>   */<a name="line.2353"></a>
+<span class="sourceLineNo">2354</span>  @Override<a name="line.2354"></a>
+<span class="sourceLineNo">2355</span>  public synchronized void join() throws InterruptedException {<a name="line.2355"></a>
+<span class="sourceLineNo">2356</span>    while (running) {<a name="line.2356"></a>
+<span class="sourceLineNo">2357</span>      wait();<a name="line.2357"></a>
+<span class="sourceLineNo">2358</span>    }<a name="line.2358"></a>
+<span class="sourceLineNo">2359</span>  }<a name="line.2359"></a>
+<span class="sourceLineNo">2360</span><a name="line.2360"></a>
+<span class="sourceLineNo">2361</span>  /**<a name="line.2361"></a>
+<span class="sourceLineNo">2362</span>   * Return the socket (ip+port) on which the RPC server is listening to. May return null if<a name="line.2362"></a>
+<span class="sourceLineNo">2363</span>   * the listener channel is closed.<a name="line.2363"></a>
+<span class="sourceLineNo">2364</span>   * @return the socket (ip+port) on which the RPC server is listening to, or null if this<a name="line.2364"></a>
+<span class="sourceLineNo">2365</span>   * information cannot be determined<a name="line.2365"></a>
+<span class="sourceLineNo">2366</span>   */<a name="line.2366"></a>
+<span class="sourceLineNo">2367</span>  @Override<a name="line.2367"></a>
+<span class="sourceLineNo">2368</span>  public synchronized InetSocketAddress getListenerAddress() {<a name="line.2368"></a>
+<span class="sourceLineNo">2369</span>    if (listener == null) {<a name="line.2369"></a>
+<span class="sourceLineNo">2370</span>      return null;<a name="line.2370"></a>
+<span class="sourceLineNo">2371</span>    }<a name="line.2371"></a>
+<span class="sourceLineNo">2372</span>    return listener.getAddress();<a name="line.2372"></a>
+<span class="sourceLineNo">2373</span>  }<a name="line.2373"></a>
+<span class="sourceLineNo">2374</span><a name="line.2374"></a>
+<span class="sourceLineNo">2375</span>  /**<a name="line.2375"></a>
+<span class="sourceLineNo">2376</span>   * Set the handler for calling out of RPC for error conditions.<a name="line.2376"></a>
+<span class="sourceLineNo">2377</span>   * @param handler the handler implementation<a name="line.2377"></a>
+<span class="sourceLineNo">2378</span>   */<a name="line.2378"></a>
+<span class="sourceLineNo">2379</span>  @Override<a name="line.2379"></a>
+<span class="sourceLineNo">2380</span>  public void setErrorHandler(HBaseRPCErrorHandler handler) {<a name="line.2380"></a>
+<span class="sourceLineNo">2381</span>    this.errorHandler = handler;<a name="line.2381"></a>
+<span class="sourceLineNo">2382</span>  }<a name="line.2382"></a>
+<span class="sourceLineNo">2383</span><a name="line.2383"></a>
+<span class="sourceLineNo">2384</span>  @Override<a name="line.2384"></a>
+<span class="sourceLineNo">2385</span>  public HBaseRPCErrorHandler getErrorHandler() {<a name="line.2385"></a>
+<span class="sourceLineNo">2386</span>    return this.errorHandler;<a name="line.2386"></a>
+<span class="sourceLineNo">2387</span>  }<a name="line.2387"></a>
+<span class="sourceLineNo">2388</span><a name="line.2388"></a>
+<span class="sourceLineNo">2389</span>  /**<a name="line.2389"></a>
+<span class="sourceLineNo">2390</span>   * Returns the metrics instance for reporting RPC call statistics<a name="line.2390"></a>
+<span class="sourceLineNo">2391</span>   */<a name="line.2391"></a>
+<span class="sourceLineNo">2392</span>  @Override<a name="line.2392"></a>
+<span class="sourceLineNo">2393</span>  public MetricsHBaseServer getMetrics() {<a name="line.2393"></a>
+<span class="sourceLineNo">2394</span>    return metrics;<a name="line.2394"></a>
+<span class="sourceLineNo">2395</span>  }<a name="line.2395"></a>
+<span class="sourceLineNo">2396</span><a name="line.2396"></a>
+<span class="sourceLineNo">2397</span>  @Override<a name="line.2397"></a>
+<span class="sourceLineNo">2398</span>  public void addCallSize(final long diff) {<a name="line.2398"></a>
+<span class="sourceLineNo">2399</span>    this.callQueueSize.add(diff);<a name="line.2399"></a>
+<span class="sourceLineNo">2400</span>  }<a name="line.2400"></a>
+<span class="sourceLineNo">2401</span><a name="line.2401"></a>
+<span class="sourceLineNo">2402</span>  /**<a name="line.2402"></a>
+<span class="sourceLineNo">2403</span>   * Authorize the incoming client connection.<a name="line.2403"></a>
+<span class="sourceLineNo">2404</span>   *<a name="line.2404"></a>
+<span class="sourceLineNo">2405</span>   * @param user client user<a name="line.2405"></a>
+<span class="sourceLineNo">2406</span>   * @param connection incoming connection<a name="line.2406"></a>
+<span class="sourceLineNo">2407</span>   * @param addr InetAddress of incoming connection<a name="line.2407"></a>
+<span class="sourceLineNo">2408</span>   * @throws org.apache.hadoop.security.authorize.AuthorizationException<a name="line.2408"></a>
+<span class="sourceLineNo">2409</span>   *         when the client isn't authorized to talk the protocol<a name="line.2409"></a>
+<span class="sourceLineNo">2410</span>   */<a name="line.2410"></a>
+<span class="sourceLineNo">2411</span>  public synchronized void authorize(UserGroupInformation user, ConnectionHeader connection,<a name="line.2411"></a>
+<span class="sourceLineNo">2412</span>      InetAddress addr)<a name="line.2412"></a>
+<span class="sourceLineNo">2413</span>  throws AuthorizationException {<a name="line.2413"></a>
+<span class="sourceLineNo">2414</span>    if (authorize) {<a name="line.2414"></a>
+<span class="sourceLineNo">2415</span>      Class&lt;?&gt; c = getServiceInterface(services, connection.getServiceName());<a name="line.2415"></a>
+<span class="sourceLineNo">2416</span>      this.authManager.authorize(user != null ? user : null, c, getConf(), addr);<a name="line.2416"></a>
+<span class="sourceLineNo">2417</span>    }<a name="line.2417"></a>
+<span class="sourceLineNo">2418</span>  }<a name="line.2418"></a>
+<span class="sourceLineNo">2419</span><a name="line.2419"></a>
+<span class="sourceLineNo">2420</span>  /**<a name="line.2420"></a>
+<span class="sourceLineNo">2421</span>   * When the read or write buffer size is larger than this limit, i/o will be<a name="line.2421"></a>
+<span class="sourceLineNo">2422</span>   * done in chunks of this size. Most RPC requests and responses would be<a name="line.2422"></a>
+<span class="sourceLineNo">2423</span>   * be smaller.<a name="line.2423"></a>
+<span class="sourceLineNo">2424</span>   */<a name="line.2424"></a>
+<span class="sourceLineNo">2425</span>  private static int NIO_BUFFER_LIMIT = 64 * 1024; //should not be more than 64KB.<a name="line.2425"></a>
+<span class="sourceLineNo">2426</span><a name="line.2426"></a>
+<span class="sourceLineNo">2427</span>  /**<a name="line.2427"></a>
+<span class="sourceLineNo">2428</span>   * This is a wrapper around {@link java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)}.<a name="line.2428

<TRUNCATED>

[08/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html
index 1bdbf69..f83e138 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html
@@ -86,478 +86,483 @@
 <span class="sourceLineNo">078</span>import org.junit.Rule;<a name="line.78"></a>
 <span class="sourceLineNo">079</span>import org.junit.Test;<a name="line.79"></a>
 <span class="sourceLineNo">080</span>import org.junit.experimental.categories.Category;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.junit.rules.TestRule;<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>import com.google.common.base.Joiner;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import com.google.protobuf.RpcController;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import com.google.protobuf.ServiceException;<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> * Like {@link TestRegionMergeTransaction} in that we're testing<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * {@link RegionMergeTransactionImpl} only the below tests are against a running<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * cluster where {@link TestRegionMergeTransaction} is tests against bare<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * {@link HRegion}.<a name="line.91"></a>
-<span class="sourceLineNo">092</span> */<a name="line.92"></a>
-<span class="sourceLineNo">093</span>@Category({RegionServerTests.class, LargeTests.class})<a name="line.93"></a>
-<span class="sourceLineNo">094</span>public class TestRegionMergeTransactionOnCluster {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private static final Log LOG = LogFactory<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      .getLog(TestRegionMergeTransactionOnCluster.class);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().withTimeout(this.getClass()).<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      withLookingForStuckThread(true).build();<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private static final int NB_SERVERS = 3;<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  private static final byte[] FAMILYNAME = Bytes.toBytes("fam");<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  private static final byte[] QUALIFIER = Bytes.toBytes("q");<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private static byte[] ROW = Bytes.toBytes("testRow");<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private static final int INITIAL_REGION_NUM = 10;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  private static final int ROWSIZE = 200;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  private static byte[][] ROWS = makeN(ROW, ROWSIZE);<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private static int waitTime = 60 * 1000;<a name="line.109"></a>
+<span class="sourceLineNo">081</span>import org.junit.rules.TestName;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.junit.rules.TestRule;<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>import com.google.common.base.Joiner;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import com.google.protobuf.RpcController;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import com.google.protobuf.ServiceException;<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> * Like {@link TestRegionMergeTransaction} in that we're testing<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * {@link RegionMergeTransactionImpl} only the below tests are against a running<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * cluster where {@link TestRegionMergeTransaction} is tests against bare<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * {@link HRegion}.<a name="line.92"></a>
+<span class="sourceLineNo">093</span> */<a name="line.93"></a>
+<span class="sourceLineNo">094</span>@Category({RegionServerTests.class, LargeTests.class})<a name="line.94"></a>
+<span class="sourceLineNo">095</span>public class TestRegionMergeTransactionOnCluster {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private static final Log LOG = LogFactory<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      .getLog(TestRegionMergeTransactionOnCluster.class);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  @Rule public TestName name = new TestName();<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().withTimeout(this.getClass()).<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      withLookingForStuckThread(true).build();<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  private static final int NB_SERVERS = 3;<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  private static final byte[] FAMILYNAME = Bytes.toBytes("fam");<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private static final byte[] QUALIFIER = Bytes.toBytes("q");<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>  private static byte[] ROW = Bytes.toBytes("testRow");<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  private static final int INITIAL_REGION_NUM = 10;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private static final int ROWSIZE = 200;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  private static byte[][] ROWS = makeN(ROW, ROWSIZE);<a name="line.109"></a>
 <span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.111"></a>
+<span class="sourceLineNo">111</span>  private static int waitTime = 60 * 1000;<a name="line.111"></a>
 <span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>  private static HMaster MASTER;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static Admin ADMIN;<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>  @BeforeClass<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public static void beforeAllTests() throws Exception {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    // Start a cluster<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    TEST_UTIL.startMiniCluster(1, NB_SERVERS, null, MyMaster.class, null);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    MASTER = cluster.getMaster();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    MASTER.balanceSwitch(false);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    ADMIN = TEST_UTIL.getConnection().getAdmin();<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>  @AfterClass<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public static void afterAllTests() throws Exception {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    if (ADMIN != null) ADMIN.close();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  @Test<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  public void testWholesomeMerge() throws Exception {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    LOG.info("Starting testWholesomeMerge");<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    final TableName tableName =<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        TableName.valueOf("testWholesomeMerge");<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>    // Create table and load data.<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    Table table = createTableAndLoadData(MASTER, tableName);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    // Merge 1st and 2nd region<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1,<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        INITIAL_REGION_NUM - 1);<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>    // Merge 2nd and 3th region<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions =<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 1, 2,<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        INITIAL_REGION_NUM - 2);<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>    verifyRowCount(table, ROWSIZE);<a name="line.149"></a>
+<span class="sourceLineNo">113</span>  static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static HMaster MASTER;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static Admin ADMIN;<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  @BeforeClass<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  public static void beforeAllTests() throws Exception {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    // Start a cluster<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    TEST_UTIL.startMiniCluster(1, NB_SERVERS, null, MyMaster.class, null);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    MASTER = cluster.getMaster();<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    MASTER.balanceSwitch(false);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    ADMIN = TEST_UTIL.getConnection().getAdmin();<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>  @AfterClass<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  public static void afterAllTests() throws Exception {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    if (ADMIN != null) ADMIN.close();<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>  @Test<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public void testWholesomeMerge() throws Exception {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    LOG.info("Starting testWholesomeMerge");<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    final TableName tableName =<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        TableName.valueOf("testWholesomeMerge");<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>    // Create table and load data.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    Table table = createTableAndLoadData(MASTER, tableName);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    // Merge 1st and 2nd region<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1,<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        INITIAL_REGION_NUM - 1);<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    // Merge 2nd and 3th region<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions =<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 1, 2,<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        INITIAL_REGION_NUM - 2);<a name="line.149"></a>
 <span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span>    // Randomly choose one of the two merged regions<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    HRegionInfo hri = RandomUtils.nextBoolean() ?<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      mergedRegions.getFirst() : mergedRegions.getSecond();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    AssignmentManager am = cluster.getMaster().getAssignmentManager();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    RegionStates regionStates = am.getRegionStates();<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    long start = EnvironmentEdgeManager.currentTime();<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    while (!regionStates.isRegionInState(hri, State.MERGED)) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      assertFalse("Timed out in waiting one merged region to be in state MERGED",<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        EnvironmentEdgeManager.currentTime() - start &gt; 60000);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      Thread.sleep(500);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>    // We should not be able to assign it again<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    am.assign(hri, true);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    assertFalse("Merged region can't be assigned",<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      regionStates.isRegionInTransition(hri));<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    assertTrue(regionStates.isRegionInState(hri, State.MERGED));<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>    // We should not be able to unassign it either<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    am.unassign(hri, null);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    assertFalse("Merged region can't be unassigned",<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      regionStates.isRegionInTransition(hri));<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    assertTrue(regionStates.isRegionInState(hri, State.MERGED));<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>    table.close();<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>   * Not really restarting the master. Simulate it by clear of new region<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * state since it is not persisted, will be lost after master restarts.<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   */<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  @Test<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  public void testMergeAndRestartingMaster() throws Exception {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    LOG.info("Starting testMergeAndRestartingMaster");<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    final TableName tableName = TableName.valueOf("testMergeAndRestartingMaster");<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>    // Create table and load data.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    Table table = createTableAndLoadData(MASTER, tableName);<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>    try {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      MyMasterRpcServices.enabled.set(true);<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>      // Merge 1st and 2nd region<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1, INITIAL_REGION_NUM - 1);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    } finally {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      MyMasterRpcServices.enabled.set(false);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    table.close();<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>  @Test<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  public void testCleanMergeReference() throws Exception {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    LOG.info("Starting testCleanMergeReference");<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    ADMIN.enableCatalogJanitor(false);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    try {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      final TableName tableName =<a name="line.208"></a>
-<span class="sourceLineNo">209</span>          TableName.valueOf("testCleanMergeReference");<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      // Create table and load data.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      Table table = createTableAndLoadData(MASTER, tableName);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      // Merge 1st and 2nd region<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1,<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          INITIAL_REGION_NUM - 1);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      verifyRowCount(table, ROWSIZE);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      table.close();<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>      List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions = MetaTableAccessor<a name="line.218"></a>
-<span class="sourceLineNo">219</span>          .getTableRegionsAndLocations(MASTER.getConnection(), tableName);<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      HRegionInfo mergedRegionInfo = tableRegions.get(0).getFirst();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      HTableDescriptor tableDescriptor = MASTER.getTableDescriptors().get(<a name="line.221"></a>
-<span class="sourceLineNo">222</span>          tableName);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      Result mergedRegionResult = MetaTableAccessor.getRegionResult(<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        MASTER.getConnection(), mergedRegionInfo.getRegionName());<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>      // contains merge reference in META<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.227"></a>
-<span class="sourceLineNo">228</span>          HConstants.MERGEA_QUALIFIER) != null);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.229"></a>
-<span class="sourceLineNo">230</span>          HConstants.MERGEB_QUALIFIER) != null);<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>      // merging regions' directory are in the file system all the same<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      PairOfSameType&lt;HRegionInfo&gt; p = MetaTableAccessor.getMergeRegions(mergedRegionResult);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      HRegionInfo regionA = p.getFirst();<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      HRegionInfo regionB = p.getSecond();<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      FileSystem fs = MASTER.getMasterFileSystem().getFileSystem();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      Path rootDir = MASTER.getMasterFileSystem().getRootDir();<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>      Path tabledir = FSUtils.getTableDir(rootDir, mergedRegionInfo.getTable());<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      Path regionAdir = new Path(tabledir, regionA.getEncodedName());<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      Path regionBdir = new Path(tabledir, regionB.getEncodedName());<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      assertTrue(fs.exists(regionAdir));<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      assertTrue(fs.exists(regionBdir));<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>      HColumnDescriptor[] columnFamilies = tableDescriptor.getColumnFamilies();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      HRegionFileSystem hrfs = new HRegionFileSystem(<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        TEST_UTIL.getConfiguration(), fs, tabledir, mergedRegionInfo);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      int count = 0;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        count += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      ADMIN.compactRegion(mergedRegionInfo.getRegionName());<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      // clean up the merged region store files<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      // wait until merged region have reference file<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      long timeout = System.currentTimeMillis() + waitTime;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      int newcount = 0;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      while (System.currentTimeMillis() &lt; timeout) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          newcount += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        }<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        if(newcount &gt; count) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>          break;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        }<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        Thread.sleep(50);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      assertTrue(newcount &gt; count);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      List&lt;RegionServerThread&gt; regionServerThreads = TEST_UTIL.getHBaseCluster()<a name="line.267"></a>
-<span class="sourceLineNo">268</span>          .getRegionServerThreads();<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      for (RegionServerThread rs : regionServerThreads) {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        CompactedHFilesDischarger cleaner = new CompactedHFilesDischarger(100, null,<a name="line.270"></a>
-<span class="sourceLineNo">271</span>            rs.getRegionServer(), false);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        cleaner.chore();<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        Thread.sleep(1000);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      }<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      while (System.currentTimeMillis() &lt; timeout) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        int newcount1 = 0;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>          newcount1 += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        }<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        if(newcount1 &lt;= 1) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          break;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        Thread.sleep(50);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      // run CatalogJanitor to clean merge references in hbase:meta and archive the<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      // files of merging regions<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      int cleaned = 0;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      while (cleaned == 0) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        cleaned = ADMIN.runCatalogScan();<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        LOG.debug("catalog janitor returned " + cleaned);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        Thread.sleep(50);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      assertFalse(regionAdir.toString(), fs.exists(regionAdir));<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      assertFalse(regionBdir.toString(), fs.exists(regionBdir));<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      assertTrue(cleaned &gt; 0);<a name="line.295"></a>
-<span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>      mergedRegionResult = MetaTableAccessor.getRegionResult(<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        TEST_UTIL.getConnection(), mergedRegionInfo.getRegionName());<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          HConstants.MERGEA_QUALIFIER) != null);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.301"></a>
-<span class="sourceLineNo">302</span>          HConstants.MERGEB_QUALIFIER) != null);<a name="line.302"></a>
-<span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>    } finally {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      ADMIN.enableCatalogJanitor(true);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  /**<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * This test tests 1, merging region not online;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * 2, merging same two regions; 3, merging unknown regions.<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * They are in one test case so that we don't have to create<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * many tables, and these tests are simple.<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  @Test<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  public void testMerge() throws Exception {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    LOG.info("Starting testMerge");<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    final TableName tableName = TableName.valueOf("testMerge");<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>    try {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      // Create table and load data.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      Table table = createTableAndLoadData(MASTER, tableName);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      RegionStates regionStates = MASTER.getAssignmentManager().getRegionStates();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      List&lt;HRegionInfo&gt; regions = regionStates.getRegionsOfTable(tableName);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      // Fake offline one region<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      HRegionInfo a = regions.get(0);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      HRegionInfo b = regions.get(1);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      regionStates.regionOffline(a);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      try {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        // Merge offline region. Region a is offline here<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        ADMIN.mergeRegions(a.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), false);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        fail("Offline regions should not be able to merge");<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      } catch (IOException ie) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        System.out.println(ie);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        assertTrue("Exception should mention regions not online",<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          StringUtils.stringifyException(ie).contains("regions not online")<a name="line.336"></a>
-<span class="sourceLineNo">337</span>            &amp;&amp; ie instanceof MergeRegionException);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      try {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        // Merge the same region: b and b.<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        ADMIN.mergeRegions(b.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), true);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        fail("A region should not be able to merge with itself, even forcifully");<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      } catch (IOException ie) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        assertTrue("Exception should mention regions not online",<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          StringUtils.stringifyException(ie).contains("region to itself")<a name="line.345"></a>
-<span class="sourceLineNo">346</span>            &amp;&amp; ie instanceof MergeRegionException);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      try {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        // Merge unknown regions<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        ADMIN.mergeRegions(Bytes.toBytes("-f1"), Bytes.toBytes("-f2"), true);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        fail("Unknown region could not be merged");<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      } catch (IOException ie) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        assertTrue("UnknownRegionException should be thrown",<a name="line.353"></a>
-<span class="sourceLineNo">354</span>          ie instanceof UnknownRegionException);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      table.close();<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    } finally {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      TEST_UTIL.deleteTable(tableName);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  @Test<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  public void testMergeWithReplicas() throws Exception {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    final TableName tableName = TableName.valueOf("testMergeWithReplicas");<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    // Create table and load data.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    createTableAndLoadData(MASTER, tableName, 5, 2);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; initialRegionToServers =<a name="line.367"></a>
-<span class="sourceLineNo">368</span>        MetaTableAccessor.getTableRegionsAndLocations(<a name="line.368"></a>
-<span class="sourceLineNo">369</span>            TEST_UTIL.getConnection(), tableName);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    // Merge 1st and 2nd region<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions = mergeRegionsAndVerifyRegionNum(MASTER, tableName,<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        0, 2, 5 * 2 - 2);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; currentRegionToServers =<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        MetaTableAccessor.getTableRegionsAndLocations(<a name="line.374"></a>
-<span class="sourceLineNo">375</span>            TEST_UTIL.getConnection(), tableName);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    List&lt;HRegionInfo&gt; initialRegions = new ArrayList&lt;HRegionInfo&gt;();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    for (Pair&lt;HRegionInfo, ServerName&gt; p : initialRegionToServers) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      initialRegions.add(p.getFirst());<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    }<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    List&lt;HRegionInfo&gt; currentRegions = new ArrayList&lt;HRegionInfo&gt;();<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    for (Pair&lt;HRegionInfo, ServerName&gt; p : currentRegionToServers) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      currentRegions.add(p.getFirst());<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    assertTrue(initialRegions.contains(mergedRegions.getFirst())); //this is the first region<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    assertTrue(initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        mergedRegions.getFirst(), 1))); //this is the replica of the first region<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    assertTrue(initialRegions.contains(mergedRegions.getSecond())); //this is the second region<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    assertTrue(initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.388"></a>
-<span class="sourceLineNo">389</span>        mergedRegions.getSecond(), 1))); //this is the replica of the second region<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    assertTrue(!initialRegions.contains(currentRegions.get(0))); //this is the new region<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    assertTrue(!initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        currentRegions.get(0), 1))); //replica of the new region<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    assertTrue(currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        currentRegions.get(0), 1))); //replica of the new region<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertTrue(!currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        mergedRegions.getFirst(), 1))); //replica of the merged region<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    assertTrue(!currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        mergedRegions.getSecond(), 1))); //replica of the merged region<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  }<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private PairOfSameType&lt;HRegionInfo&gt; mergeRegionsAndVerifyRegionNum(<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      HMaster master, TableName tablename,<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      int regionAnum, int regionBnum, int expectedRegionNum) throws Exception {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions =<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      requestMergeRegion(master, tablename, regionAnum, regionBnum);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    waitAndVerifyRegionNum(master, tablename, expectedRegionNum);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    return mergedRegions;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  }<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private PairOfSameType&lt;HRegionInfo&gt; requestMergeRegion(<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      HMaster master, TableName tablename,<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      int regionAnum, int regionBnum) throws Exception {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions = MetaTableAccessor<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        .getTableRegionsAndLocations(<a name="line.414"></a>
-<span class="sourceLineNo">415</span>            TEST_UTIL.getConnection(), tablename);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    HRegionInfo regionA = tableRegions.get(regionAnum).getFirst();<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    HRegionInfo regionB = tableRegions.get(regionBnum).getFirst();<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    ADMIN.mergeRegions(<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      regionA.getEncodedNameAsBytes(),<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      regionB.getEncodedNameAsBytes(), false);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    return new PairOfSameType&lt;HRegionInfo&gt;(regionA, regionB);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  }<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>  private void waitAndVerifyRegionNum(HMaster master, TableName tablename,<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      int expectedRegionNum) throws Exception {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegionsInMeta;<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    List&lt;HRegionInfo&gt; tableRegionsInMaster;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    long timeout = System.currentTimeMillis() + waitTime;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    while (System.currentTimeMillis() &lt; timeout) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      tableRegionsInMeta = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        TEST_UTIL.getConnection(), tablename);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      tableRegionsInMaster = master.getAssignmentManager().getRegionStates()<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          .getRegionsOfTable(tablename);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      if (tableRegionsInMeta.size() == expectedRegionNum<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          &amp;&amp; tableRegionsInMaster.size() == expectedRegionNum) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>        break;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      }<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      Thread.sleep(250);<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>    tableRegionsInMeta = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        TEST_UTIL.getConnection(), tablename);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    LOG.info("Regions after merge:" + Joiner.on(',').join(tableRegionsInMeta));<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    assertEquals(expectedRegionNum, tableRegionsInMeta.size());<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  private Table createTableAndLoadData(HMaster master, TableName tablename)<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      throws Exception {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    return createTableAndLoadData(master, tablename, INITIAL_REGION_NUM, 1);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private Table createTableAndLoadData(HMaster master, TableName tablename,<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      int numRegions, int replication) throws Exception {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    assertTrue("ROWSIZE must &gt; numregions:" + numRegions, ROWSIZE &gt; numRegions);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    byte[][] splitRows = new byte[numRegions - 1][];<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    for (int i = 0; i &lt; splitRows.length; i++) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      splitRows[i] = ROWS[(i + 1) * ROWSIZE / numRegions];<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>    Table table = TEST_UTIL.createTable(tablename, FAMILYNAME, splitRows);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    if (replication &gt; 1) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      HBaseTestingUtility.setReplicas(ADMIN, tablename, replication);<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    }<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    loadData(table);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    verifyRowCount(table, ROWSIZE);<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    // sleep here is an ugly hack to allow region transitions to finish<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    long timeout = System.currentTimeMillis() + waitTime;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    while (System.currentTimeMillis() &lt; timeout) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      tableRegions = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.471"></a>
-<span class="sourceLineNo">472</span>          TEST_UTIL.getConnection(), tablename);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      if (tableRegions.size() == numRegions * replication)<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        break;<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      Thread.sleep(250);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>    tableRegions = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        TEST_UTIL.getConnection(), tablename);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    LOG.info("Regions after load: " + Joiner.on(',').join(tableRegions));<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    assertEquals(numRegions * replication, tableRegions.size());<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    return table;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  }<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span>  private static byte[][] makeN(byte[] base, int n) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    byte[][] ret = new byte[n][];<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    for (int i = 0; i &lt; n; i++) {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      ret[i] = Bytes.add(base, Bytes.toBytes(String.format("%04d", i)));<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    }<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    return ret;<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>  private void loadData(Table table) throws IOException {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    for (int i = 0; i &lt; ROWSIZE; i++) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      Put put = new Put(ROWS[i]);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      put.addColumn(FAMILYNAME, QUALIFIER, Bytes.toBytes(i));<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      table.put(put);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    }<a name="line.498"></a>
-<span class="sourceLineNo">499</span>  }<a name="line.499"></a>
-<span class="sourceLineNo">500</span><a name="line.500"></a>
-<span class="sourceLineNo">501</span>  private void verifyRowCount(Table table, int expectedRegionNum)<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      throws IOException {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    ResultScanner scanner = table.getScanner(new Scan());<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    int rowCount = 0;<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    while (scanner.next() != null) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      rowCount++;<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    }<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    assertEquals(expectedRegionNum, rowCount);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    scanner.close();<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>  // Make it public so that JVMClusterUtil can access it.<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  public static class MyMaster extends HMaster {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    public MyMaster(Configuration conf, CoordinatedStateManager cp)<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      throws IOException, KeeperException,<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        InterruptedException {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      super(conf, cp);<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>    @Override<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    protected RSRpcServices createRpcServices() throws IOException {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      return new MyMasterRpcServices(this);<a name="line.522"></a>
+<span class="sourceLineNo">151</span>    verifyRowCount(table, ROWSIZE);<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    // Randomly choose one of the two merged regions<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    HRegionInfo hri = RandomUtils.nextBoolean() ?<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      mergedRegions.getFirst() : mergedRegions.getSecond();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    AssignmentManager am = cluster.getMaster().getAssignmentManager();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    RegionStates regionStates = am.getRegionStates();<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    long start = EnvironmentEdgeManager.currentTime();<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    while (!regionStates.isRegionInState(hri, State.MERGED)) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      assertFalse("Timed out in waiting one merged region to be in state MERGED",<a name="line.161"></a>
+<span class="sourceLineNo">162</span>        EnvironmentEdgeManager.currentTime() - start &gt; 60000);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      Thread.sleep(500);<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>    // We should not be able to assign it again<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    am.assign(hri, true);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    assertFalse("Merged region can't be assigned",<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      regionStates.isRegionInTransition(hri));<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    assertTrue(regionStates.isRegionInState(hri, State.MERGED));<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>    // We should not be able to unassign it either<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    am.unassign(hri, null);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    assertFalse("Merged region can't be unassigned",<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      regionStates.isRegionInTransition(hri));<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    assertTrue(regionStates.isRegionInState(hri, State.MERGED));<a name="line.176"></a>
+<span class="sourceLineNo">177</span><a name="line.177"></a>
+<span class="sourceLineNo">178</span>    table.close();<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>  /**<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * Not really restarting the master. Simulate it by clear of new region<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * state since it is not persisted, will be lost after master restarts.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   */<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @Test<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public void testMergeAndRestartingMaster() throws Exception {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    final TableName tableName = TableName.valueOf("testMergeAndRestartingMaster");<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>    // Create table and load data.<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    Table table = createTableAndLoadData(MASTER, tableName);<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>    try {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      MyMasterRpcServices.enabled.set(true);<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>      // Merge 1st and 2nd region<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1, INITIAL_REGION_NUM - 1);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    } finally {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      MyMasterRpcServices.enabled.set(false);<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>    table.close();<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>  @Test<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  public void testCleanMergeReference() throws Exception {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    LOG.info("Starting testCleanMergeReference");<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    ADMIN.enableCatalogJanitor(false);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    try {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      final TableName tableName =<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          TableName.valueOf("testCleanMergeReference");<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      // Create table and load data.<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      Table table = createTableAndLoadData(MASTER, tableName);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      // Merge 1st and 2nd region<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1,<a name="line.214"></a>
+<span class="sourceLineNo">215</span>          INITIAL_REGION_NUM - 1);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      verifyRowCount(table, ROWSIZE);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      table.close();<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>      List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions = MetaTableAccessor<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          .getTableRegionsAndLocations(MASTER.getConnection(), tableName);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      HRegionInfo mergedRegionInfo = tableRegions.get(0).getFirst();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      HTableDescriptor tableDescriptor = MASTER.getTableDescriptors().get(<a name="line.222"></a>
+<span class="sourceLineNo">223</span>          tableName);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      Result mergedRegionResult = MetaTableAccessor.getRegionResult(<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        MASTER.getConnection(), mergedRegionInfo.getRegionName());<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>      // contains merge reference in META<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.228"></a>
+<span class="sourceLineNo">229</span>          HConstants.MERGEA_QUALIFIER) != null);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.230"></a>
+<span class="sourceLineNo">231</span>          HConstants.MERGEB_QUALIFIER) != null);<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>      // merging regions' directory are in the file system all the same<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      PairOfSameType&lt;HRegionInfo&gt; p = MetaTableAccessor.getMergeRegions(mergedRegionResult);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      HRegionInfo regionA = p.getFirst();<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      HRegionInfo regionB = p.getSecond();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      FileSystem fs = MASTER.getMasterFileSystem().getFileSystem();<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      Path rootDir = MASTER.getMasterFileSystem().getRootDir();<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>      Path tabledir = FSUtils.getTableDir(rootDir, mergedRegionInfo.getTable());<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      Path regionAdir = new Path(tabledir, regionA.getEncodedName());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      Path regionBdir = new Path(tabledir, regionB.getEncodedName());<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      assertTrue(fs.exists(regionAdir));<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      assertTrue(fs.exists(regionBdir));<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>      HColumnDescriptor[] columnFamilies = tableDescriptor.getColumnFamilies();<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      HRegionFileSystem hrfs = new HRegionFileSystem(<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        TEST_UTIL.getConfiguration(), fs, tabledir, mergedRegionInfo);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      int count = 0;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        count += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      ADMIN.compactRegion(mergedRegionInfo.getRegionName());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      // clean up the merged region store files<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      // wait until merged region have reference file<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      long timeout = System.currentTimeMillis() + waitTime;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      int newcount = 0;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      while (System.currentTimeMillis() &lt; timeout) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          newcount += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        }<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        if(newcount &gt; count) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          break;<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        Thread.sleep(50);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      }<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      assertTrue(newcount &gt; count);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      List&lt;RegionServerThread&gt; regionServerThreads = TEST_UTIL.getHBaseCluster()<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          .getRegionServerThreads();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      for (RegionServerThread rs : regionServerThreads) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        CompactedHFilesDischarger cleaner = new CompactedHFilesDischarger(100, null,<a name="line.271"></a>
+<span class="sourceLineNo">272</span>            rs.getRegionServer(), false);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        cleaner.chore();<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        Thread.sleep(1000);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      while (System.currentTimeMillis() &lt; timeout) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        int newcount1 = 0;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        for(HColumnDescriptor colFamily : columnFamilies) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>          newcount1 += hrfs.getStoreFiles(colFamily.getName()).size();<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        if(newcount1 &lt;= 1) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          break;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        Thread.sleep(50);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      // run CatalogJanitor to clean merge references in hbase:meta and archive the<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      // files of merging regions<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      int cleaned = 0;<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      while (cleaned == 0) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        cleaned = ADMIN.runCatalogScan();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        LOG.debug("catalog janitor returned " + cleaned);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        Thread.sleep(50);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      }<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      assertFalse(regionAdir.toString(), fs.exists(regionAdir));<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      assertFalse(regionBdir.toString(), fs.exists(regionBdir));<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      assertTrue(cleaned &gt; 0);<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>      mergedRegionResult = MetaTableAccessor.getRegionResult(<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        TEST_UTIL.getConnection(), mergedRegionInfo.getRegionName());<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          HConstants.MERGEA_QUALIFIER) != null);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          HConstants.MERGEB_QUALIFIER) != null);<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>    } finally {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      ADMIN.enableCatalogJanitor(true);<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><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /**<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * This test tests 1, merging region not online;<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * 2, merging same two regions; 3, merging unknown regions.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * They are in one test case so that we don't have to create<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * many tables, and these tests are simple.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   */<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  @Test<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public void testMerge() throws Exception {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    LOG.info("Starting testMerge");<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    final TableName tableName = TableName.valueOf("testMerge");<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>    try {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      // Create table and load data.<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      Table table = createTableAndLoadData(MASTER, tableName);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      RegionStates regionStates = MASTER.getAssignmentManager().getRegionStates();<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      List&lt;HRegionInfo&gt; regions = regionStates.getRegionsOfTable(tableName);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      // Fake offline one region<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      HRegionInfo a = regions.get(0);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      HRegionInfo b = regions.get(1);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      regionStates.regionOffline(a);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      try {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        // Merge offline region. Region a is offline here<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        ADMIN.mergeRegions(a.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), false);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>        fail("Offline regions should not be able to merge");<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      } catch (IOException ie) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        System.out.println(ie);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        assertTrue("Exception should mention regions not online",<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          StringUtils.stringifyException(ie).contains("regions not online")<a name="line.337"></a>
+<span class="sourceLineNo">338</span>            &amp;&amp; ie instanceof MergeRegionException);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      try {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        // Merge the same region: b and b.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        ADMIN.mergeRegions(b.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), true);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        fail("A region should not be able to merge with itself, even forcifully");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      } catch (IOException ie) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        assertTrue("Exception should mention regions not online",<a name="line.345"></a>
+<span class="sourceLineNo">346</span>          StringUtils.stringifyException(ie).contains("region to itself")<a name="line.346"></a>
+<span class="sourceLineNo">347</span>            &amp;&amp; ie instanceof MergeRegionException);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      try {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        // Merge unknown regions<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        ADMIN.mergeRegions(Bytes.toBytes("-f1"), Bytes.toBytes("-f2"), true);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        fail("Unknown region could not be merged");<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      } catch (IOException ie) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        assertTrue("UnknownRegionException should be thrown",<a name="line.354"></a>
+<span class="sourceLineNo">355</span>          ie instanceof UnknownRegionException);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      table.close();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    } finally {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      TEST_UTIL.deleteTable(tableName);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  @Test<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  public void testMergeWithReplicas() throws Exception {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    final TableName tableName = TableName.valueOf("testMergeWithReplicas");<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    // Create table and load data.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    createTableAndLoadData(MASTER, tableName, 5, 2);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; initialRegionToServers =<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        MetaTableAccessor.getTableRegionsAndLocations(<a name="line.369"></a>
+<span class="sourceLineNo">370</span>            TEST_UTIL.getConnection(), tableName);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    // Merge 1st and 2nd region<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions = mergeRegionsAndVerifyRegionNum(MASTER, tableName,<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        0, 2, 5 * 2 - 2);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; currentRegionToServers =<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        MetaTableAccessor.getTableRegionsAndLocations(<a name="line.375"></a>
+<span class="sourceLineNo">376</span>            TEST_UTIL.getConnection(), tableName);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    List&lt;HRegionInfo&gt; initialRegions = new ArrayList&lt;HRegionInfo&gt;();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    for (Pair&lt;HRegionInfo, ServerName&gt; p : initialRegionToServers) {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      initialRegions.add(p.getFirst());<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    List&lt;HRegionInfo&gt; currentRegions = new ArrayList&lt;HRegionInfo&gt;();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    for (Pair&lt;HRegionInfo, ServerName&gt; p : currentRegionToServers) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      currentRegions.add(p.getFirst());<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    assertTrue(initialRegions.contains(mergedRegions.getFirst())); //this is the first region<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    assertTrue(initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        mergedRegions.getFirst(), 1))); //this is the replica of the first region<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    assertTrue(initialRegions.contains(mergedRegions.getSecond())); //this is the second region<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    assertTrue(initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        mergedRegions.getSecond(), 1))); //this is the replica of the second region<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    assertTrue(!initialRegions.contains(currentRegions.get(0))); //this is the new region<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    assertTrue(!initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        currentRegions.get(0), 1))); //replica of the new region<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    assertTrue(currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        currentRegions.get(0), 1))); //replica of the new region<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertTrue(!currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        mergedRegions.getFirst(), 1))); //replica of the merged region<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    assertTrue(!currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        mergedRegions.getSecond(), 1))); //replica of the merged region<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>  private PairOfSameType&lt;HRegionInfo&gt; mergeRegionsAndVerifyRegionNum(<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      HMaster master, TableName tablename,<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      int regionAnum, int regionBnum, int expectedRegionNum) throws Exception {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    PairOfSameType&lt;HRegionInfo&gt; mergedRegions =<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      requestMergeRegion(master, tablename, regionAnum, regionBnum);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    waitAndVerifyRegionNum(master, tablename, expectedRegionNum);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    return mergedRegions;<a name="line.408"></a>
+<span class="sourceLineNo">409</span>  }<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>  private PairOfSameType&lt;HRegionInfo&gt; requestMergeRegion(<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      HMaster master, TableName tablename,<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      int regionAnum, int regionBnum) throws Exception {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions = MetaTableAccessor<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        .getTableRegionsAndLocations(<a name="line.415"></a>
+<span class="sourceLineNo">416</span>            TEST_UTIL.getConnection(), tablename);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    HRegionInfo regionA = tableRegions.get(regionAnum).getFirst();<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    HRegionInfo regionB = tableRegions.get(regionBnum).getFirst();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    ADMIN.mergeRegions(<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      regionA.getEncodedNameAsBytes(),<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      regionB.getEncodedNameAsBytes(), false);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    return new PairOfSameType&lt;HRegionInfo&gt;(regionA, regionB);<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>  private void waitAndVerifyRegionNum(HMaster master, TableName tablename,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      int expectedRegionNum) throws Exception {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegionsInMeta;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    List&lt;HRegionInfo&gt; tableRegionsInMaster;<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    long timeout = System.currentTimeMillis() + waitTime;<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    while (System.currentTimeMillis() &lt; timeout) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      tableRegionsInMeta = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.431"></a>
+<span class="sourceLineNo">432</span>        TEST_UTIL.getConnection(), tablename);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      tableRegionsInMaster = master.getAssignmentManager().getRegionStates()<a name="line.433"></a>
+<span class="sourceLineNo">434</span>          .getRegionsOfTable(tablename);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      if (tableRegionsInMeta.size() == expectedRegionNum<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          &amp;&amp; tableRegionsInMaster.size() == expectedRegionNum) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        break;<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      Thread.sleep(250);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>    tableRegionsInMeta = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        TEST_UTIL.getConnection(), tablename);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    LOG.info("Regions after merge:" + Joiner.on(',').join(tableRegionsInMeta));<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    assertEquals(expectedRegionNum, tableRegionsInMeta.size());<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  private Table createTableAndLoadData(HMaster master, TableName tablename)<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      throws Exception {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    return createTableAndLoadData(master, tablename, INITIAL_REGION_NUM, 1);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  }<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>  private Table createTableAndLoadData(HMaster master, TableName tablename,<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      int numRegions, int replication) throws Exception {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertTrue("ROWSIZE must &gt; numregions:" + numRegions, ROWSIZE &gt; numRegions);<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    byte[][] splitRows = new byte[numRegions - 1][];<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    for (int i = 0; i &lt; splitRows.length; i++) {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      splitRows[i] = ROWS[(i + 1) * ROWSIZE / numRegions];<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    }<a name="line.459"></a>
+<span class="sourceLineNo">460</span><a name="line.460"></a>
+<span class="sourceLineNo">461</span>    Table table = TEST_UTIL.createTable(tablename, FAMILYNAME, splitRows);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    LOG.info("Created " + table.getName());<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    if (replication &gt; 1) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      HBaseTestingUtility.setReplicas(ADMIN, tablename, replication);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      LOG.info("Set replication of " + replication + " on " + table.getName());<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    loadData(table);<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    LOG.info("Loaded " + table.getName());<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    verifyRowCount(table, ROWSIZE);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    LOG.info("Verified " + table.getName());<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>    // sleep here is an ugly hack to allow region transitions to finish<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    long timeout = System.currentTimeMillis() + waitTime;<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    while (System.currentTimeMillis() &lt; timeout) {<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      tableRegions = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.476"></a>
+<span class="sourceLineNo">477</span>          TEST_UTIL.getConnection(), tablename);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      if (tableRegions.size() == numRegions * replication)<a name="line.478"></a>
+<span class="sourceLineNo">479</span>        break;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      Thread.sleep(250);<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    LOG.info("Getting regions of " + table.getName());<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    tableRegions = MetaTableAccessor.getTableRegionsAndLocations(<a name="line.483"></a>
+<span class="sourceLineNo">484</span>        TEST_UTIL.getConnection(), tablename);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    LOG.info("Regions after load: " + Joiner.on(',').join(tableRegions));<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    assertEquals(numRegions * replication, tableRegions.size());<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    return table;<a name="line.487"></a>
+<span class="sourceLineNo">488</span>  }<a name="line.488"></a>
+<span class="sourceLineNo">489</span><a name="line.489"></a>
+<span class="sourceLineNo">490</span>  private static byte[][] makeN(byte[] base, int n) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    byte[][] ret = new byte[n][];<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    for (int i = 0; i &lt; n; i++) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>      ret[i] = Bytes.add(base, Bytes.toBytes(String.format("%04d", i)));<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    return ret;<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>  private void loadData(Table table) throws IOException {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    for (int i = 0; i &lt; ROWSIZE; i++) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      Put put = new Put(ROWS[i]);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      put.addColumn(FAMILY

<TRUNCATED>

[25/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/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 88ac539..5754645 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
@@ -50,175 +50,186 @@
 <span class="sourceLineNo">042</span>public abstract class RpcExecutor {<a name="line.42"></a>
 <span class="sourceLineNo">043</span>  private static final Log LOG = LogFactory.getLog(RpcExecutor.class);<a name="line.43"></a>
 <span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>  private final AtomicInteger activeHandlerCount = new AtomicInteger(0);<a name="line.45"></a>
-<span class="sourceLineNo">046</span>  private final List&lt;Thread&gt; handlers;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private final int handlerCount;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private final String name;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  private final AtomicInteger failedHandlerCount = new AtomicInteger(0);<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>  private boolean running;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>  private Configuration conf = null;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  private Abortable abortable = null;<a name="line.54"></a>
+<span class="sourceLineNo">045</span>  protected static final int DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT = 250;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>  protected volatile int currentQueueLimit;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>  private final AtomicInteger activeHandlerCount = new AtomicInteger(0);<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private final List&lt;Thread&gt; handlers;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private final int handlerCount;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private final String name;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private final AtomicInteger failedHandlerCount = new AtomicInteger(0);<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private boolean running;<a name="line.54"></a>
 <span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  public RpcExecutor(final String name, final int handlerCount) {<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    this.handlers = new ArrayList&lt;Thread&gt;(handlerCount);<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    this.handlerCount = handlerCount;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    this.name = Strings.nullToEmpty(name);<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  public RpcExecutor(final String name, final int handlerCount, final Configuration conf,<a name="line.62"></a>
-<span class="sourceLineNo">063</span>      final Abortable abortable) {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    this(name, handlerCount);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    this.conf = conf;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    this.abortable = abortable;<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 void start(final int port) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    running = true;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    startHandlers(port);<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 stop() {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    running = false;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    for (Thread handler : handlers) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      handler.interrupt();<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public int getActiveHandlerCount() {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    return activeHandlerCount.get();<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>  /** Returns the length of the pending queue */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public abstract int getQueueLength();<a name="line.86"></a>
+<span class="sourceLineNo">056</span>  private Configuration conf = null;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private Abortable abortable = null;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  public RpcExecutor(final String name, final int handlerCount) {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    this.handlers = new ArrayList&lt;Thread&gt;(handlerCount);<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    this.handlerCount = handlerCount;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    this.name = Strings.nullToEmpty(name);<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public RpcExecutor(final String name, final int handlerCount, final Configuration conf,<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      final Abortable abortable) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    this(name, handlerCount);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    this.conf = conf;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    this.abortable = abortable;<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 void start(final int port) {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    running = true;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    startHandlers(port);<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 void stop() {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    running = false;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    for (Thread handler : handlers) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      handler.interrupt();<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><a name="line.83"></a>
+<span class="sourceLineNo">084</span>  public int getActiveHandlerCount() {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    return activeHandlerCount.get();<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>  /** Add the request to the executor queue */<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  public abstract boolean dispatch(final CallRunner callTask) throws InterruptedException;<a name="line.89"></a>
+<span class="sourceLineNo">088</span>  /** Returns the length of the pending queue */<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  public abstract int getQueueLength();<a name="line.89"></a>
 <span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  /** Returns the list of request queues */<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  protected abstract List&lt;BlockingQueue&lt;CallRunner&gt;&gt; getQueues();<a name="line.92"></a>
+<span class="sourceLineNo">091</span>  /** Add the request to the executor queue */<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  public abstract boolean dispatch(final CallRunner callTask) throws InterruptedException;<a name="line.92"></a>
 <span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>  protected void startHandlers(final int port) {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    List&lt;BlockingQueue&lt;CallRunner&gt;&gt; callQueues = getQueues();<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    startHandlers(null, handlerCount, callQueues, 0, callQueues.size(), port);<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>  protected void startHandlers(final String nameSuffix, final int numHandlers,<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      final List&lt;BlockingQueue&lt;CallRunner&gt;&gt; callQueues,<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      final int qindex, final int qsize, final int port) {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    final String threadPrefix = name + Strings.nullToEmpty(nameSuffix);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    for (int i = 0; i &lt; numHandlers; i++) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>      final int index = qindex + (i % qsize);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      Thread t = new Thread(new Runnable() {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>        @Override<a name="line.106"></a>
-<span class="sourceLineNo">107</span>        public void run() {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>          consumerLoop(callQueues.get(index));<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>      t.setDaemon(true);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      t.setName(threadPrefix + "RpcServer.handler=" + handlers.size() +<a name="line.112"></a>
-<span class="sourceLineNo">113</span>        ",queue=" + index + ",port=" + port);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      t.start();<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      LOG.debug(threadPrefix + " Start Handler index=" + handlers.size() + " queue=" + index);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      handlers.add(t);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>  protected void consumerLoop(final BlockingQueue&lt;CallRunner&gt; myQueue) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    boolean interrupted = false;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    double handlerFailureThreshhold =<a name="line.122"></a>
-<span class="sourceLineNo">123</span>        conf == null ? 1.0 : conf.getDouble(HConstants.REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT,<a name="line.123"></a>
-<span class="sourceLineNo">124</span>          HConstants.DEFAULT_REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    try {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      while (running) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>        try {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>          MonitoredRPCHandler status = RpcServer.getStatus();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>          CallRunner task = myQueue.take();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>          task.setStatus(status);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>          try {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>            activeHandlerCount.incrementAndGet();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>            task.run();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>          } catch (Throwable e) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>            if (e instanceof Error) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>              int failedCount = failedHandlerCount.incrementAndGet();<a name="line.136"></a>
-<span class="sourceLineNo">137</span>              if (handlerFailureThreshhold &gt;= 0<a name="line.137"></a>
-<span class="sourceLineNo">138</span>                  &amp;&amp; failedCount &gt; handlerCount * handlerFailureThreshhold) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>                String message =<a name="line.139"></a>
-<span class="sourceLineNo">140</span>                    "Number of failed RpcServer handler exceeded threshhold "<a name="line.140"></a>
-<span class="sourceLineNo">141</span>                        + handlerFailureThreshhold + "  with failed reason: "<a name="line.141"></a>
-<span class="sourceLineNo">142</span>                        + StringUtils.stringifyException(e);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>                if (abortable != null) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>                  abortable.abort(message, e);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>                } else {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>                  LOG.error("Received " + StringUtils.stringifyException(e)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>                    + " but not aborting due to abortable being null");<a name="line.147"></a>
-<span class="sourceLineNo">148</span>                  throw e;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>                }<a name="line.149"></a>
-<span class="sourceLineNo">150</span>              } else {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>                LOG.warn("RpcServer handler threads encountered errors "<a name="line.151"></a>
-<span class="sourceLineNo">152</span>                    + StringUtils.stringifyException(e));<a name="line.152"></a>
-<span class="sourceLineNo">153</span>              }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>            } else {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>              LOG.warn("RpcServer handler threads encountered exceptions "<a name="line.155"></a>
-<span class="sourceLineNo">156</span>                  + StringUtils.stringifyException(e));<a name="line.156"></a>
-<span class="sourceLineNo">157</span>            }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>          } finally {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>            activeHandlerCount.decrementAndGet();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        } catch (InterruptedException e) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          interrupted = true;<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>    } finally {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      if (interrupted) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        Thread.currentThread().interrupt();<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><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  public static abstract class QueueBalancer {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    /**<a name="line.173"></a>
-<span class="sourceLineNo">174</span>     * @return the index of the next queue to which a request should be inserted<a name="line.174"></a>
-<span class="sourceLineNo">175</span>     */<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    public abstract int getNextQueue();<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>  public static QueueBalancer getBalancer(int queueSize) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    Preconditions.checkArgument(queueSize &gt; 0, "Queue size is &lt;= 0, must be at least 1");<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    if (queueSize == 1) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      return ONE_QUEUE;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    } else {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      return new RandomQueueBalancer(queueSize);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  }<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>  /**<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * All requests go to the first queue, at index 0<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   */<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  private static QueueBalancer ONE_QUEUE = new QueueBalancer() {<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>    @Override<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    public int getNextQueue() {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return 0;<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><a name="line.198"></a>
-<span class="sourceLineNo">199</span>  /**<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * Queue balancer that just randomly selects a queue in the range [0, num queues).<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   */<a name="line.201"></a>
-<span class="sourceLineNo">202</span>  private static class RandomQueueBalancer extends QueueBalancer {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    private final int queueSize;<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span>    public RandomQueueBalancer(int queueSize) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      this.queueSize = queueSize;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    public int getNextQueue() {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      return ThreadLocalRandom.current().nextInt(queueSize);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>}<a name="line.213"></a>
+<span class="sourceLineNo">094</span>  /** Returns the list of request queues */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  protected abstract List&lt;BlockingQueue&lt;CallRunner&gt;&gt; getQueues();<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  protected void startHandlers(final int port) {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    List&lt;BlockingQueue&lt;CallRunner&gt;&gt; callQueues = getQueues();<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    startHandlers(null, handlerCount, callQueues, 0, callQueues.size(), port);<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>  protected void startHandlers(final String nameSuffix, final int numHandlers,<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      final List&lt;BlockingQueue&lt;CallRunner&gt;&gt; callQueues,<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      final int qindex, final int qsize, final int port) {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    final String threadPrefix = name + Strings.nullToEmpty(nameSuffix);<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    for (int i = 0; i &lt; numHandlers; i++) {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      final int index = qindex + (i % qsize);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      Thread t = new Thread(new Runnable() {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>        @Override<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        public void run() {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>          consumerLoop(callQueues.get(index));<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>      t.setDaemon(true);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      t.setName(threadPrefix + "RpcServer.handler=" + handlers.size() +<a name="line.115"></a>
+<span class="sourceLineNo">116</span>        ",queue=" + index + ",port=" + port);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      t.start();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      LOG.debug(threadPrefix + " Start Handler index=" + handlers.size() + " queue=" + index);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      handlers.add(t);<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>  protected void consumerLoop(final BlockingQueue&lt;CallRunner&gt; myQueue) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    boolean interrupted = false;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    double handlerFailureThreshhold =<a name="line.125"></a>
+<span class="sourceLineNo">126</span>        conf == null ? 1.0 : conf.getDouble(HConstants.REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT,<a name="line.126"></a>
+<span class="sourceLineNo">127</span>          HConstants.DEFAULT_REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    try {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      while (running) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        try {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>          MonitoredRPCHandler status = RpcServer.getStatus();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>          CallRunner task = myQueue.take();<a name="line.132"></a>
+<span class="sourceLineNo">133</span>          task.setStatus(status);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          try {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>            activeHandlerCount.incrementAndGet();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>            task.run();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>          } catch (Throwable e) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>            if (e instanceof Error) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>              int failedCount = failedHandlerCount.incrementAndGet();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>              if (handlerFailureThreshhold &gt;= 0<a name="line.140"></a>
+<span class="sourceLineNo">141</span>                  &amp;&amp; failedCount &gt; handlerCount * handlerFailureThreshhold) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>                String message =<a name="line.142"></a>
+<span class="sourceLineNo">143</span>                    "Number of failed RpcServer handler exceeded threshhold "<a name="line.143"></a>
+<span class="sourceLineNo">144</span>                        + handlerFailureThreshhold + "  with failed reason: "<a name="line.144"></a>
+<span class="sourceLineNo">145</span>                        + StringUtils.stringifyException(e);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>                if (abortable != null) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>                  abortable.abort(message, e);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>                } else {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>                  LOG.error("Received " + StringUtils.stringifyException(e)<a name="line.149"></a>
+<span class="sourceLineNo">150</span>                    + " but not aborting due to abortable being null");<a name="line.150"></a>
+<span class="sourceLineNo">151</span>                  throw e;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>                }<a name="line.152"></a>
+<span class="sourceLineNo">153</span>              } else {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>                LOG.warn("RpcServer handler threads encountered errors "<a name="line.154"></a>
+<span class="sourceLineNo">155</span>                    + StringUtils.stringifyException(e));<a name="line.155"></a>
+<span class="sourceLineNo">156</span>              }<a name="line.156"></a>
+<span class="sourceLineNo">157</span>            } else {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>              LOG.warn("RpcServer handler threads encountered exceptions "<a name="line.158"></a>
+<span class="sourceLineNo">159</span>                  + StringUtils.stringifyException(e));<a name="line.159"></a>
+<span class="sourceLineNo">160</span>            }<a name="line.160"></a>
+<span class="sourceLineNo">161</span>          } finally {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>            activeHandlerCount.decrementAndGet();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>          }<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        } catch (InterruptedException e) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          interrupted = true;<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>    } finally {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      if (interrupted) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        Thread.currentThread().interrupt();<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      }<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  }<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  public static abstract class QueueBalancer {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    /**<a name="line.176"></a>
+<span class="sourceLineNo">177</span>     * @return the index of the next queue to which a request should be inserted<a name="line.177"></a>
+<span class="sourceLineNo">178</span>     */<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    public abstract int getNextQueue();<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>  public static QueueBalancer getBalancer(int queueSize) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    Preconditions.checkArgument(queueSize &gt; 0, "Queue size is &lt;= 0, must be at least 1");<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    if (queueSize == 1) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      return ONE_QUEUE;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    } else {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      return new RandomQueueBalancer(queueSize);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * All requests go to the first queue, at index 0<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   */<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  private static QueueBalancer ONE_QUEUE = new QueueBalancer() {<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>    @Override<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    public int getNextQueue() {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      return 0;<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><a name="line.201"></a>
+<span class="sourceLineNo">202</span>  /**<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   * Queue balancer that just randomly selects a queue in the range [0, num queues).<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   */<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  private static class RandomQueueBalancer extends QueueBalancer {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    private final int queueSize;<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public RandomQueueBalancer(int queueSize) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      this.queueSize = queueSize;<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>    public int getNextQueue() {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      return ThreadLocalRandom.current().nextInt(queueSize);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>  /**<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * Update current soft limit for executor's call queues<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * @param conf updated configuration<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  public void resizeQueues(Configuration conf) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    currentQueueLimit = conf.getInt("hbase.ipc.server.max.callqueue.length", currentQueueLimit);<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/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 88ac539..5754645 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcExecutor.html
@@ -50,175 +50,186 @@
 <span class="sourceLineNo">042</span>public abstract class RpcExecutor {<a name="line.42"></a>
 <span class="sourceLineNo">043</span>  private static final Log LOG = LogFactory.getLog(RpcExecutor.class);<a name="line.43"></a>
 <span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>  private final AtomicInteger activeHandlerCount = new AtomicInteger(0);<a name="line.45"></a>
-<span class="sourceLineNo">046</span>  private final List&lt;Thread&gt; handlers;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private final int handlerCount;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private final String name;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  private final AtomicInteger failedHandlerCount = new AtomicInteger(0);<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>  private boolean running;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>  private Configuration conf = null;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  private Abortable abortable = null;<a name="line.54"></a>
+<span class="sourceLineNo">045</span>  protected static final int DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT = 250;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>  protected volatile int currentQueueLimit;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>  private final AtomicInteger activeHandlerCount = new AtomicInteger(0);<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private final List&lt;Thread&gt; handlers;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private final int handlerCount;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private final String name;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private final AtomicInteger failedHandlerCount = new AtomicInteger(0);<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private boolean running;<a name="line.54"></a>
 <span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  public RpcExecutor(final String name, final int handlerCount) {<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    this.handlers = new ArrayList&lt;Thread&gt;(handlerCount);<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    this.handlerCount = handlerCount;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    this.name = Strings.nullToEmpty(name);<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  public RpcExecutor(final String name, final int handlerCount, final Configuration conf,<a name="line.62"></a>
-<span class="sourceLineNo">063</span>      final Abortable abortable) {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    this(name, handlerCount);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    this.conf = conf;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    this.abortable = abortable;<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 void start(final int port) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    running = true;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    startHandlers(port);<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 stop() {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    running = false;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    for (Thread handler : handlers) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      handler.interrupt();<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public int getActiveHandlerCount() {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    return activeHandlerCount.get();<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>  /** Returns the length of the pending queue */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public abstract int getQueueLength();<a name="line.86"></a>
+<span class="sourceLineNo">056</span>  private Configuration conf = null;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private Abortable abortable = null;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  public RpcExecutor(final String name, final int handlerCount) {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    this.handlers = new ArrayList&lt;Thread&gt;(handlerCount);<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    this.handlerCount = handlerCount;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    this.name = Strings.nullToEmpty(name);<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public RpcExecutor(final String name, final int handlerCount, final Configuration conf,<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      final Abortable abortable) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    this(name, handlerCount);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    this.conf = conf;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    this.abortable = abortable;<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 void start(final int port) {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    running = true;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    startHandlers(port);<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 void stop() {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    running = false;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    for (Thread handler : handlers) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      handler.interrupt();<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><a name="line.83"></a>
+<span class="sourceLineNo">084</span>  public int getActiveHandlerCount() {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    return activeHandlerCount.get();<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>  /** Add the request to the executor queue */<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  public abstract boolean dispatch(final CallRunner callTask) throws InterruptedException;<a name="line.89"></a>
+<span class="sourceLineNo">088</span>  /** Returns the length of the pending queue */<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  public abstract int getQueueLength();<a name="line.89"></a>
 <span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  /** Returns the list of request queues */<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  protected abstract List&lt;BlockingQueue&lt;CallRunner&gt;&gt; getQueues();<a name="line.92"></a>
+<span class="sourceLineNo">091</span>  /** Add the request to the executor queue */<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  public abstract boolean dispatch(final CallRunner callTask) throws InterruptedException;<a name="line.92"></a>
 <span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>  protected void startHandlers(final int port) {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    List&lt;BlockingQueue&lt;CallRunner&gt;&gt; callQueues = getQueues();<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    startHandlers(null, handlerCount, callQueues, 0, callQueues.size(), port);<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>  protected void startHandlers(final String nameSuffix, final int numHandlers,<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      final List&lt;BlockingQueue&lt;CallRunner&gt;&gt; callQueues,<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      final int qindex, final int qsize, final int port) {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    final String threadPrefix = name + Strings.nullToEmpty(nameSuffix);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    for (int i = 0; i &lt; numHandlers; i++) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>      final int index = qindex + (i % qsize);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      Thread t = new Thread(new Runnable() {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>        @Override<a name="line.106"></a>
-<span class="sourceLineNo">107</span>        public void run() {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>          consumerLoop(callQueues.get(index));<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>      t.setDaemon(true);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      t.setName(threadPrefix + "RpcServer.handler=" + handlers.size() +<a name="line.112"></a>
-<span class="sourceLineNo">113</span>        ",queue=" + index + ",port=" + port);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      t.start();<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      LOG.debug(threadPrefix + " Start Handler index=" + handlers.size() + " queue=" + index);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      handlers.add(t);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>  protected void consumerLoop(final BlockingQueue&lt;CallRunner&gt; myQueue) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    boolean interrupted = false;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    double handlerFailureThreshhold =<a name="line.122"></a>
-<span class="sourceLineNo">123</span>        conf == null ? 1.0 : conf.getDouble(HConstants.REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT,<a name="line.123"></a>
-<span class="sourceLineNo">124</span>          HConstants.DEFAULT_REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    try {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      while (running) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>        try {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>          MonitoredRPCHandler status = RpcServer.getStatus();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>          CallRunner task = myQueue.take();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>          task.setStatus(status);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>          try {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>            activeHandlerCount.incrementAndGet();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>            task.run();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>          } catch (Throwable e) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>            if (e instanceof Error) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>              int failedCount = failedHandlerCount.incrementAndGet();<a name="line.136"></a>
-<span class="sourceLineNo">137</span>              if (handlerFailureThreshhold &gt;= 0<a name="line.137"></a>
-<span class="sourceLineNo">138</span>                  &amp;&amp; failedCount &gt; handlerCount * handlerFailureThreshhold) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>                String message =<a name="line.139"></a>
-<span class="sourceLineNo">140</span>                    "Number of failed RpcServer handler exceeded threshhold "<a name="line.140"></a>
-<span class="sourceLineNo">141</span>                        + handlerFailureThreshhold + "  with failed reason: "<a name="line.141"></a>
-<span class="sourceLineNo">142</span>                        + StringUtils.stringifyException(e);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>                if (abortable != null) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>                  abortable.abort(message, e);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>                } else {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>                  LOG.error("Received " + StringUtils.stringifyException(e)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>                    + " but not aborting due to abortable being null");<a name="line.147"></a>
-<span class="sourceLineNo">148</span>                  throw e;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>                }<a name="line.149"></a>
-<span class="sourceLineNo">150</span>              } else {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>                LOG.warn("RpcServer handler threads encountered errors "<a name="line.151"></a>
-<span class="sourceLineNo">152</span>                    + StringUtils.stringifyException(e));<a name="line.152"></a>
-<span class="sourceLineNo">153</span>              }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>            } else {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>              LOG.warn("RpcServer handler threads encountered exceptions "<a name="line.155"></a>
-<span class="sourceLineNo">156</span>                  + StringUtils.stringifyException(e));<a name="line.156"></a>
-<span class="sourceLineNo">157</span>            }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>          } finally {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>            activeHandlerCount.decrementAndGet();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        } catch (InterruptedException e) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          interrupted = true;<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>    } finally {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      if (interrupted) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        Thread.currentThread().interrupt();<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><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  public static abstract class QueueBalancer {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    /**<a name="line.173"></a>
-<span class="sourceLineNo">174</span>     * @return the index of the next queue to which a request should be inserted<a name="line.174"></a>
-<span class="sourceLineNo">175</span>     */<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    public abstract int getNextQueue();<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>  public static QueueBalancer getBalancer(int queueSize) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    Preconditions.checkArgument(queueSize &gt; 0, "Queue size is &lt;= 0, must be at least 1");<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    if (queueSize == 1) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      return ONE_QUEUE;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    } else {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      return new RandomQueueBalancer(queueSize);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  }<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>  /**<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * All requests go to the first queue, at index 0<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   */<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  private static QueueBalancer ONE_QUEUE = new QueueBalancer() {<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>    @Override<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    public int getNextQueue() {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return 0;<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><a name="line.198"></a>
-<span class="sourceLineNo">199</span>  /**<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * Queue balancer that just randomly selects a queue in the range [0, num queues).<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   */<a name="line.201"></a>
-<span class="sourceLineNo">202</span>  private static class RandomQueueBalancer extends QueueBalancer {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    private final int queueSize;<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span>    public RandomQueueBalancer(int queueSize) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      this.queueSize = queueSize;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    public int getNextQueue() {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      return ThreadLocalRandom.current().nextInt(queueSize);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>}<a name="line.213"></a>
+<span class="sourceLineNo">094</span>  /** Returns the list of request queues */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  protected abstract List&lt;BlockingQueue&lt;CallRunner&gt;&gt; getQueues();<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  protected void startHandlers(final int port) {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    List&lt;BlockingQueue&lt;CallRunner&gt;&gt; callQueues = getQueues();<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    startHandlers(null, handlerCount, callQueues, 0, callQueues.size(), port);<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>  protected void startHandlers(final String nameSuffix, final int numHandlers,<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      final List&lt;BlockingQueue&lt;CallRunner&gt;&gt; callQueues,<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      final int qindex, final int qsize, final int port) {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    final String threadPrefix = name + Strings.nullToEmpty(nameSuffix);<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    for (int i = 0; i &lt; numHandlers; i++) {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      final int index = qindex + (i % qsize);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      Thread t = new Thread(new Runnable() {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>        @Override<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        public void run() {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>          consumerLoop(callQueues.get(index));<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>      t.setDaemon(true);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      t.setName(threadPrefix + "RpcServer.handler=" + handlers.size() +<a name="line.115"></a>
+<span class="sourceLineNo">116</span>        ",queue=" + index + ",port=" + port);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      t.start();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      LOG.debug(threadPrefix + " Start Handler index=" + handlers.size() + " queue=" + index);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      handlers.add(t);<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>  protected void consumerLoop(final BlockingQueue&lt;CallRunner&gt; myQueue) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    boolean interrupted = false;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    double handlerFailureThreshhold =<a name="line.125"></a>
+<span class="sourceLineNo">126</span>        conf == null ? 1.0 : conf.getDouble(HConstants.REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT,<a name="line.126"></a>
+<span class="sourceLineNo">127</span>          HConstants.DEFAULT_REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    try {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      while (running) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        try {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>          MonitoredRPCHandler status = RpcServer.getStatus();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>          CallRunner task = myQueue.take();<a name="line.132"></a>
+<span class="sourceLineNo">133</span>          task.setStatus(status);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          try {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>            activeHandlerCount.incrementAndGet();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>            task.run();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>          } catch (Throwable e) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>            if (e instanceof Error) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>              int failedCount = failedHandlerCount.incrementAndGet();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>              if (handlerFailureThreshhold &gt;= 0<a name="line.140"></a>
+<span class="sourceLineNo">141</span>                  &amp;&amp; failedCount &gt; handlerCount * handlerFailureThreshhold) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>                String message =<a name="line.142"></a>
+<span class="sourceLineNo">143</span>                    "Number of failed RpcServer handler exceeded threshhold "<a name="line.143"></a>
+<span class="sourceLineNo">144</span>                        + handlerFailureThreshhold + "  with failed reason: "<a name="line.144"></a>
+<span class="sourceLineNo">145</span>                        + StringUtils.stringifyException(e);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>                if (abortable != null) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>                  abortable.abort(message, e);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>                } else {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>                  LOG.error("Received " + StringUtils.stringifyException(e)<a name="line.149"></a>
+<span class="sourceLineNo">150</span>                    + " but not aborting due to abortable being null");<a name="line.150"></a>
+<span class="sourceLineNo">151</span>                  throw e;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>                }<a name="line.152"></a>
+<span class="sourceLineNo">153</span>              } else {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>                LOG.warn("RpcServer handler threads encountered errors "<a name="line.154"></a>
+<span class="sourceLineNo">155</span>                    + StringUtils.stringifyException(e));<a name="line.155"></a>
+<span class="sourceLineNo">156</span>              }<a name="line.156"></a>
+<span class="sourceLineNo">157</span>            } else {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>              LOG.warn("RpcServer handler threads encountered exceptions "<a name="line.158"></a>
+<span class="sourceLineNo">159</span>                  + StringUtils.stringifyException(e));<a name="line.159"></a>
+<span class="sourceLineNo">160</span>            }<a name="line.160"></a>
+<span class="sourceLineNo">161</span>          } finally {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>            activeHandlerCount.decrementAndGet();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>          }<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        } catch (InterruptedException e) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          interrupted = true;<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>    } finally {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      if (interrupted) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        Thread.currentThread().interrupt();<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      }<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  }<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  public static abstract class QueueBalancer {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    /**<a name="line.176"></a>
+<span class="sourceLineNo">177</span>     * @return the index of the next queue to which a request should be inserted<a name="line.177"></a>
+<span class="sourceLineNo">178</span>     */<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    public abstract int getNextQueue();<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>  public static QueueBalancer getBalancer(int queueSize) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    Preconditions.checkArgument(queueSize &gt; 0, "Queue size is &lt;= 0, must be at least 1");<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    if (queueSize == 1) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      return ONE_QUEUE;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    } else {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      return new RandomQueueBalancer(queueSize);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * All requests go to the first queue, at index 0<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   */<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  private static QueueBalancer ONE_QUEUE = new QueueBalancer() {<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>    @Override<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    public int getNextQueue() {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      return 0;<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><a name="line.201"></a>
+<span class="sourceLineNo">202</span>  /**<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   * Queue balancer that just randomly selects a queue in the range [0, num queues).<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   */<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  private static class RandomQueueBalancer extends QueueBalancer {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    private final int queueSize;<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public RandomQueueBalancer(int queueSize) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      this.queueSize = queueSize;<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>    public int getNextQueue() {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      return ThreadLocalRandom.current().nextInt(queueSize);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>  /**<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * Update current soft limit for executor's call queues<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * @param conf updated configuration<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  public void resizeQueues(Configuration conf) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    currentQueueLimit = conf.getInt("hbase.ipc.server.max.callqueue.length", currentQueueLimit);<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>
 
 
 


[18/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.html
index e5d9af6..ea9ea4d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.html
@@ -2107,556 +2107,559 @@
 <span class="sourceLineNo">2099</span>  @Override<a name="line.2099"></a>
 <span class="sourceLineNo">2100</span>  public void onConfigurationChange(Configuration newConf) {<a name="line.2100"></a>
 <span class="sourceLineNo">2101</span>    initReconfigurable(newConf);<a name="line.2101"></a>
-<span class="sourceLineNo">2102</span>  }<a name="line.2102"></a>
-<span class="sourceLineNo">2103</span><a name="line.2103"></a>
-<span class="sourceLineNo">2104</span>  private void initReconfigurable(Configuration confToLoad) {<a name="line.2104"></a>
-<span class="sourceLineNo">2105</span>    this.allowFallbackToSimpleAuth = confToLoad.getBoolean(FALLBACK_TO_INSECURE_CLIENT_AUTH, false);<a name="line.2105"></a>
-<span class="sourceLineNo">2106</span>    if (isSecurityEnabled &amp;&amp; allowFallbackToSimpleAuth) {<a name="line.2106"></a>
-<span class="sourceLineNo">2107</span>      LOG.warn("********* WARNING! *********");<a name="line.2107"></a>
-<span class="sourceLineNo">2108</span>      LOG.warn("This server is configured to allow connections from INSECURE clients");<a name="line.2108"></a>
-<span class="sourceLineNo">2109</span>      LOG.warn("(" + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = true).");<a name="line.2109"></a>
-<span class="sourceLineNo">2110</span>      LOG.warn("While this option is enabled, client identities cannot be secured, and user");<a name="line.2110"></a>
-<span class="sourceLineNo">2111</span>      LOG.warn("impersonation is possible!");<a name="line.2111"></a>
-<span class="sourceLineNo">2112</span>      LOG.warn("For secure operation, please disable SIMPLE authentication as soon as possible,");<a name="line.2112"></a>
-<span class="sourceLineNo">2113</span>      LOG.warn("by setting " + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = false in hbase-site.xml");<a name="line.2113"></a>
-<span class="sourceLineNo">2114</span>      LOG.warn("****************************");<a name="line.2114"></a>
-<span class="sourceLineNo">2115</span>    }<a name="line.2115"></a>
-<span class="sourceLineNo">2116</span>  }<a name="line.2116"></a>
-<span class="sourceLineNo">2117</span><a name="line.2117"></a>
-<span class="sourceLineNo">2118</span>  /**<a name="line.2118"></a>
-<span class="sourceLineNo">2119</span>   * Subclasses of HBaseServer can override this to provide their own<a name="line.2119"></a>
-<span class="sourceLineNo">2120</span>   * Connection implementations.<a name="line.2120"></a>
-<span class="sourceLineNo">2121</span>   */<a name="line.2121"></a>
-<span class="sourceLineNo">2122</span>  protected Connection getConnection(SocketChannel channel, long time) {<a name="line.2122"></a>
-<span class="sourceLineNo">2123</span>    return new Connection(channel, time);<a name="line.2123"></a>
-<span class="sourceLineNo">2124</span>  }<a name="line.2124"></a>
-<span class="sourceLineNo">2125</span><a name="line.2125"></a>
-<span class="sourceLineNo">2126</span>  /**<a name="line.2126"></a>
-<span class="sourceLineNo">2127</span>   * Setup response for the RPC Call.<a name="line.2127"></a>
-<span class="sourceLineNo">2128</span>   *<a name="line.2128"></a>
-<span class="sourceLineNo">2129</span>   * @param response buffer to serialize the response into<a name="line.2129"></a>
-<span class="sourceLineNo">2130</span>   * @param call {@link Call} to which we are setting up the response<a name="line.2130"></a>
-<span class="sourceLineNo">2131</span>   * @param error error message, if the call failed<a name="line.2131"></a>
-<span class="sourceLineNo">2132</span>   * @throws IOException<a name="line.2132"></a>
-<span class="sourceLineNo">2133</span>   */<a name="line.2133"></a>
-<span class="sourceLineNo">2134</span>  private void setupResponse(ByteArrayOutputStream response, Call call, Throwable t, String error)<a name="line.2134"></a>
-<span class="sourceLineNo">2135</span>  throws IOException {<a name="line.2135"></a>
-<span class="sourceLineNo">2136</span>    if (response != null) response.reset();<a name="line.2136"></a>
-<span class="sourceLineNo">2137</span>    call.setResponse(null, null, t, error);<a name="line.2137"></a>
-<span class="sourceLineNo">2138</span>  }<a name="line.2138"></a>
-<span class="sourceLineNo">2139</span><a name="line.2139"></a>
-<span class="sourceLineNo">2140</span>  protected void closeConnection(Connection connection) {<a name="line.2140"></a>
-<span class="sourceLineNo">2141</span>    synchronized (connectionList) {<a name="line.2141"></a>
-<span class="sourceLineNo">2142</span>      if (connectionList.remove(connection)) {<a name="line.2142"></a>
-<span class="sourceLineNo">2143</span>        numConnections--;<a name="line.2143"></a>
-<span class="sourceLineNo">2144</span>      }<a name="line.2144"></a>
-<span class="sourceLineNo">2145</span>    }<a name="line.2145"></a>
-<span class="sourceLineNo">2146</span>    connection.close();<a name="line.2146"></a>
-<span class="sourceLineNo">2147</span>  }<a name="line.2147"></a>
-<span class="sourceLineNo">2148</span><a name="line.2148"></a>
-<span class="sourceLineNo">2149</span>  Configuration getConf() {<a name="line.2149"></a>
-<span class="sourceLineNo">2150</span>    return conf;<a name="line.2150"></a>
-<span class="sourceLineNo">2151</span>  }<a name="line.2151"></a>
-<span class="sourceLineNo">2152</span><a name="line.2152"></a>
-<span class="sourceLineNo">2153</span>  /** Sets the socket buffer size used for responding to RPCs.<a name="line.2153"></a>
-<span class="sourceLineNo">2154</span>   * @param size send size<a name="line.2154"></a>
-<span class="sourceLineNo">2155</span>   */<a name="line.2155"></a>
-<span class="sourceLineNo">2156</span>  @Override<a name="line.2156"></a>
-<span class="sourceLineNo">2157</span>  public void setSocketSendBufSize(int size) { this.socketSendBufferSize = size; }<a name="line.2157"></a>
-<span class="sourceLineNo">2158</span><a name="line.2158"></a>
+<span class="sourceLineNo">2102</span>    if (scheduler instanceof ConfigurationObserver) {<a name="line.2102"></a>
+<span class="sourceLineNo">2103</span>      ((ConfigurationObserver)scheduler).onConfigurationChange(newConf);<a name="line.2103"></a>
+<span class="sourceLineNo">2104</span>    }<a name="line.2104"></a>
+<span class="sourceLineNo">2105</span>  }<a name="line.2105"></a>
+<span class="sourceLineNo">2106</span><a name="line.2106"></a>
+<span class="sourceLineNo">2107</span>  private void initReconfigurable(Configuration confToLoad) {<a name="line.2107"></a>
+<span class="sourceLineNo">2108</span>    this.allowFallbackToSimpleAuth = confToLoad.getBoolean(FALLBACK_TO_INSECURE_CLIENT_AUTH, false);<a name="line.2108"></a>
+<span class="sourceLineNo">2109</span>    if (isSecurityEnabled &amp;&amp; allowFallbackToSimpleAuth) {<a name="line.2109"></a>
+<span class="sourceLineNo">2110</span>      LOG.warn("********* WARNING! *********");<a name="line.2110"></a>
+<span class="sourceLineNo">2111</span>      LOG.warn("This server is configured to allow connections from INSECURE clients");<a name="line.2111"></a>
+<span class="sourceLineNo">2112</span>      LOG.warn("(" + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = true).");<a name="line.2112"></a>
+<span class="sourceLineNo">2113</span>      LOG.warn("While this option is enabled, client identities cannot be secured, and user");<a name="line.2113"></a>
+<span class="sourceLineNo">2114</span>      LOG.warn("impersonation is possible!");<a name="line.2114"></a>
+<span class="sourceLineNo">2115</span>      LOG.warn("For secure operation, please disable SIMPLE authentication as soon as possible,");<a name="line.2115"></a>
+<span class="sourceLineNo">2116</span>      LOG.warn("by setting " + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = false in hbase-site.xml");<a name="line.2116"></a>
+<span class="sourceLineNo">2117</span>      LOG.warn("****************************");<a name="line.2117"></a>
+<span class="sourceLineNo">2118</span>    }<a name="line.2118"></a>
+<span class="sourceLineNo">2119</span>  }<a name="line.2119"></a>
+<span class="sourceLineNo">2120</span><a name="line.2120"></a>
+<span class="sourceLineNo">2121</span>  /**<a name="line.2121"></a>
+<span class="sourceLineNo">2122</span>   * Subclasses of HBaseServer can override this to provide their own<a name="line.2122"></a>
+<span class="sourceLineNo">2123</span>   * Connection implementations.<a name="line.2123"></a>
+<span class="sourceLineNo">2124</span>   */<a name="line.2124"></a>
+<span class="sourceLineNo">2125</span>  protected Connection getConnection(SocketChannel channel, long time) {<a name="line.2125"></a>
+<span class="sourceLineNo">2126</span>    return new Connection(channel, time);<a name="line.2126"></a>
+<span class="sourceLineNo">2127</span>  }<a name="line.2127"></a>
+<span class="sourceLineNo">2128</span><a name="line.2128"></a>
+<span class="sourceLineNo">2129</span>  /**<a name="line.2129"></a>
+<span class="sourceLineNo">2130</span>   * Setup response for the RPC Call.<a name="line.2130"></a>
+<span class="sourceLineNo">2131</span>   *<a name="line.2131"></a>
+<span class="sourceLineNo">2132</span>   * @param response buffer to serialize the response into<a name="line.2132"></a>
+<span class="sourceLineNo">2133</span>   * @param call {@link Call} to which we are setting up the response<a name="line.2133"></a>
+<span class="sourceLineNo">2134</span>   * @param error error message, if the call failed<a name="line.2134"></a>
+<span class="sourceLineNo">2135</span>   * @throws IOException<a name="line.2135"></a>
+<span class="sourceLineNo">2136</span>   */<a name="line.2136"></a>
+<span class="sourceLineNo">2137</span>  private void setupResponse(ByteArrayOutputStream response, Call call, Throwable t, String error)<a name="line.2137"></a>
+<span class="sourceLineNo">2138</span>  throws IOException {<a name="line.2138"></a>
+<span class="sourceLineNo">2139</span>    if (response != null) response.reset();<a name="line.2139"></a>
+<span class="sourceLineNo">2140</span>    call.setResponse(null, null, t, error);<a name="line.2140"></a>
+<span class="sourceLineNo">2141</span>  }<a name="line.2141"></a>
+<span class="sourceLineNo">2142</span><a name="line.2142"></a>
+<span class="sourceLineNo">2143</span>  protected void closeConnection(Connection connection) {<a name="line.2143"></a>
+<span class="sourceLineNo">2144</span>    synchronized (connectionList) {<a name="line.2144"></a>
+<span class="sourceLineNo">2145</span>      if (connectionList.remove(connection)) {<a name="line.2145"></a>
+<span class="sourceLineNo">2146</span>        numConnections--;<a name="line.2146"></a>
+<span class="sourceLineNo">2147</span>      }<a name="line.2147"></a>
+<span class="sourceLineNo">2148</span>    }<a name="line.2148"></a>
+<span class="sourceLineNo">2149</span>    connection.close();<a name="line.2149"></a>
+<span class="sourceLineNo">2150</span>  }<a name="line.2150"></a>
+<span class="sourceLineNo">2151</span><a name="line.2151"></a>
+<span class="sourceLineNo">2152</span>  Configuration getConf() {<a name="line.2152"></a>
+<span class="sourceLineNo">2153</span>    return conf;<a name="line.2153"></a>
+<span class="sourceLineNo">2154</span>  }<a name="line.2154"></a>
+<span class="sourceLineNo">2155</span><a name="line.2155"></a>
+<span class="sourceLineNo">2156</span>  /** Sets the socket buffer size used for responding to RPCs.<a name="line.2156"></a>
+<span class="sourceLineNo">2157</span>   * @param size send size<a name="line.2157"></a>
+<span class="sourceLineNo">2158</span>   */<a name="line.2158"></a>
 <span class="sourceLineNo">2159</span>  @Override<a name="line.2159"></a>
-<span class="sourceLineNo">2160</span>  public boolean isStarted() {<a name="line.2160"></a>
-<span class="sourceLineNo">2161</span>    return this.started;<a name="line.2161"></a>
-<span class="sourceLineNo">2162</span>  }<a name="line.2162"></a>
-<span class="sourceLineNo">2163</span><a name="line.2163"></a>
-<span class="sourceLineNo">2164</span>  /** Starts the service.  Must be called before any calls will be handled. */<a name="line.2164"></a>
-<span class="sourceLineNo">2165</span>  @Override<a name="line.2165"></a>
-<span class="sourceLineNo">2166</span>  public synchronized void start() {<a name="line.2166"></a>
-<span class="sourceLineNo">2167</span>    if (started) return;<a name="line.2167"></a>
-<span class="sourceLineNo">2168</span>    authTokenSecretMgr = createSecretManager();<a name="line.2168"></a>
-<span class="sourceLineNo">2169</span>    if (authTokenSecretMgr != null) {<a name="line.2169"></a>
-<span class="sourceLineNo">2170</span>      setSecretManager(authTokenSecretMgr);<a name="line.2170"></a>
-<span class="sourceLineNo">2171</span>      authTokenSecretMgr.start();<a name="line.2171"></a>
-<span class="sourceLineNo">2172</span>    }<a name="line.2172"></a>
-<span class="sourceLineNo">2173</span>    this.authManager = new ServiceAuthorizationManager();<a name="line.2173"></a>
-<span class="sourceLineNo">2174</span>    HBasePolicyProvider.init(conf, authManager);<a name="line.2174"></a>
-<span class="sourceLineNo">2175</span>    responder.start();<a name="line.2175"></a>
-<span class="sourceLineNo">2176</span>    listener.start();<a name="line.2176"></a>
-<span class="sourceLineNo">2177</span>    scheduler.start();<a name="line.2177"></a>
-<span class="sourceLineNo">2178</span>    started = true;<a name="line.2178"></a>
-<span class="sourceLineNo">2179</span>  }<a name="line.2179"></a>
-<span class="sourceLineNo">2180</span><a name="line.2180"></a>
-<span class="sourceLineNo">2181</span>  @Override<a name="line.2181"></a>
-<span class="sourceLineNo">2182</span>  public synchronized void refreshAuthManager(PolicyProvider pp) {<a name="line.2182"></a>
-<span class="sourceLineNo">2183</span>    // Ignore warnings that this should be accessed in a static way instead of via an instance;<a name="line.2183"></a>
-<span class="sourceLineNo">2184</span>    // it'll break if you go via static route.<a name="line.2184"></a>
-<span class="sourceLineNo">2185</span>    this.authManager.refresh(this.conf, pp);<a name="line.2185"></a>
-<span class="sourceLineNo">2186</span>  }<a name="line.2186"></a>
-<span class="sourceLineNo">2187</span><a name="line.2187"></a>
-<span class="sourceLineNo">2188</span>  private AuthenticationTokenSecretManager createSecretManager() {<a name="line.2188"></a>
-<span class="sourceLineNo">2189</span>    if (!isSecurityEnabled) return null;<a name="line.2189"></a>
-<span class="sourceLineNo">2190</span>    if (server == null) return null;<a name="line.2190"></a>
-<span class="sourceLineNo">2191</span>    Configuration conf = server.getConfiguration();<a name="line.2191"></a>
-<span class="sourceLineNo">2192</span>    long keyUpdateInterval =<a name="line.2192"></a>
-<span class="sourceLineNo">2193</span>        conf.getLong("hbase.auth.key.update.interval", 24*60*60*1000);<a name="line.2193"></a>
-<span class="sourceLineNo">2194</span>    long maxAge =<a name="line.2194"></a>
-<span class="sourceLineNo">2195</span>        conf.getLong("hbase.auth.token.max.lifetime", 7*24*60*60*1000);<a name="line.2195"></a>
-<span class="sourceLineNo">2196</span>    return new AuthenticationTokenSecretManager(conf, server.getZooKeeper(),<a name="line.2196"></a>
-<span class="sourceLineNo">2197</span>        server.getServerName().toString(), keyUpdateInterval, maxAge);<a name="line.2197"></a>
-<span class="sourceLineNo">2198</span>  }<a name="line.2198"></a>
-<span class="sourceLineNo">2199</span><a name="line.2199"></a>
-<span class="sourceLineNo">2200</span>  public SecretManager&lt;? extends TokenIdentifier&gt; getSecretManager() {<a name="line.2200"></a>
-<span class="sourceLineNo">2201</span>    return this.secretManager;<a name="line.2201"></a>
-<span class="sourceLineNo">2202</span>  }<a name="line.2202"></a>
-<span class="sourceLineNo">2203</span><a name="line.2203"></a>
-<span class="sourceLineNo">2204</span>  @SuppressWarnings("unchecked")<a name="line.2204"></a>
-<span class="sourceLineNo">2205</span>  public void setSecretManager(SecretManager&lt;? extends TokenIdentifier&gt; secretManager) {<a name="line.2205"></a>
-<span class="sourceLineNo">2206</span>    this.secretManager = (SecretManager&lt;TokenIdentifier&gt;) secretManager;<a name="line.2206"></a>
-<span class="sourceLineNo">2207</span>  }<a name="line.2207"></a>
-<span class="sourceLineNo">2208</span><a name="line.2208"></a>
-<span class="sourceLineNo">2209</span>  /**<a name="line.2209"></a>
-<span class="sourceLineNo">2210</span>   * This is a server side method, which is invoked over RPC. On success<a name="line.2210"></a>
-<span class="sourceLineNo">2211</span>   * the return response has protobuf response payload. On failure, the<a name="line.2211"></a>
-<span class="sourceLineNo">2212</span>   * exception name and the stack trace are returned in the protobuf response.<a name="line.2212"></a>
-<span class="sourceLineNo">2213</span>   */<a name="line.2213"></a>
-<span class="sourceLineNo">2214</span>  @Override<a name="line.2214"></a>
-<span class="sourceLineNo">2215</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,<a name="line.2215"></a>
-<span class="sourceLineNo">2216</span>      Message param, CellScanner cellScanner, long receiveTime, MonitoredRPCHandler status)<a name="line.2216"></a>
-<span class="sourceLineNo">2217</span>  throws IOException {<a name="line.2217"></a>
-<span class="sourceLineNo">2218</span>    try {<a name="line.2218"></a>
-<span class="sourceLineNo">2219</span>      status.setRPC(md.getName(), new Object[]{param}, receiveTime);<a name="line.2219"></a>
-<span class="sourceLineNo">2220</span>      // TODO: Review after we add in encoded data blocks.<a name="line.2220"></a>
-<span class="sourceLineNo">2221</span>      status.setRPCPacket(param);<a name="line.2221"></a>
-<span class="sourceLineNo">2222</span>      status.resume("Servicing call");<a name="line.2222"></a>
-<span class="sourceLineNo">2223</span>      //get an instance of the method arg type<a name="line.2223"></a>
-<span class="sourceLineNo">2224</span>      long startTime = System.currentTimeMillis();<a name="line.2224"></a>
-<span class="sourceLineNo">2225</span>      PayloadCarryingRpcController controller = new PayloadCarryingRpcController(cellScanner);<a name="line.2225"></a>
-<span class="sourceLineNo">2226</span>      Message result = service.callBlockingMethod(md, controller, param);<a name="line.2226"></a>
-<span class="sourceLineNo">2227</span>      long endTime = System.currentTimeMillis();<a name="line.2227"></a>
-<span class="sourceLineNo">2228</span>      int processingTime = (int) (endTime - startTime);<a name="line.2228"></a>
-<span class="sourceLineNo">2229</span>      int qTime = (int) (startTime - receiveTime);<a name="line.2229"></a>
-<span class="sourceLineNo">2230</span>      int totalTime = (int) (endTime - receiveTime);<a name="line.2230"></a>
-<span class="sourceLineNo">2231</span>      if (LOG.isTraceEnabled()) {<a name="line.2231"></a>
-<span class="sourceLineNo">2232</span>        LOG.trace(CurCall.get().toString() +<a name="line.2232"></a>
-<span class="sourceLineNo">2233</span>            ", response " + TextFormat.shortDebugString(result) +<a name="line.2233"></a>
-<span class="sourceLineNo">2234</span>            " queueTime: " + qTime +<a name="line.2234"></a>
-<span class="sourceLineNo">2235</span>            " processingTime: " + processingTime +<a name="line.2235"></a>
-<span class="sourceLineNo">2236</span>            " totalTime: " + totalTime);<a name="line.2236"></a>
-<span class="sourceLineNo">2237</span>      }<a name="line.2237"></a>
-<span class="sourceLineNo">2238</span>      long requestSize = param.getSerializedSize();<a name="line.2238"></a>
-<span class="sourceLineNo">2239</span>      long responseSize = result.getSerializedSize();<a name="line.2239"></a>
-<span class="sourceLineNo">2240</span>      metrics.dequeuedCall(qTime);<a name="line.2240"></a>
-<span class="sourceLineNo">2241</span>      metrics.processedCall(processingTime);<a name="line.2241"></a>
-<span class="sourceLineNo">2242</span>      metrics.totalCall(totalTime);<a name="line.2242"></a>
-<span class="sourceLineNo">2243</span>      metrics.receivedRequest(requestSize);<a name="line.2243"></a>
-<span class="sourceLineNo">2244</span>      metrics.sentResponse(responseSize);<a name="line.2244"></a>
-<span class="sourceLineNo">2245</span>      // log any RPC responses that are slower than the configured warn<a name="line.2245"></a>
-<span class="sourceLineNo">2246</span>      // response time or larger than configured warning size<a name="line.2246"></a>
-<span class="sourceLineNo">2247</span>      boolean tooSlow = (processingTime &gt; warnResponseTime &amp;&amp; warnResponseTime &gt; -1);<a name="line.2247"></a>
-<span class="sourceLineNo">2248</span>      boolean tooLarge = (responseSize &gt; warnResponseSize &amp;&amp; warnResponseSize &gt; -1);<a name="line.2248"></a>
-<span class="sourceLineNo">2249</span>      if (tooSlow || tooLarge) {<a name="line.2249"></a>
-<span class="sourceLineNo">2250</span>        // when tagging, we let TooLarge trump TooSmall to keep output simple<a name="line.2250"></a>
-<span class="sourceLineNo">2251</span>        // note that large responses will often also be slow.<a name="line.2251"></a>
-<span class="sourceLineNo">2252</span>        logResponse(new Object[]{param},<a name="line.2252"></a>
-<span class="sourceLineNo">2253</span>            md.getName(), md.getName() + "(" + param.getClass().getName() + ")",<a name="line.2253"></a>
-<span class="sourceLineNo">2254</span>            (tooLarge ? "TooLarge" : "TooSlow"),<a name="line.2254"></a>
-<span class="sourceLineNo">2255</span>            status.getClient(), startTime, processingTime, qTime,<a name="line.2255"></a>
-<span class="sourceLineNo">2256</span>            responseSize);<a name="line.2256"></a>
-<span class="sourceLineNo">2257</span>      }<a name="line.2257"></a>
-<span class="sourceLineNo">2258</span>      return new Pair&lt;Message, CellScanner&gt;(result, controller.cellScanner());<a name="line.2258"></a>
-<span class="sourceLineNo">2259</span>    } catch (Throwable e) {<a name="line.2259"></a>
-<span class="sourceLineNo">2260</span>      // The above callBlockingMethod will always return a SE.  Strip the SE wrapper before<a name="line.2260"></a>
-<span class="sourceLineNo">2261</span>      // putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't<a name="line.2261"></a>
-<span class="sourceLineNo">2262</span>      // need to pass it over the wire.<a name="line.2262"></a>
-<span class="sourceLineNo">2263</span>      if (e instanceof ServiceException) e = e.getCause();<a name="line.2263"></a>
-<span class="sourceLineNo">2264</span><a name="line.2264"></a>
-<span class="sourceLineNo">2265</span>      // increment the number of requests that were exceptions.<a name="line.2265"></a>
-<span class="sourceLineNo">2266</span>      metrics.exception(e);<a name="line.2266"></a>
+<span class="sourceLineNo">2160</span>  public void setSocketSendBufSize(int size) { this.socketSendBufferSize = size; }<a name="line.2160"></a>
+<span class="sourceLineNo">2161</span><a name="line.2161"></a>
+<span class="sourceLineNo">2162</span>  @Override<a name="line.2162"></a>
+<span class="sourceLineNo">2163</span>  public boolean isStarted() {<a name="line.2163"></a>
+<span class="sourceLineNo">2164</span>    return this.started;<a name="line.2164"></a>
+<span class="sourceLineNo">2165</span>  }<a name="line.2165"></a>
+<span class="sourceLineNo">2166</span><a name="line.2166"></a>
+<span class="sourceLineNo">2167</span>  /** Starts the service.  Must be called before any calls will be handled. */<a name="line.2167"></a>
+<span class="sourceLineNo">2168</span>  @Override<a name="line.2168"></a>
+<span class="sourceLineNo">2169</span>  public synchronized void start() {<a name="line.2169"></a>
+<span class="sourceLineNo">2170</span>    if (started) return;<a name="line.2170"></a>
+<span class="sourceLineNo">2171</span>    authTokenSecretMgr = createSecretManager();<a name="line.2171"></a>
+<span class="sourceLineNo">2172</span>    if (authTokenSecretMgr != null) {<a name="line.2172"></a>
+<span class="sourceLineNo">2173</span>      setSecretManager(authTokenSecretMgr);<a name="line.2173"></a>
+<span class="sourceLineNo">2174</span>      authTokenSecretMgr.start();<a name="line.2174"></a>
+<span class="sourceLineNo">2175</span>    }<a name="line.2175"></a>
+<span class="sourceLineNo">2176</span>    this.authManager = new ServiceAuthorizationManager();<a name="line.2176"></a>
+<span class="sourceLineNo">2177</span>    HBasePolicyProvider.init(conf, authManager);<a name="line.2177"></a>
+<span class="sourceLineNo">2178</span>    responder.start();<a name="line.2178"></a>
+<span class="sourceLineNo">2179</span>    listener.start();<a name="line.2179"></a>
+<span class="sourceLineNo">2180</span>    scheduler.start();<a name="line.2180"></a>
+<span class="sourceLineNo">2181</span>    started = true;<a name="line.2181"></a>
+<span class="sourceLineNo">2182</span>  }<a name="line.2182"></a>
+<span class="sourceLineNo">2183</span><a name="line.2183"></a>
+<span class="sourceLineNo">2184</span>  @Override<a name="line.2184"></a>
+<span class="sourceLineNo">2185</span>  public synchronized void refreshAuthManager(PolicyProvider pp) {<a name="line.2185"></a>
+<span class="sourceLineNo">2186</span>    // Ignore warnings that this should be accessed in a static way instead of via an instance;<a name="line.2186"></a>
+<span class="sourceLineNo">2187</span>    // it'll break if you go via static route.<a name="line.2187"></a>
+<span class="sourceLineNo">2188</span>    this.authManager.refresh(this.conf, pp);<a name="line.2188"></a>
+<span class="sourceLineNo">2189</span>  }<a name="line.2189"></a>
+<span class="sourceLineNo">2190</span><a name="line.2190"></a>
+<span class="sourceLineNo">2191</span>  private AuthenticationTokenSecretManager createSecretManager() {<a name="line.2191"></a>
+<span class="sourceLineNo">2192</span>    if (!isSecurityEnabled) return null;<a name="line.2192"></a>
+<span class="sourceLineNo">2193</span>    if (server == null) return null;<a name="line.2193"></a>
+<span class="sourceLineNo">2194</span>    Configuration conf = server.getConfiguration();<a name="line.2194"></a>
+<span class="sourceLineNo">2195</span>    long keyUpdateInterval =<a name="line.2195"></a>
+<span class="sourceLineNo">2196</span>        conf.getLong("hbase.auth.key.update.interval", 24*60*60*1000);<a name="line.2196"></a>
+<span class="sourceLineNo">2197</span>    long maxAge =<a name="line.2197"></a>
+<span class="sourceLineNo">2198</span>        conf.getLong("hbase.auth.token.max.lifetime", 7*24*60*60*1000);<a name="line.2198"></a>
+<span class="sourceLineNo">2199</span>    return new AuthenticationTokenSecretManager(conf, server.getZooKeeper(),<a name="line.2199"></a>
+<span class="sourceLineNo">2200</span>        server.getServerName().toString(), keyUpdateInterval, maxAge);<a name="line.2200"></a>
+<span class="sourceLineNo">2201</span>  }<a name="line.2201"></a>
+<span class="sourceLineNo">2202</span><a name="line.2202"></a>
+<span class="sourceLineNo">2203</span>  public SecretManager&lt;? extends TokenIdentifier&gt; getSecretManager() {<a name="line.2203"></a>
+<span class="sourceLineNo">2204</span>    return this.secretManager;<a name="line.2204"></a>
+<span class="sourceLineNo">2205</span>  }<a name="line.2205"></a>
+<span class="sourceLineNo">2206</span><a name="line.2206"></a>
+<span class="sourceLineNo">2207</span>  @SuppressWarnings("unchecked")<a name="line.2207"></a>
+<span class="sourceLineNo">2208</span>  public void setSecretManager(SecretManager&lt;? extends TokenIdentifier&gt; secretManager) {<a name="line.2208"></a>
+<span class="sourceLineNo">2209</span>    this.secretManager = (SecretManager&lt;TokenIdentifier&gt;) secretManager;<a name="line.2209"></a>
+<span class="sourceLineNo">2210</span>  }<a name="line.2210"></a>
+<span class="sourceLineNo">2211</span><a name="line.2211"></a>
+<span class="sourceLineNo">2212</span>  /**<a name="line.2212"></a>
+<span class="sourceLineNo">2213</span>   * This is a server side method, which is invoked over RPC. On success<a name="line.2213"></a>
+<span class="sourceLineNo">2214</span>   * the return response has protobuf response payload. On failure, the<a name="line.2214"></a>
+<span class="sourceLineNo">2215</span>   * exception name and the stack trace are returned in the protobuf response.<a name="line.2215"></a>
+<span class="sourceLineNo">2216</span>   */<a name="line.2216"></a>
+<span class="sourceLineNo">2217</span>  @Override<a name="line.2217"></a>
+<span class="sourceLineNo">2218</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,<a name="line.2218"></a>
+<span class="sourceLineNo">2219</span>      Message param, CellScanner cellScanner, long receiveTime, MonitoredRPCHandler status)<a name="line.2219"></a>
+<span class="sourceLineNo">2220</span>  throws IOException {<a name="line.2220"></a>
+<span class="sourceLineNo">2221</span>    try {<a name="line.2221"></a>
+<span class="sourceLineNo">2222</span>      status.setRPC(md.getName(), new Object[]{param}, receiveTime);<a name="line.2222"></a>
+<span class="sourceLineNo">2223</span>      // TODO: Review after we add in encoded data blocks.<a name="line.2223"></a>
+<span class="sourceLineNo">2224</span>      status.setRPCPacket(param);<a name="line.2224"></a>
+<span class="sourceLineNo">2225</span>      status.resume("Servicing call");<a name="line.2225"></a>
+<span class="sourceLineNo">2226</span>      //get an instance of the method arg type<a name="line.2226"></a>
+<span class="sourceLineNo">2227</span>      long startTime = System.currentTimeMillis();<a name="line.2227"></a>
+<span class="sourceLineNo">2228</span>      PayloadCarryingRpcController controller = new PayloadCarryingRpcController(cellScanner);<a name="line.2228"></a>
+<span class="sourceLineNo">2229</span>      Message result = service.callBlockingMethod(md, controller, param);<a name="line.2229"></a>
+<span class="sourceLineNo">2230</span>      long endTime = System.currentTimeMillis();<a name="line.2230"></a>
+<span class="sourceLineNo">2231</span>      int processingTime = (int) (endTime - startTime);<a name="line.2231"></a>
+<span class="sourceLineNo">2232</span>      int qTime = (int) (startTime - receiveTime);<a name="line.2232"></a>
+<span class="sourceLineNo">2233</span>      int totalTime = (int) (endTime - receiveTime);<a name="line.2233"></a>
+<span class="sourceLineNo">2234</span>      if (LOG.isTraceEnabled()) {<a name="line.2234"></a>
+<span class="sourceLineNo">2235</span>        LOG.trace(CurCall.get().toString() +<a name="line.2235"></a>
+<span class="sourceLineNo">2236</span>            ", response " + TextFormat.shortDebugString(result) +<a name="line.2236"></a>
+<span class="sourceLineNo">2237</span>            " queueTime: " + qTime +<a name="line.2237"></a>
+<span class="sourceLineNo">2238</span>            " processingTime: " + processingTime +<a name="line.2238"></a>
+<span class="sourceLineNo">2239</span>            " totalTime: " + totalTime);<a name="line.2239"></a>
+<span class="sourceLineNo">2240</span>      }<a name="line.2240"></a>
+<span class="sourceLineNo">2241</span>      long requestSize = param.getSerializedSize();<a name="line.2241"></a>
+<span class="sourceLineNo">2242</span>      long responseSize = result.getSerializedSize();<a name="line.2242"></a>
+<span class="sourceLineNo">2243</span>      metrics.dequeuedCall(qTime);<a name="line.2243"></a>
+<span class="sourceLineNo">2244</span>      metrics.processedCall(processingTime);<a name="line.2244"></a>
+<span class="sourceLineNo">2245</span>      metrics.totalCall(totalTime);<a name="line.2245"></a>
+<span class="sourceLineNo">2246</span>      metrics.receivedRequest(requestSize);<a name="line.2246"></a>
+<span class="sourceLineNo">2247</span>      metrics.sentResponse(responseSize);<a name="line.2247"></a>
+<span class="sourceLineNo">2248</span>      // log any RPC responses that are slower than the configured warn<a name="line.2248"></a>
+<span class="sourceLineNo">2249</span>      // response time or larger than configured warning size<a name="line.2249"></a>
+<span class="sourceLineNo">2250</span>      boolean tooSlow = (processingTime &gt; warnResponseTime &amp;&amp; warnResponseTime &gt; -1);<a name="line.2250"></a>
+<span class="sourceLineNo">2251</span>      boolean tooLarge = (responseSize &gt; warnResponseSize &amp;&amp; warnResponseSize &gt; -1);<a name="line.2251"></a>
+<span class="sourceLineNo">2252</span>      if (tooSlow || tooLarge) {<a name="line.2252"></a>
+<span class="sourceLineNo">2253</span>        // when tagging, we let TooLarge trump TooSmall to keep output simple<a name="line.2253"></a>
+<span class="sourceLineNo">2254</span>        // note that large responses will often also be slow.<a name="line.2254"></a>
+<span class="sourceLineNo">2255</span>        logResponse(new Object[]{param},<a name="line.2255"></a>
+<span class="sourceLineNo">2256</span>            md.getName(), md.getName() + "(" + param.getClass().getName() + ")",<a name="line.2256"></a>
+<span class="sourceLineNo">2257</span>            (tooLarge ? "TooLarge" : "TooSlow"),<a name="line.2257"></a>
+<span class="sourceLineNo">2258</span>            status.getClient(), startTime, processingTime, qTime,<a name="line.2258"></a>
+<span class="sourceLineNo">2259</span>            responseSize);<a name="line.2259"></a>
+<span class="sourceLineNo">2260</span>      }<a name="line.2260"></a>
+<span class="sourceLineNo">2261</span>      return new Pair&lt;Message, CellScanner&gt;(result, controller.cellScanner());<a name="line.2261"></a>
+<span class="sourceLineNo">2262</span>    } catch (Throwable e) {<a name="line.2262"></a>
+<span class="sourceLineNo">2263</span>      // The above callBlockingMethod will always return a SE.  Strip the SE wrapper before<a name="line.2263"></a>
+<span class="sourceLineNo">2264</span>      // putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't<a name="line.2264"></a>
+<span class="sourceLineNo">2265</span>      // need to pass it over the wire.<a name="line.2265"></a>
+<span class="sourceLineNo">2266</span>      if (e instanceof ServiceException) e = e.getCause();<a name="line.2266"></a>
 <span class="sourceLineNo">2267</span><a name="line.2267"></a>
-<span class="sourceLineNo">2268</span>      if (e instanceof LinkageError) throw new DoNotRetryIOException(e);<a name="line.2268"></a>
-<span class="sourceLineNo">2269</span>      if (e instanceof IOException) throw (IOException)e;<a name="line.2269"></a>
-<span class="sourceLineNo">2270</span>      LOG.error("Unexpected throwable object ", e);<a name="line.2270"></a>
-<span class="sourceLineNo">2271</span>      throw new IOException(e.getMessage(), e);<a name="line.2271"></a>
-<span class="sourceLineNo">2272</span>    }<a name="line.2272"></a>
-<span class="sourceLineNo">2273</span>  }<a name="line.2273"></a>
-<span class="sourceLineNo">2274</span><a name="line.2274"></a>
-<span class="sourceLineNo">2275</span>  /**<a name="line.2275"></a>
-<span class="sourceLineNo">2276</span>   * Logs an RPC response to the LOG file, producing valid JSON objects for<a name="line.2276"></a>
-<span class="sourceLineNo">2277</span>   * client Operations.<a name="line.2277"></a>
-<span class="sourceLineNo">2278</span>   * @param params The parameters received in the call.<a name="line.2278"></a>
-<span class="sourceLineNo">2279</span>   * @param methodName The name of the method invoked<a name="line.2279"></a>
-<span class="sourceLineNo">2280</span>   * @param call The string representation of the call<a name="line.2280"></a>
-<span class="sourceLineNo">2281</span>   * @param tag  The tag that will be used to indicate this event in the log.<a name="line.2281"></a>
-<span class="sourceLineNo">2282</span>   * @param clientAddress   The address of the client who made this call.<a name="line.2282"></a>
-<span class="sourceLineNo">2283</span>   * @param startTime       The time that the call was initiated, in ms.<a name="line.2283"></a>
-<span class="sourceLineNo">2284</span>   * @param processingTime  The duration that the call took to run, in ms.<a name="line.2284"></a>
-<span class="sourceLineNo">2285</span>   * @param qTime           The duration that the call spent on the queue<a name="line.2285"></a>
-<span class="sourceLineNo">2286</span>   *                        prior to being initiated, in ms.<a name="line.2286"></a>
-<span class="sourceLineNo">2287</span>   * @param responseSize    The size in bytes of the response buffer.<a name="line.2287"></a>
-<span class="sourceLineNo">2288</span>   */<a name="line.2288"></a>
-<span class="sourceLineNo">2289</span>  void logResponse(Object[] params, String methodName, String call, String tag,<a name="line.2289"></a>
-<span class="sourceLineNo">2290</span>      String clientAddress, long startTime, int processingTime, int qTime,<a name="line.2290"></a>
-<span class="sourceLineNo">2291</span>      long responseSize)<a name="line.2291"></a>
-<span class="sourceLineNo">2292</span>          throws IOException {<a name="line.2292"></a>
-<span class="sourceLineNo">2293</span>    // base information that is reported regardless of type of call<a name="line.2293"></a>
-<span class="sourceLineNo">2294</span>    Map&lt;String, Object&gt; responseInfo = new HashMap&lt;String, Object&gt;();<a name="line.2294"></a>
-<span class="sourceLineNo">2295</span>    responseInfo.put("starttimems", startTime);<a name="line.2295"></a>
-<span class="sourceLineNo">2296</span>    responseInfo.put("processingtimems", processingTime);<a name="line.2296"></a>
-<span class="sourceLineNo">2297</span>    responseInfo.put("queuetimems", qTime);<a name="line.2297"></a>
-<span class="sourceLineNo">2298</span>    responseInfo.put("responsesize", responseSize);<a name="line.2298"></a>
-<span class="sourceLineNo">2299</span>    responseInfo.put("client", clientAddress);<a name="line.2299"></a>
-<span class="sourceLineNo">2300</span>    responseInfo.put("class", server == null? "": server.getClass().getSimpleName());<a name="line.2300"></a>
-<span class="sourceLineNo">2301</span>    responseInfo.put("method", methodName);<a name="line.2301"></a>
-<span class="sourceLineNo">2302</span>    if (params.length == 2 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2302"></a>
-<span class="sourceLineNo">2303</span>        params[0] instanceof byte[] &amp;&amp;<a name="line.2303"></a>
-<span class="sourceLineNo">2304</span>        params[1] instanceof Operation) {<a name="line.2304"></a>
-<span class="sourceLineNo">2305</span>      // if the slow process is a query, we want to log its table as well<a name="line.2305"></a>
-<span class="sourceLineNo">2306</span>      // as its own fingerprint<a name="line.2306"></a>
-<span class="sourceLineNo">2307</span>      TableName tableName = TableName.valueOf(<a name="line.2307"></a>
-<span class="sourceLineNo">2308</span>          HRegionInfo.parseRegionName((byte[]) params[0])[0]);<a name="line.2308"></a>
-<span class="sourceLineNo">2309</span>      responseInfo.put("table", tableName.getNameAsString());<a name="line.2309"></a>
-<span class="sourceLineNo">2310</span>      // annotate the response map with operation details<a name="line.2310"></a>
-<span class="sourceLineNo">2311</span>      responseInfo.putAll(((Operation) params[1]).toMap());<a name="line.2311"></a>
-<span class="sourceLineNo">2312</span>      // report to the log file<a name="line.2312"></a>
-<span class="sourceLineNo">2313</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2313"></a>
-<span class="sourceLineNo">2314</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2314"></a>
-<span class="sourceLineNo">2315</span>    } else if (params.length == 1 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2315"></a>
-<span class="sourceLineNo">2316</span>        params[0] instanceof Operation) {<a name="line.2316"></a>
-<span class="sourceLineNo">2317</span>      // annotate the response map with operation details<a name="line.2317"></a>
-<span class="sourceLineNo">2318</span>      responseInfo.putAll(((Operation) params[0]).toMap());<a name="line.2318"></a>
-<span class="sourceLineNo">2319</span>      // report to the log file<a name="line.2319"></a>
-<span class="sourceLineNo">2320</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2320"></a>
-<span class="sourceLineNo">2321</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2321"></a>
-<span class="sourceLineNo">2322</span>    } else {<a name="line.2322"></a>
-<span class="sourceLineNo">2323</span>      // can't get JSON details, so just report call.toString() along with<a name="line.2323"></a>
-<span class="sourceLineNo">2324</span>      // a more generic tag.<a name="line.2324"></a>
-<span class="sourceLineNo">2325</span>      responseInfo.put("call", call);<a name="line.2325"></a>
-<span class="sourceLineNo">2326</span>      LOG.warn("(response" + tag + "): " + MAPPER.writeValueAsString(responseInfo));<a name="line.2326"></a>
-<span class="sourceLineNo">2327</span>    }<a name="line.2327"></a>
-<span class="sourceLineNo">2328</span>  }<a name="line.2328"></a>
-<span class="sourceLineNo">2329</span><a name="line.2329"></a>
-<span class="sourceLineNo">2330</span>  /** Stops the service.  No new calls will be handled after this is called. */<a name="line.2330"></a>
-<span class="sourceLineNo">2331</span>  @Override<a name="line.2331"></a>
-<span class="sourceLineNo">2332</span>  public synchronized void stop() {<a name="line.2332"></a>
-<span class="sourceLineNo">2333</span>    LOG.info("Stopping server on " + port);<a name="line.2333"></a>
-<span class="sourceLineNo">2334</span>    running = false;<a name="line.2334"></a>
-<span class="sourceLineNo">2335</span>    if (authTokenSecretMgr != null) {<a name="line.2335"></a>
-<span class="sourceLineNo">2336</span>      authTokenSecretMgr.stop();<a name="line.2336"></a>
-<span class="sourceLineNo">2337</span>      authTokenSecretMgr = null;<a name="line.2337"></a>
-<span class="sourceLineNo">2338</span>    }<a name="line.2338"></a>
-<span class="sourceLineNo">2339</span>    listener.interrupt();<a name="line.2339"></a>
-<span class="sourceLineNo">2340</span>    listener.doStop();<a name="line.2340"></a>
-<span class="sourceLineNo">2341</span>    responder.interrupt();<a name="line.2341"></a>
-<span class="sourceLineNo">2342</span>    scheduler.stop();<a name="line.2342"></a>
-<span class="sourceLineNo">2343</span>    notifyAll();<a name="line.2343"></a>
-<span class="sourceLineNo">2344</span>  }<a name="line.2344"></a>
-<span class="sourceLineNo">2345</span><a name="line.2345"></a>
-<span class="sourceLineNo">2346</span>  /** Wait for the server to be stopped.<a name="line.2346"></a>
-<span class="sourceLineNo">2347</span>   * Does not wait for all subthreads to finish.<a name="line.2347"></a>
-<span class="sourceLineNo">2348</span>   *  See {@link #stop()}.<a name="line.2348"></a>
-<span class="sourceLineNo">2349</span>   * @throws InterruptedException e<a name="line.2349"></a>
-<span class="sourceLineNo">2350</span>   */<a name="line.2350"></a>
-<span class="sourceLineNo">2351</span>  @Override<a name="line.2351"></a>
-<span class="sourceLineNo">2352</span>  public synchronized void join() throws InterruptedException {<a name="line.2352"></a>
-<span class="sourceLineNo">2353</span>    while (running) {<a name="line.2353"></a>
-<span class="sourceLineNo">2354</span>      wait();<a name="line.2354"></a>
-<span class="sourceLineNo">2355</span>    }<a name="line.2355"></a>
-<span class="sourceLineNo">2356</span>  }<a name="line.2356"></a>
-<span class="sourceLineNo">2357</span><a name="line.2357"></a>
-<span class="sourceLineNo">2358</span>  /**<a name="line.2358"></a>
-<span class="sourceLineNo">2359</span>   * Return the socket (ip+port) on which the RPC server is listening to. May return null if<a name="line.2359"></a>
-<span class="sourceLineNo">2360</span>   * the listener channel is closed.<a name="line.2360"></a>
-<span class="sourceLineNo">2361</span>   * @return the socket (ip+port) on which the RPC server is listening to, or null if this<a name="line.2361"></a>
-<span class="sourceLineNo">2362</span>   * information cannot be determined<a name="line.2362"></a>
-<span class="sourceLineNo">2363</span>   */<a name="line.2363"></a>
-<span class="sourceLineNo">2364</span>  @Override<a name="line.2364"></a>
-<span class="sourceLineNo">2365</span>  public synchronized InetSocketAddress getListenerAddress() {<a name="line.2365"></a>
-<span class="sourceLineNo">2366</span>    if (listener == null) {<a name="line.2366"></a>
-<span class="sourceLineNo">2367</span>      return null;<a name="line.2367"></a>
-<span class="sourceLineNo">2368</span>    }<a name="line.2368"></a>
-<span class="sourceLineNo">2369</span>    return listener.getAddress();<a name="line.2369"></a>
-<span class="sourceLineNo">2370</span>  }<a name="line.2370"></a>
-<span class="sourceLineNo">2371</span><a name="line.2371"></a>
-<span class="sourceLineNo">2372</span>  /**<a name="line.2372"></a>
-<span class="sourceLineNo">2373</span>   * Set the handler for calling out of RPC for error conditions.<a name="line.2373"></a>
-<span class="sourceLineNo">2374</span>   * @param handler the handler implementation<a name="line.2374"></a>
-<span class="sourceLineNo">2375</span>   */<a name="line.2375"></a>
-<span class="sourceLineNo">2376</span>  @Override<a name="line.2376"></a>
-<span class="sourceLineNo">2377</span>  public void setErrorHandler(HBaseRPCErrorHandler handler) {<a name="line.2377"></a>
-<span class="sourceLineNo">2378</span>    this.errorHandler = handler;<a name="line.2378"></a>
-<span class="sourceLineNo">2379</span>  }<a name="line.2379"></a>
-<span class="sourceLineNo">2380</span><a name="line.2380"></a>
-<span class="sourceLineNo">2381</span>  @Override<a name="line.2381"></a>
-<span class="sourceLineNo">2382</span>  public HBaseRPCErrorHandler getErrorHandler() {<a name="line.2382"></a>
-<span class="sourceLineNo">2383</span>    return this.errorHandler;<a name="line.2383"></a>
-<span class="sourceLineNo">2384</span>  }<a name="line.2384"></a>
-<span class="sourceLineNo">2385</span><a name="line.2385"></a>
-<span class="sourceLineNo">2386</span>  /**<a name="line.2386"></a>
-<span class="sourceLineNo">2387</span>   * Returns the metrics instance for reporting RPC call statistics<a name="line.2387"></a>
-<span class="sourceLineNo">2388</span>   */<a name="line.2388"></a>
-<span class="sourceLineNo">2389</span>  @Override<a name="line.2389"></a>
-<span class="sourceLineNo">2390</span>  public MetricsHBaseServer getMetrics() {<a name="line.2390"></a>
-<span class="sourceLineNo">2391</span>    return metrics;<a name="line.2391"></a>
-<span class="sourceLineNo">2392</span>  }<a name="line.2392"></a>
-<span class="sourceLineNo">2393</span><a name="line.2393"></a>
-<span class="sourceLineNo">2394</span>  @Override<a name="line.2394"></a>
-<span class="sourceLineNo">2395</span>  public void addCallSize(final long diff) {<a name="line.2395"></a>
-<span class="sourceLineNo">2396</span>    this.callQueueSize.add(diff);<a name="line.2396"></a>
-<span class="sourceLineNo">2397</span>  }<a name="line.2397"></a>
-<span class="sourceLineNo">2398</span><a name="line.2398"></a>
-<span class="sourceLineNo">2399</span>  /**<a name="line.2399"></a>
-<span class="sourceLineNo">2400</span>   * Authorize the incoming client connection.<a name="line.2400"></a>
-<span class="sourceLineNo">2401</span>   *<a name="line.2401"></a>
-<span class="sourceLineNo">2402</span>   * @param user client user<a name="line.2402"></a>
-<span class="sourceLineNo">2403</span>   * @param connection incoming connection<a name="line.2403"></a>
-<span class="sourceLineNo">2404</span>   * @param addr InetAddress of incoming connection<a name="line.2404"></a>
-<span class="sourceLineNo">2405</span>   * @throws org.apache.hadoop.security.authorize.AuthorizationException<a name="line.2405"></a>
-<span class="sourceLineNo">2406</span>   *         when the client isn't authorized to talk the protocol<a name="line.2406"></a>
-<span class="sourceLineNo">2407</span>   */<a name="line.2407"></a>
-<span class="sourceLineNo">2408</span>  public synchronized void authorize(UserGroupInformation user, ConnectionHeader connection,<a name="line.2408"></a>
-<span class="sourceLineNo">2409</span>      InetAddress addr)<a name="line.2409"></a>
-<span class="sourceLineNo">2410</span>  throws AuthorizationException {<a name="line.2410"></a>
-<span class="sourceLineNo">2411</span>    if (authorize) {<a name="line.2411"></a>
-<span class="sourceLineNo">2412</span>      Class&lt;?&gt; c = getServiceInterface(services, connection.getServiceName());<a name="line.2412"></a>
-<span class="sourceLineNo">2413</span>      this.authManager.authorize(user != null ? user : null, c, getConf(), addr);<a name="line.2413"></a>
-<span class="sourceLineNo">2414</span>    }<a name="line.2414"></a>
-<span class="sourceLineNo">2415</span>  }<a name="line.2415"></a>
-<span class="sourceLineNo">2416</span><a name="line.2416"></a>
-<span class="sourceLineNo">2417</span>  /**<a name="line.2417"></a>
-<span class="sourceLineNo">2418</span>   * When the read or write buffer size is larger than this limit, i/o will be<a name="line.2418"></a>
-<span class="sourceLineNo">2419</span>   * done in chunks of this size. Most RPC requests and responses would be<a name="line.2419"></a>
-<span class="sourceLineNo">2420</span>   * be smaller.<a name="line.2420"></a>
-<span class="sourceLineNo">2421</span>   */<a name="line.2421"></a>
-<span class="sourceLineNo">2422</span>  private static int NIO_BUFFER_LIMIT = 64 * 1024; //should not be more than 64KB.<a name="line.2422"></a>
-<span class="sourceLineNo">2423</span><a name="line.2423"></a>
-<span class="sourceLineNo">2424</span>  /**<a name="line.2424"></a>
-<span class="sourceLineNo">2425</span>   * This is a wrapper around {@link java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)}.<a name="line.2425"></a>
-<span class="sourceLineNo">2426</span>   * If the amount of data is large, it writes to channel in smaller chunks.<a name="line.2426"></a>
-<span class="sourceLineNo">2427</span>   * This is to avoid jdk from creating many direct buffers as the size of<a name="line.2427"></a>
-<span class="sourceLineNo">2428</span>   * buffer increases. This also minimizes extra copies in NIO layer<a name="line.2428"></a>
-<span class="sourceLineNo">2429</span>   * as a result of multiple write operations required to write a large<a name="line.2429"></a>
-<span class="sourceLineNo">2430</span>   * buffer.<a name="line.2430"></a>
-<span class="sourceLineNo">2431</span>   *<a name="line.2431"></a>
-<span class="sourceLineNo">2432</span>   * @param channel writable byte channel to write to<a name="line.2432"></a>
-<span class="sourceLineNo">2433</span>   * @param bufferChain Chain of buffers to write<a name="line.2433"></a>
-<span class="sourceLineNo">2434</span>   * @return number of bytes written<a name="line.2434"></a>
-<span class="sourceLineNo">2435</span>   * @throws java.io.IOException e<a name="line.2435"></a>
-<span class="sourceLineNo">2436</span>   * @see java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)<a name="line.2436"></a>
-<span class="sourceLineNo">2437</span>   */<a name="line.2437"></a>
-<span class="sourceLineNo">2438</span>  protected long channelWrite(GatheringByteChannel channel, BufferChain bufferChain)<a name="line.2438"></a>
-<span class="sourceLineNo">2439</span>  throws IOException {<a name="line.2439"></a>
-<span class="sourceLineNo">2440</span>    long count =  bufferChain.write(channel, NIO_BUFFER_LIMIT);<a name="line.2440"></a>
-<span class="sourceLineNo">2441</span>    if (count &gt; 0) this.metrics.sentBytes(count);<a name="line.2441"></a>
-<span class="sourceLineNo">2442</span>    return count;<a name="line.2442"></a>
-<span class="sourceLineNo">2443</span>  }<a name="line.2443"></a>
-<span class="sourceLineNo">2444</span><a name="line.2444"></a>
-<span class="sourceLineNo">2445</span>  /**<a name="line.2445"></a>
-<span class="sourceLineNo">2446</span>   * This is a wrapper around {@link java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer)}.<a name="line.2446"></a>
-<span class="sourceLineNo">2447</span>   * If the amount of data is large, it writes to channel in smaller chunks.<a name="line.2447"></a>
-<span class="sourceLineNo">2448</span>   * This is to avoid jdk from creating many direct buffers as the size of<a name="line.2448"></a>
-<span class="sourceLineNo">2449</span>   * ByteBuffer increases. There should not be any performance degredation.<a name="line.2449"></a>
-<span class="sourceLineNo">2450</span>   *<a name="line.2450"></a>
-<span class="sourceLineNo">2451</span>   * @param channel writable byte channel to write on<a name="line.2451"></a>
-<span class="sourceLineNo">2452</span>   * @param buffer buffer to write<a name="line.2452"></a>
-<span class="sourceLineNo">2453</span>   * @return number of bytes written<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>   * @throws java.io.IOException e<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>   * @see java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer)<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>   */<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>  protected int channelRead(ReadableByteChannel channel,<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>                                   ByteBuffer buffer) throws IOException {<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span><a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>    int count = (buffer.remaining() &lt;= NIO_BUFFER_LIMIT) ?<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>           channel.read(buffer) : channelIO(channel, null, buffer);<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span>    if (count &gt; 0) {<a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      metrics.receivedBytes(count);<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>    }<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>    return count;<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>  }<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span><a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>  /**<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>   * Helper for {@link #channelRead(java.nio.channels.ReadableByteChannel, java.nio.ByteBuffer)}<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>   * and {@link #channelWrite(GatheringByteChannel, BufferChain)}. Only<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span>   * one of readCh or writeCh should be non-null.<a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>   *<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>   * @param readCh read channel<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>   * @param writeCh write channel<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>   * @param buf buffer to read or write into/out of<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>   * @return bytes written<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>   * @throws java.io.IOException e<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>   * @see #channelRead(java.nio.channels.ReadableByteChannel, java.nio.ByteBuffer)<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>   * @see #channelWrite(GatheringByteChannel, BufferChain)<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>   */<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>  private static int channelIO(ReadableByteChannel readCh,<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>                               WritableByteChannel writeCh,<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>                               ByteBuffer buf) throws IOException {<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span><a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    int originalLimit = buf.limit();<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    int initialRemaining = buf.remaining();<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>    int ret = 0;<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span><a name="line.2488"></a>
-<span class="sourceLineNo">2489</span>    while (buf.remaining() &gt; 0) {<a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>      try {<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>        int ioSize = Math.min(buf.remaining(), NIO_BUFFER_LIMIT);<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>        buf.limit(buf.position() + ioSize);<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span><a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>        ret = (readCh == null) ? writeCh.write(buf) : readCh.read(buf);<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span><a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>        if (ret &lt; ioSize) {<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>          break;<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>        }<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span><a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      } finally {<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>        buf.limit(originalLimit);<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>      }<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>    }<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span><a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>    int nBytes = initialRemaining - buf.remaining();<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    return (nBytes &gt; 0) ? nBytes : ret;<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>  }<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span><a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>  /**<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>   * Needed for features such as delayed calls.  We need to be able to store the current call<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>   * so that we can complete it later or ask questions of what is supported by the current ongoing<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span>   * call.<a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>   * @return An RpcCallContext backed by the currently ongoing call (gotten from a thread local)<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>   */<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>  public static RpcCallContext getCurrentCall() {<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    return CurCall.get();<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>  }<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span><a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>  public static boolean isInRpcCallContext() {<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>    return CurCall.get() != null;<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>  }<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span><a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>  /**<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>   * Returns the user credentials associated with the current RPC request or<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>   * &lt;code&gt;null&lt;/code&gt; if no credentials were provided.<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>   * @return A User<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>   */<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  public static User getRequestUser() {<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span>    RpcCallContext ctx = getCurrentCall();<a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>    return ctx == null? null: ctx.getRequestUser();<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>  }<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span><a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  /**<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>   * Returns the username for any user associated with the current RPC<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>   * request or &lt;code&gt;null&lt;/code&gt; if no user is set.<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>   */<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>  public static String getRequestUserName() {<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    User user = getRequestUser();<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>    return user == null? null: user.getShortName();<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>  }<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span><a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>  /**<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>   * @return Address of remote client if a request is ongoing, else null<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>   */<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span>  public static InetAddress getRemoteAddress() {<a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>    RpcCallContext ctx = getCurrentCall();<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>    return ctx == null? null: ctx.getRemoteAddress();<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>  }<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span><a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>  /**<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span>   * @param services Available service instances<a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>   * @return Matching BlockingServiceAndInterface pair<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   */<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>  static BlockingServiceAndInterface getServiceAndInterface(<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>      final List&lt;BlockingServiceAndInterface&gt; services, final String serviceName) {<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>    for (BlockingServiceAndInterface bs : services) {<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>      if (bs.getBlockingService().getDescriptorForType().getName().equals(serviceName)) {<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>        return bs;<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>      }<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>    }<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>    return null;<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>  }<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span><a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>  /**<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>   * @param services Available services and their service interfaces.<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>   * @return Service interface class for &lt;code&gt;serviceName&lt;/code&gt;<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>   */<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>  static Class&lt;?&gt; getServiceInterface(<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>      final List&lt;BlockingServiceAndInterface&gt; services,<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>      final String serviceName) {<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>    BlockingServiceAndInterface bsasi =<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span>        getServiceAndInterface(services, serviceName);<a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>    return bsasi == null? null: bsasi.getServiceInterface();<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>  }<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span><a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>  /**<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>   * @param services Available services and their service interfaces.<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>   * @return BlockingService that goes with the passed &lt;code&gt;serviceName&lt;/code&gt;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>   */<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>  static BlockingService getService(<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>      final List&lt;BlockingServiceAndInterface&gt; services,<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span>      final String serviceName) {<a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    BlockingServiceAndInterface bsasi =<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>        getServiceAndInterface(services, serviceName);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    return bsasi == null? null: bsasi.getBlockingService();<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span>  }<a name="line.2589"></a>
-<span class="sourceLineNo">2590</span><a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>  static MonitoredRPCHandler getStatus() {<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // It is ugly the way we park status up in RpcServer.  Let it be for now.  TODO.<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    MonitoredRPCHandler status = RpcServer.MONITORED_RPC.get();<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    if (status != null) {<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>      return status;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    }<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>    status = TaskMonitor.get().createRPCStatus(Thread.currentThread().getName());<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>    status.pause("Waiting for a call");<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>    RpcServer.MONITORED_RPC.set(status);<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>    return status;<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span>  }<a name="line.2601"></a>
-<span class="sourceLineNo">2602</span><a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>  /** Returns the remote side ip address when invoked inside an RPC<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>   *  Returns null incase of an error.<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span>   *  @return InetAddress<a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>   */<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>  public static InetAddress getRemoteIp() {<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>    Call call = CurCall.get();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>    if (call != null &amp;&amp; call.connection != null &amp;&amp; call.connection.socket != null) {<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      return call.connection.socket.getInetAddress();<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>    }<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>    return null;<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>  }<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span><a name="line.2614"></a>
-<span class="sourceLineNo">2615</span><a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>  /**<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>   * A convenience method to bind to a given address and report<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>   * better exceptions if the address is not a valid host.<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>   * @param socket the socket to bind<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>   * @param address the address to bind to<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>   * @param backlog the number of connections allowed in the queue<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>   * @throws BindException if the address can't be bound<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>   * @throws UnknownHostException if the address isn't a valid host name<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>   * @throws IOException other random errors from bind<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>   */<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span>  public static void bind(ServerSocket socket, InetSocketAddress address,<a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>                          int backlog) throws IOException {<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>    try {<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span>      socket.bind(address, backlog);<a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>    } catch (BindException e) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>      BindException bindException =<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        new BindException("Problem binding to " + address + " : " +<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>            e.getMessage());<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>      bindException.initCause(e);<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>      throw bindException;<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>    } catch (SocketException e) {<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>      // If they try to bind to a different host's address, give a better<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // error message.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      if ("Unresolved address".equals(e.getMessage())) {<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>        throw new UnknownHostException("Invalid hostname for server: " +<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>                                       address.getHostName());<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      }<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      throw e;<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>    }<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>  }<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span><a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>  @Override<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>  public RpcScheduler getScheduler() {<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>    return scheduler;<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>  }<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>}<a name="line.2651"></a>
+<span class="sourceLineNo">2268</span>      // increment the number of requests that were exceptions.<a name="line.2268"></a>
+<span class="sourceLineNo">2269</span>      metrics.exception(e);<a name="line.2269"></a>
+<span class="sourceLineNo">2270</span><a name="line.2270"></a>
+<span class="sourceLineNo">2271</span>      if (e instanceof LinkageError) throw new DoNotRetryIOException(e);<a name="line.2271"></a>
+<span class="sourceLineNo">2272</span>      if (e instanceof IOException) throw (IOException)e;<a name="line.2272"></a>
+<span class="sourceLineNo">2273</span>      LOG.error("Unexpected throwable object ", e);<a name="line.2273"></a>
+<span class="sourceLineNo">2274</span>      throw new IOException(e.getMessage(), e);<a name="line.2274"></a>
+<span class="sourceLineNo">2275</span>    }<a name="line.2275"></a>
+<span class="sourceLineNo">2276</span>  }<a name="line.2276"></a>
+<span class="sourceLineNo">2277</span><a name="line.2277"></a>
+<span class="sourceLineNo">2278</span>  /**<a name="line.2278"></a>
+<span class="sourceLineNo">2279</span>   * Logs an RPC response to the LOG file, producing valid JSON objects for<a name="line.2279"></a>
+<span class="sourceLineNo">2280</span>   * client Operations.<a name="line.2280"></a>
+<span class="sourceLineNo">2281</span>   * @param params The parameters received in the call.<a name="line.2281"></a>
+<span class="sourceLineNo">2282</span>   * @param methodName The name of the method invoked<a name="line.2282"></a>
+<span class="sourceLineNo">2283</span>   * @param call The string representation of the call<a name="line.2283"></a>
+<span class="sourceLineNo">2284</span>   * @param tag  The tag that will be used to indicate this event in the log.<a name="line.2284"></a>
+<span class="sourceLineNo">2285</span>   * @param clientAddress   The address of the client who made this call.<a name="line.2285"></a>
+<span class="sourceLineNo">2286</span>   * @param startTime       The time that the call was initiated, in ms.<a name="line.2286"></a>
+<span class="sourceLineNo">2287</span>   * @param processingTime  The duration that the call took to run, in ms.<a name="line.2287"></a>
+<span class="sourceLineNo">2288</span>   * @param qTime           The duration that the call spent on the queue<a name="line.2288"></a>
+<span class="sourceLineNo">2289</span>   *                        prior to being initiated, in ms.<a name="line.2289"></a>
+<span class="sourceLineNo">2290</span>   * @param responseSize    The size in bytes of the response buffer.<a name="line.2290"></a>
+<span class="sourceLineNo">2291</span>   */<a name="line.2291"></a>
+<span class="sourceLineNo">2292</span>  void logResponse(Object[] params, String methodName, String call, String tag,<a name="line.2292"></a>
+<span class="sourceLineNo">2293</span>      String clientAddress, long startTime, int processingTime, int qTime,<a name="line.2293"></a>
+<span class="sourceLineNo">2294</span>      long responseSize)<a name="line.2294"></a>
+<span class="sourceLineNo">2295</span>          throws IOException {<a name="line.2295"></a>
+<span class="sourceLineNo">2296</span>    // base information that is reported regardless of type of call<a name="line.2296"></a>
+<span class="sourceLineNo">2297</span>    Map&lt;String, Object&gt; responseInfo = new HashMap&lt;String, Object&gt;();<a name="line.2297"></a>
+<span class="sourceLineNo">2298</span>    responseInfo.put("starttimems", startTime);<a name="line.2298"></a>
+<span class="sourceLineNo">2299</span>    responseInfo.put("processingtimems", processingTime);<a name="line.2299"></a>
+<span class="sourceLineNo">2300</span>    responseInfo.put("queuetimems", qTime);<a name="line.2300"></a>
+<span class="sourceLineNo">2301</span>    responseInfo.put("responsesize", responseSize);<a name="line.2301"></a>
+<span class="sourceLineNo">2302</span>    responseInfo.put("client", clientAddress);<a name="line.2302"></a>
+<span class="sourceLineNo">2303</span>    responseInfo.put("class", server == null? "": server.getClass().getSimpleName());<a name="line.2303"></a>
+<span class="sourceLineNo">2304</span>    responseInfo.put("method", methodName);<a name="line.2304"></a>
+<span class="sourceLineNo">2305</span>    if (params.length == 2 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2305"></a>
+<span class="sourceLineNo">2306</span>        params[0] instanceof byte[] &amp;&amp;<a name="line.2306"></a>
+<span class="sourceLineNo">2307</span>        params[1] instanceof Operation) {<a name="line.2307"></a>
+<span class="sourceLineNo">2308</span>      // if the slow process is a query, we want to log its table as well<a name="line.2308"></a>
+<span class="sourceLineNo">2309</span>      // as its own fingerprint<a name="line.2309"></a>
+<span class="sourceLineNo">2310</span>      TableName tableName = TableName.valueOf(<a name="line.2310"></a>
+<span class="sourceLineNo">2311</span>          HRegionInfo.parseRegionName((byte[]) params[0])[0]);<a name="line.2311"></a>
+<span class="sourceLineNo">2312</span>      responseInfo.put("table", tableName.getNameAsString());<a name="line.2312"></a>
+<span class="sourceLineNo">2313</span>      // annotate the response map with operation details<a name="line.2313"></a>
+<span class="sourceLineNo">2314</span>      responseInfo.putAll(((Operation) params[1]).toMap());<a name="line.2314"></a>
+<span class="sourceLineNo">2315</span>      // report to the log file<a name="line.2315"></a>
+<span class="sourceLineNo">2316</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2316"></a>
+<span class="sourceLineNo">2317</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2317"></a>
+<span class="sourceLineNo">2318</span>    } else if (params.length == 1 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2318"></a>
+<span class="sourceLineNo">2319</span>        params[0] instanceof Operation) {<a name="line.2319"></a>
+<span class="sourceLineNo">2320</span>      // annotate the response map with operation details<a name="line.2320"></a>
+<span class="sourceLineNo">2321</span>      responseInfo.putAll(((Operation) params[0]).toMap());<a name="line.2321"></a>
+<span class="sourceLineNo">2322</span>      // report to the log file<a name="line.2322"></a>
+<span class="sourceLineNo">2323</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2323"></a>
+<span class="sourceLineNo">2324</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2324"></a>
+<span class="sourceLineNo">2325</span>    } else {<a name="line.2325"></a>
+<span class="sourceLineNo">2326</span>      // can't get JSON details, so just report call.toString() along with<a name="line.2326"></a>
+<span class="sourceLineNo">2327</span>      // a more generic tag.<a name="line.2327"></a>
+<span class="sourceLineNo">2328</span>      responseInfo.put("call", call);<a name="line.2328"></a>
+<span class="sourceLineNo">2329</span>      LOG.warn("(response" + tag + "): " + MAPPER.writeValueAsString(responseInfo));<a name="line.2329"></a>
+<span class="sourceLineNo">2330</span>    }<a name="line.2330"></a>
+<span class="sourceLineNo">2331</span>  }<a name="line.2331"></a>
+<span class="sourceLineNo">2332</span><a name="line.2332"></a>
+<span class="sourceLineNo">2333</span>  /** Stops the service.  No new calls will be handled after this is called. */<a name="line.2333"></a>
+<span class="sourceLineNo">2334</span>  @Override<a name="line.2334"></a>
+<span class="sourceLineNo">2335</span>  public synchronized void stop() {<a name="line.2335"></a>
+<span class="sourceLineNo">2336</span>    LOG.info("Stopping server on " + port);<a name="line.2336"></a>
+<span class="sourceLineNo">2337</span>    running = false;<a name="line.2337"></a>
+<span class="sourceLineNo">2338</span>    if (authTokenSecretMgr != null) {<a name="line.2338"></a>
+<span class="sourceLineNo">2339</span>      authTokenSecretMgr.stop();<a name="line.2339"></a>
+<span class="sourceLineNo">2340</span>      authTokenSecretMgr = null;<a name="line.2340"></a>
+<span class="sourceLineNo">2341</span>    }<a name="line.2341"></a>
+<span class="sourceLineNo">2342</span>    listener.interrupt();<a name="line.2342"></a>
+<span class="sourceLineNo">2343</span>    listener.doStop();<a name="line.2343"></a>
+<span class="sourceLineNo">2344</span>    responder.interrupt();<a name="line.2344"></a>
+<span class="sourceLineNo">2345</span>    scheduler.stop();<a name="line.2345"></a>
+<span class="sourceLineNo">2346</span>    notifyAll();<a name="line.2346"></a>
+<span class="sourceLineNo">2347</span>  }<a name="line.2347"></a>
+<span class="sourceLineNo">2348</span><a name="line.2348"></a>
+<span class="sourceLineNo">2349</span>  /** Wait for the server to be stopped.<a name="line.2349"></a>
+<span class="sourceLineNo">2350</span>   * Does not wait for all subthreads to finish.<a name="line.2350"></a>
+<span class="sourceLineNo">2351</span>   *  See {@link #stop()}.<a name="line.2351"></a>
+<span class="sourceLineNo">2352</span>   * @throws InterruptedException e<a name="line.2352"></a>
+<span class="sourceLineNo">2353</span>   */<a name="line.2353"></a>
+<span class="sourceLineNo">2354</span>  @Override<a name="line.2354"></a>
+<span class="sourceLineNo">2355</span>  public synchronized void join() throws InterruptedException {<a name="line.2355"></a>
+<span class="sourceLineNo">2356</span>    while (running) {<a name="line.2356"></a>
+<span class="sourceLineNo">2357</span>      wait();<a name="line.2357"></a>
+<span class="sourceLineNo">2358</span>    }<a name="line.2358"></a>
+<span class="sourceLineNo">2359</span>  }<a name="line.2359"></a>
+<span class="sourceLineNo">2360</span><a name="line.2360"></a>
+<span class="sourceLineNo">2361</span>  /**<a name="line.2361"></a>
+<span class="sourceLineNo">2362</span>   * Return the socket (ip+port) on which the RPC server is listening to. May return null if<a name="line.2362"></a>
+<span class="sourceLineNo">2363</span>   * the listener channel is closed.<a name="line.2363"></a>
+<span class="sourceLineNo">2364</span>   * @return the socket (ip+port) on which the RPC server is listening to, or null if this<a name="line.2364"></a>
+<span class="sourceLineNo">2365</span>   * information cannot be determined<a name="line.2365"></a>
+<span class="sourceLineNo">2366</span>   */<a name="line.2366"></a>
+<span class="sourceLineNo">2367</span>  @Override<a name="line.2367"></a>
+<span class="sourceLineNo">2368</span>  public synchronized InetSocketAddress getListenerAddress() {<a name="line.2368"></a>
+<span class="sourceLineNo">2369</span>    if (listener == null) {<a name="line.2369"></a>
+<span class="sourceLineNo">2370</span>      return null;<a name="line.2370"></a>
+<span class="sourceLineNo">2371</span>    }<a name="line.2371"></a>
+<span class="sourceLineNo">2372</span>    return listener.getAddress();<a name="line.2372"></a>
+<span class="sourceLineNo">2373</span>  }<a name="line.2373"></a>
+<span class="sourceLineNo">2374</span><a name="line.2374"></a>
+<span class="sourceLineNo">2375</span>  /**<a name="line.2375"></a>
+<span class="sourceLineNo">2376</span>   * Set the handler for calling out of RPC for error conditions.<a name="line.2376"></a>
+<span class="sourceLineNo">2377</span>   * @param handler the handler implementation<a name="line.2377"></a>
+<span class="sourceLineNo">2378</span>   */<a name="line.2378"></a>
+<span class="sourceLineNo">2379</span>  @Override<a name="line.2379"></a>
+<span class="sourceLineNo">2380</span>  public void setErrorHandler(HBaseRPCErrorHandler handler) {<a name="line.2380"></a>
+<span class="sourceLineNo">2381</span>    this.errorHandler = handler;<a name="line.2381"></a>
+<span class="sourceLineNo">2382</span>  }<a name="line.2382"></a>
+<span class="sourceLineNo">2383</span><a name="line.2383"></a>
+<span class="sourceLineNo">2384</span>  @Override<a name="line.2384"></a>
+<span class="sourceLineNo">2385</span>  public HBaseRPCErrorHandler getErrorHandler() {<a name="line.2385"></a>
+<span class="sourceLineNo">2386</span>    return this.errorHandler;<a name="line.2386"></a>
+<span class="sourceLineNo">2387</span>  }<a name="line.2387"></a>
+<span class="sourceLineNo">2388</span><a name="line.2388"></a>
+<span class="sourceLineNo">2389</span>  /**<a name="line.2389"></a>
+<span class="sourceLineNo">2390</span>   * Returns the metrics instance for reporting RPC call statistics<a name="line.2390"></a>
+<span class="sourceLineNo">2391</span>   */<a name="line.2391"></a>
+<span class="sourceLineNo">2392</span>  @Override<a name="line.2392"></a>
+<span class="sourceLineNo">2393</span>  public MetricsHBaseServer getMetrics() {<a name="line.2393"></a>
+<span class="sourceLineNo">2394</span>    return metrics;<a name="line.2394"></a>
+<span class="sourceLineNo">2395</span>  }<a name="line.2395"></a>
+<span class="sourceLineNo">2396</span><a name="line.2396"></a>
+<span class="sourceLineNo">2397</span>  @Override<a name="line.2397"></a>
+<span class="sourceLineNo">2398</span>  public void addCallSize(final long diff) {<a name="line.2398"></a>
+<span class="sourceLineNo">2399</span>    this.callQueueSize.add(diff);<a name="line.2399"></a>
+<span class="sourceLineNo">2400</span>  }<a name="line.2400"></a>
+<span class="sourceLineNo">2401</span><a name="line.2401"></a>
+<span class="sourceLineNo">2402</span>  /**<a name="line.2402"></a>
+<span class="sourceLineNo">2403</span>   * Authorize the incoming client connection.<a name="line.2403"></a>
+<span class="sourceLineNo">2404</span>   *<a name="line.2404"></a>
+<span class="sourceLineNo">2405</span>   * @param user client user<a name="line.2405"></a>
+<span class="sourceLineNo">2406</span>   * @param connection incoming connection<a name="line.2406"></a>
+<span class="sourceLineNo">2407</span>   * @param addr InetAddress of incoming connection<a name="line.2407"></a>
+<span class="sourceLineNo">2408</span>   * @throws org.apache.hadoop.security.authorize.AuthorizationException<a name="line.2408"></a>
+<span class="sourceLineNo">2409</span>   *         when the client isn't authorized to talk the protocol<a name="line.2409"></a>
+<span class="sourceLineNo">2410</span>   */<a name="line.2410"></a>
+<span class="sourceLineNo">2411</span>  public synchronized void authorize(UserGroupInformation user, ConnectionHeader connection,<a name="line.2411"></a>
+<span class="sourceLineNo">2412</span>      InetAddress addr)<a name="line.2412"></a>
+<span class="sourceLineNo">2413</span>  throws AuthorizationException {<a name="line.2413"></a>
+<span class="sourceLineNo">2414</span>    if (authorize) {<a name="line.2414"></a>
+<span class="sourceLineNo">2415</span>      Class&lt;?&gt; c = getServiceInterface(services, connection.getServiceName());<a name="line.2415"></a>
+<span class="sourceLineNo">2416</span>      this.authManager.authorize(user != null ? user : null, c, getConf(), addr);<a name="line.2416"></a>
+<span class="sourceLineNo">2417</span>    }<a name="line.2417"></a>
+<span class="sourceLineNo">2418</span>  }<a name="line.2418"></a>
+<span class="sourceLineNo">2419</span><a name="line.2419"></a>
+<span class="sourceLineNo">2420</span>  /**<a name="line.2420"></a>
+<span class="sourceLineNo">2421</span>   * When the read or write buffer size is larger than this limit, i/o will be<a name="line.2421"></a>
+<span class="sourceLineNo">2422</span>   * done in chunks of this size. Most RPC requests and responses would be<a name="line.2422"></a>
+<span class="sourceLineNo">2423</span>   * be smaller.<a name="line.2423"></a>
+<span class="sourceLineNo">2424</span>   */<a name="line.2424"></a>
+<span class="sourceLineNo">2425</span>  private static int NIO_BUFFER_LIMIT = 64 * 1024; //should not be more than 64KB.<a name="line.2425"></a>
+<span class="sourceLineNo">2426</span><a name="line.2426"></a>
+<span class="sourceLineNo">2427</span>  /**<a name="line.2427"></a>
+<span class="sourceLineNo">2428</span>   * This is a wrapper around {@link java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)}.<a name="line.2428"></a>
+<span class="sourceLineNo">2429</span

<TRUNCATED>

[21/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Listener.Reader.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Listener.Reader.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Listener.Reader.html
index e5d9af6..ea9ea4d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Listener.Reader.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Listener.Reader.html
@@ -2107,556 +2107,559 @@
 <span class="sourceLineNo">2099</span>  @Override<a name="line.2099"></a>
 <span class="sourceLineNo">2100</span>  public void onConfigurationChange(Configuration newConf) {<a name="line.2100"></a>
 <span class="sourceLineNo">2101</span>    initReconfigurable(newConf);<a name="line.2101"></a>
-<span class="sourceLineNo">2102</span>  }<a name="line.2102"></a>
-<span class="sourceLineNo">2103</span><a name="line.2103"></a>
-<span class="sourceLineNo">2104</span>  private void initReconfigurable(Configuration confToLoad) {<a name="line.2104"></a>
-<span class="sourceLineNo">2105</span>    this.allowFallbackToSimpleAuth = confToLoad.getBoolean(FALLBACK_TO_INSECURE_CLIENT_AUTH, false);<a name="line.2105"></a>
-<span class="sourceLineNo">2106</span>    if (isSecurityEnabled &amp;&amp; allowFallbackToSimpleAuth) {<a name="line.2106"></a>
-<span class="sourceLineNo">2107</span>      LOG.warn("********* WARNING! *********");<a name="line.2107"></a>
-<span class="sourceLineNo">2108</span>      LOG.warn("This server is configured to allow connections from INSECURE clients");<a name="line.2108"></a>
-<span class="sourceLineNo">2109</span>      LOG.warn("(" + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = true).");<a name="line.2109"></a>
-<span class="sourceLineNo">2110</span>      LOG.warn("While this option is enabled, client identities cannot be secured, and user");<a name="line.2110"></a>
-<span class="sourceLineNo">2111</span>      LOG.warn("impersonation is possible!");<a name="line.2111"></a>
-<span class="sourceLineNo">2112</span>      LOG.warn("For secure operation, please disable SIMPLE authentication as soon as possible,");<a name="line.2112"></a>
-<span class="sourceLineNo">2113</span>      LOG.warn("by setting " + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = false in hbase-site.xml");<a name="line.2113"></a>
-<span class="sourceLineNo">2114</span>      LOG.warn("****************************");<a name="line.2114"></a>
-<span class="sourceLineNo">2115</span>    }<a name="line.2115"></a>
-<span class="sourceLineNo">2116</span>  }<a name="line.2116"></a>
-<span class="sourceLineNo">2117</span><a name="line.2117"></a>
-<span class="sourceLineNo">2118</span>  /**<a name="line.2118"></a>
-<span class="sourceLineNo">2119</span>   * Subclasses of HBaseServer can override this to provide their own<a name="line.2119"></a>
-<span class="sourceLineNo">2120</span>   * Connection implementations.<a name="line.2120"></a>
-<span class="sourceLineNo">2121</span>   */<a name="line.2121"></a>
-<span class="sourceLineNo">2122</span>  protected Connection getConnection(SocketChannel channel, long time) {<a name="line.2122"></a>
-<span class="sourceLineNo">2123</span>    return new Connection(channel, time);<a name="line.2123"></a>
-<span class="sourceLineNo">2124</span>  }<a name="line.2124"></a>
-<span class="sourceLineNo">2125</span><a name="line.2125"></a>
-<span class="sourceLineNo">2126</span>  /**<a name="line.2126"></a>
-<span class="sourceLineNo">2127</span>   * Setup response for the RPC Call.<a name="line.2127"></a>
-<span class="sourceLineNo">2128</span>   *<a name="line.2128"></a>
-<span class="sourceLineNo">2129</span>   * @param response buffer to serialize the response into<a name="line.2129"></a>
-<span class="sourceLineNo">2130</span>   * @param call {@link Call} to which we are setting up the response<a name="line.2130"></a>
-<span class="sourceLineNo">2131</span>   * @param error error message, if the call failed<a name="line.2131"></a>
-<span class="sourceLineNo">2132</span>   * @throws IOException<a name="line.2132"></a>
-<span class="sourceLineNo">2133</span>   */<a name="line.2133"></a>
-<span class="sourceLineNo">2134</span>  private void setupResponse(ByteArrayOutputStream response, Call call, Throwable t, String error)<a name="line.2134"></a>
-<span class="sourceLineNo">2135</span>  throws IOException {<a name="line.2135"></a>
-<span class="sourceLineNo">2136</span>    if (response != null) response.reset();<a name="line.2136"></a>
-<span class="sourceLineNo">2137</span>    call.setResponse(null, null, t, error);<a name="line.2137"></a>
-<span class="sourceLineNo">2138</span>  }<a name="line.2138"></a>
-<span class="sourceLineNo">2139</span><a name="line.2139"></a>
-<span class="sourceLineNo">2140</span>  protected void closeConnection(Connection connection) {<a name="line.2140"></a>
-<span class="sourceLineNo">2141</span>    synchronized (connectionList) {<a name="line.2141"></a>
-<span class="sourceLineNo">2142</span>      if (connectionList.remove(connection)) {<a name="line.2142"></a>
-<span class="sourceLineNo">2143</span>        numConnections--;<a name="line.2143"></a>
-<span class="sourceLineNo">2144</span>      }<a name="line.2144"></a>
-<span class="sourceLineNo">2145</span>    }<a name="line.2145"></a>
-<span class="sourceLineNo">2146</span>    connection.close();<a name="line.2146"></a>
-<span class="sourceLineNo">2147</span>  }<a name="line.2147"></a>
-<span class="sourceLineNo">2148</span><a name="line.2148"></a>
-<span class="sourceLineNo">2149</span>  Configuration getConf() {<a name="line.2149"></a>
-<span class="sourceLineNo">2150</span>    return conf;<a name="line.2150"></a>
-<span class="sourceLineNo">2151</span>  }<a name="line.2151"></a>
-<span class="sourceLineNo">2152</span><a name="line.2152"></a>
-<span class="sourceLineNo">2153</span>  /** Sets the socket buffer size used for responding to RPCs.<a name="line.2153"></a>
-<span class="sourceLineNo">2154</span>   * @param size send size<a name="line.2154"></a>
-<span class="sourceLineNo">2155</span>   */<a name="line.2155"></a>
-<span class="sourceLineNo">2156</span>  @Override<a name="line.2156"></a>
-<span class="sourceLineNo">2157</span>  public void setSocketSendBufSize(int size) { this.socketSendBufferSize = size; }<a name="line.2157"></a>
-<span class="sourceLineNo">2158</span><a name="line.2158"></a>
+<span class="sourceLineNo">2102</span>    if (scheduler instanceof ConfigurationObserver) {<a name="line.2102"></a>
+<span class="sourceLineNo">2103</span>      ((ConfigurationObserver)scheduler).onConfigurationChange(newConf);<a name="line.2103"></a>
+<span class="sourceLineNo">2104</span>    }<a name="line.2104"></a>
+<span class="sourceLineNo">2105</span>  }<a name="line.2105"></a>
+<span class="sourceLineNo">2106</span><a name="line.2106"></a>
+<span class="sourceLineNo">2107</span>  private void initReconfigurable(Configuration confToLoad) {<a name="line.2107"></a>
+<span class="sourceLineNo">2108</span>    this.allowFallbackToSimpleAuth = confToLoad.getBoolean(FALLBACK_TO_INSECURE_CLIENT_AUTH, false);<a name="line.2108"></a>
+<span class="sourceLineNo">2109</span>    if (isSecurityEnabled &amp;&amp; allowFallbackToSimpleAuth) {<a name="line.2109"></a>
+<span class="sourceLineNo">2110</span>      LOG.warn("********* WARNING! *********");<a name="line.2110"></a>
+<span class="sourceLineNo">2111</span>      LOG.warn("This server is configured to allow connections from INSECURE clients");<a name="line.2111"></a>
+<span class="sourceLineNo">2112</span>      LOG.warn("(" + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = true).");<a name="line.2112"></a>
+<span class="sourceLineNo">2113</span>      LOG.warn("While this option is enabled, client identities cannot be secured, and user");<a name="line.2113"></a>
+<span class="sourceLineNo">2114</span>      LOG.warn("impersonation is possible!");<a name="line.2114"></a>
+<span class="sourceLineNo">2115</span>      LOG.warn("For secure operation, please disable SIMPLE authentication as soon as possible,");<a name="line.2115"></a>
+<span class="sourceLineNo">2116</span>      LOG.warn("by setting " + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = false in hbase-site.xml");<a name="line.2116"></a>
+<span class="sourceLineNo">2117</span>      LOG.warn("****************************");<a name="line.2117"></a>
+<span class="sourceLineNo">2118</span>    }<a name="line.2118"></a>
+<span class="sourceLineNo">2119</span>  }<a name="line.2119"></a>
+<span class="sourceLineNo">2120</span><a name="line.2120"></a>
+<span class="sourceLineNo">2121</span>  /**<a name="line.2121"></a>
+<span class="sourceLineNo">2122</span>   * Subclasses of HBaseServer can override this to provide their own<a name="line.2122"></a>
+<span class="sourceLineNo">2123</span>   * Connection implementations.<a name="line.2123"></a>
+<span class="sourceLineNo">2124</span>   */<a name="line.2124"></a>
+<span class="sourceLineNo">2125</span>  protected Connection getConnection(SocketChannel channel, long time) {<a name="line.2125"></a>
+<span class="sourceLineNo">2126</span>    return new Connection(channel, time);<a name="line.2126"></a>
+<span class="sourceLineNo">2127</span>  }<a name="line.2127"></a>
+<span class="sourceLineNo">2128</span><a name="line.2128"></a>
+<span class="sourceLineNo">2129</span>  /**<a name="line.2129"></a>
+<span class="sourceLineNo">2130</span>   * Setup response for the RPC Call.<a name="line.2130"></a>
+<span class="sourceLineNo">2131</span>   *<a name="line.2131"></a>
+<span class="sourceLineNo">2132</span>   * @param response buffer to serialize the response into<a name="line.2132"></a>
+<span class="sourceLineNo">2133</span>   * @param call {@link Call} to which we are setting up the response<a name="line.2133"></a>
+<span class="sourceLineNo">2134</span>   * @param error error message, if the call failed<a name="line.2134"></a>
+<span class="sourceLineNo">2135</span>   * @throws IOException<a name="line.2135"></a>
+<span class="sourceLineNo">2136</span>   */<a name="line.2136"></a>
+<span class="sourceLineNo">2137</span>  private void setupResponse(ByteArrayOutputStream response, Call call, Throwable t, String error)<a name="line.2137"></a>
+<span class="sourceLineNo">2138</span>  throws IOException {<a name="line.2138"></a>
+<span class="sourceLineNo">2139</span>    if (response != null) response.reset();<a name="line.2139"></a>
+<span class="sourceLineNo">2140</span>    call.setResponse(null, null, t, error);<a name="line.2140"></a>
+<span class="sourceLineNo">2141</span>  }<a name="line.2141"></a>
+<span class="sourceLineNo">2142</span><a name="line.2142"></a>
+<span class="sourceLineNo">2143</span>  protected void closeConnection(Connection connection) {<a name="line.2143"></a>
+<span class="sourceLineNo">2144</span>    synchronized (connectionList) {<a name="line.2144"></a>
+<span class="sourceLineNo">2145</span>      if (connectionList.remove(connection)) {<a name="line.2145"></a>
+<span class="sourceLineNo">2146</span>        numConnections--;<a name="line.2146"></a>
+<span class="sourceLineNo">2147</span>      }<a name="line.2147"></a>
+<span class="sourceLineNo">2148</span>    }<a name="line.2148"></a>
+<span class="sourceLineNo">2149</span>    connection.close();<a name="line.2149"></a>
+<span class="sourceLineNo">2150</span>  }<a name="line.2150"></a>
+<span class="sourceLineNo">2151</span><a name="line.2151"></a>
+<span class="sourceLineNo">2152</span>  Configuration getConf() {<a name="line.2152"></a>
+<span class="sourceLineNo">2153</span>    return conf;<a name="line.2153"></a>
+<span class="sourceLineNo">2154</span>  }<a name="line.2154"></a>
+<span class="sourceLineNo">2155</span><a name="line.2155"></a>
+<span class="sourceLineNo">2156</span>  /** Sets the socket buffer size used for responding to RPCs.<a name="line.2156"></a>
+<span class="sourceLineNo">2157</span>   * @param size send size<a name="line.2157"></a>
+<span class="sourceLineNo">2158</span>   */<a name="line.2158"></a>
 <span class="sourceLineNo">2159</span>  @Override<a name="line.2159"></a>
-<span class="sourceLineNo">2160</span>  public boolean isStarted() {<a name="line.2160"></a>
-<span class="sourceLineNo">2161</span>    return this.started;<a name="line.2161"></a>
-<span class="sourceLineNo">2162</span>  }<a name="line.2162"></a>
-<span class="sourceLineNo">2163</span><a name="line.2163"></a>
-<span class="sourceLineNo">2164</span>  /** Starts the service.  Must be called before any calls will be handled. */<a name="line.2164"></a>
-<span class="sourceLineNo">2165</span>  @Override<a name="line.2165"></a>
-<span class="sourceLineNo">2166</span>  public synchronized void start() {<a name="line.2166"></a>
-<span class="sourceLineNo">2167</span>    if (started) return;<a name="line.2167"></a>
-<span class="sourceLineNo">2168</span>    authTokenSecretMgr = createSecretManager();<a name="line.2168"></a>
-<span class="sourceLineNo">2169</span>    if (authTokenSecretMgr != null) {<a name="line.2169"></a>
-<span class="sourceLineNo">2170</span>      setSecretManager(authTokenSecretMgr);<a name="line.2170"></a>
-<span class="sourceLineNo">2171</span>      authTokenSecretMgr.start();<a name="line.2171"></a>
-<span class="sourceLineNo">2172</span>    }<a name="line.2172"></a>
-<span class="sourceLineNo">2173</span>    this.authManager = new ServiceAuthorizationManager();<a name="line.2173"></a>
-<span class="sourceLineNo">2174</span>    HBasePolicyProvider.init(conf, authManager);<a name="line.2174"></a>
-<span class="sourceLineNo">2175</span>    responder.start();<a name="line.2175"></a>
-<span class="sourceLineNo">2176</span>    listener.start();<a name="line.2176"></a>
-<span class="sourceLineNo">2177</span>    scheduler.start();<a name="line.2177"></a>
-<span class="sourceLineNo">2178</span>    started = true;<a name="line.2178"></a>
-<span class="sourceLineNo">2179</span>  }<a name="line.2179"></a>
-<span class="sourceLineNo">2180</span><a name="line.2180"></a>
-<span class="sourceLineNo">2181</span>  @Override<a name="line.2181"></a>
-<span class="sourceLineNo">2182</span>  public synchronized void refreshAuthManager(PolicyProvider pp) {<a name="line.2182"></a>
-<span class="sourceLineNo">2183</span>    // Ignore warnings that this should be accessed in a static way instead of via an instance;<a name="line.2183"></a>
-<span class="sourceLineNo">2184</span>    // it'll break if you go via static route.<a name="line.2184"></a>
-<span class="sourceLineNo">2185</span>    this.authManager.refresh(this.conf, pp);<a name="line.2185"></a>
-<span class="sourceLineNo">2186</span>  }<a name="line.2186"></a>
-<span class="sourceLineNo">2187</span><a name="line.2187"></a>
-<span class="sourceLineNo">2188</span>  private AuthenticationTokenSecretManager createSecretManager() {<a name="line.2188"></a>
-<span class="sourceLineNo">2189</span>    if (!isSecurityEnabled) return null;<a name="line.2189"></a>
-<span class="sourceLineNo">2190</span>    if (server == null) return null;<a name="line.2190"></a>
-<span class="sourceLineNo">2191</span>    Configuration conf = server.getConfiguration();<a name="line.2191"></a>
-<span class="sourceLineNo">2192</span>    long keyUpdateInterval =<a name="line.2192"></a>
-<span class="sourceLineNo">2193</span>        conf.getLong("hbase.auth.key.update.interval", 24*60*60*1000);<a name="line.2193"></a>
-<span class="sourceLineNo">2194</span>    long maxAge =<a name="line.2194"></a>
-<span class="sourceLineNo">2195</span>        conf.getLong("hbase.auth.token.max.lifetime", 7*24*60*60*1000);<a name="line.2195"></a>
-<span class="sourceLineNo">2196</span>    return new AuthenticationTokenSecretManager(conf, server.getZooKeeper(),<a name="line.2196"></a>
-<span class="sourceLineNo">2197</span>        server.getServerName().toString(), keyUpdateInterval, maxAge);<a name="line.2197"></a>
-<span class="sourceLineNo">2198</span>  }<a name="line.2198"></a>
-<span class="sourceLineNo">2199</span><a name="line.2199"></a>
-<span class="sourceLineNo">2200</span>  public SecretManager&lt;? extends TokenIdentifier&gt; getSecretManager() {<a name="line.2200"></a>
-<span class="sourceLineNo">2201</span>    return this.secretManager;<a name="line.2201"></a>
-<span class="sourceLineNo">2202</span>  }<a name="line.2202"></a>
-<span class="sourceLineNo">2203</span><a name="line.2203"></a>
-<span class="sourceLineNo">2204</span>  @SuppressWarnings("unchecked")<a name="line.2204"></a>
-<span class="sourceLineNo">2205</span>  public void setSecretManager(SecretManager&lt;? extends TokenIdentifier&gt; secretManager) {<a name="line.2205"></a>
-<span class="sourceLineNo">2206</span>    this.secretManager = (SecretManager&lt;TokenIdentifier&gt;) secretManager;<a name="line.2206"></a>
-<span class="sourceLineNo">2207</span>  }<a name="line.2207"></a>
-<span class="sourceLineNo">2208</span><a name="line.2208"></a>
-<span class="sourceLineNo">2209</span>  /**<a name="line.2209"></a>
-<span class="sourceLineNo">2210</span>   * This is a server side method, which is invoked over RPC. On success<a name="line.2210"></a>
-<span class="sourceLineNo">2211</span>   * the return response has protobuf response payload. On failure, the<a name="line.2211"></a>
-<span class="sourceLineNo">2212</span>   * exception name and the stack trace are returned in the protobuf response.<a name="line.2212"></a>
-<span class="sourceLineNo">2213</span>   */<a name="line.2213"></a>
-<span class="sourceLineNo">2214</span>  @Override<a name="line.2214"></a>
-<span class="sourceLineNo">2215</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,<a name="line.2215"></a>
-<span class="sourceLineNo">2216</span>      Message param, CellScanner cellScanner, long receiveTime, MonitoredRPCHandler status)<a name="line.2216"></a>
-<span class="sourceLineNo">2217</span>  throws IOException {<a name="line.2217"></a>
-<span class="sourceLineNo">2218</span>    try {<a name="line.2218"></a>
-<span class="sourceLineNo">2219</span>      status.setRPC(md.getName(), new Object[]{param}, receiveTime);<a name="line.2219"></a>
-<span class="sourceLineNo">2220</span>      // TODO: Review after we add in encoded data blocks.<a name="line.2220"></a>
-<span class="sourceLineNo">2221</span>      status.setRPCPacket(param);<a name="line.2221"></a>
-<span class="sourceLineNo">2222</span>      status.resume("Servicing call");<a name="line.2222"></a>
-<span class="sourceLineNo">2223</span>      //get an instance of the method arg type<a name="line.2223"></a>
-<span class="sourceLineNo">2224</span>      long startTime = System.currentTimeMillis();<a name="line.2224"></a>
-<span class="sourceLineNo">2225</span>      PayloadCarryingRpcController controller = new PayloadCarryingRpcController(cellScanner);<a name="line.2225"></a>
-<span class="sourceLineNo">2226</span>      Message result = service.callBlockingMethod(md, controller, param);<a name="line.2226"></a>
-<span class="sourceLineNo">2227</span>      long endTime = System.currentTimeMillis();<a name="line.2227"></a>
-<span class="sourceLineNo">2228</span>      int processingTime = (int) (endTime - startTime);<a name="line.2228"></a>
-<span class="sourceLineNo">2229</span>      int qTime = (int) (startTime - receiveTime);<a name="line.2229"></a>
-<span class="sourceLineNo">2230</span>      int totalTime = (int) (endTime - receiveTime);<a name="line.2230"></a>
-<span class="sourceLineNo">2231</span>      if (LOG.isTraceEnabled()) {<a name="line.2231"></a>
-<span class="sourceLineNo">2232</span>        LOG.trace(CurCall.get().toString() +<a name="line.2232"></a>
-<span class="sourceLineNo">2233</span>            ", response " + TextFormat.shortDebugString(result) +<a name="line.2233"></a>
-<span class="sourceLineNo">2234</span>            " queueTime: " + qTime +<a name="line.2234"></a>
-<span class="sourceLineNo">2235</span>            " processingTime: " + processingTime +<a name="line.2235"></a>
-<span class="sourceLineNo">2236</span>            " totalTime: " + totalTime);<a name="line.2236"></a>
-<span class="sourceLineNo">2237</span>      }<a name="line.2237"></a>
-<span class="sourceLineNo">2238</span>      long requestSize = param.getSerializedSize();<a name="line.2238"></a>
-<span class="sourceLineNo">2239</span>      long responseSize = result.getSerializedSize();<a name="line.2239"></a>
-<span class="sourceLineNo">2240</span>      metrics.dequeuedCall(qTime);<a name="line.2240"></a>
-<span class="sourceLineNo">2241</span>      metrics.processedCall(processingTime);<a name="line.2241"></a>
-<span class="sourceLineNo">2242</span>      metrics.totalCall(totalTime);<a name="line.2242"></a>
-<span class="sourceLineNo">2243</span>      metrics.receivedRequest(requestSize);<a name="line.2243"></a>
-<span class="sourceLineNo">2244</span>      metrics.sentResponse(responseSize);<a name="line.2244"></a>
-<span class="sourceLineNo">2245</span>      // log any RPC responses that are slower than the configured warn<a name="line.2245"></a>
-<span class="sourceLineNo">2246</span>      // response time or larger than configured warning size<a name="line.2246"></a>
-<span class="sourceLineNo">2247</span>      boolean tooSlow = (processingTime &gt; warnResponseTime &amp;&amp; warnResponseTime &gt; -1);<a name="line.2247"></a>
-<span class="sourceLineNo">2248</span>      boolean tooLarge = (responseSize &gt; warnResponseSize &amp;&amp; warnResponseSize &gt; -1);<a name="line.2248"></a>
-<span class="sourceLineNo">2249</span>      if (tooSlow || tooLarge) {<a name="line.2249"></a>
-<span class="sourceLineNo">2250</span>        // when tagging, we let TooLarge trump TooSmall to keep output simple<a name="line.2250"></a>
-<span class="sourceLineNo">2251</span>        // note that large responses will often also be slow.<a name="line.2251"></a>
-<span class="sourceLineNo">2252</span>        logResponse(new Object[]{param},<a name="line.2252"></a>
-<span class="sourceLineNo">2253</span>            md.getName(), md.getName() + "(" + param.getClass().getName() + ")",<a name="line.2253"></a>
-<span class="sourceLineNo">2254</span>            (tooLarge ? "TooLarge" : "TooSlow"),<a name="line.2254"></a>
-<span class="sourceLineNo">2255</span>            status.getClient(), startTime, processingTime, qTime,<a name="line.2255"></a>
-<span class="sourceLineNo">2256</span>            responseSize);<a name="line.2256"></a>
-<span class="sourceLineNo">2257</span>      }<a name="line.2257"></a>
-<span class="sourceLineNo">2258</span>      return new Pair&lt;Message, CellScanner&gt;(result, controller.cellScanner());<a name="line.2258"></a>
-<span class="sourceLineNo">2259</span>    } catch (Throwable e) {<a name="line.2259"></a>
-<span class="sourceLineNo">2260</span>      // The above callBlockingMethod will always return a SE.  Strip the SE wrapper before<a name="line.2260"></a>
-<span class="sourceLineNo">2261</span>      // putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't<a name="line.2261"></a>
-<span class="sourceLineNo">2262</span>      // need to pass it over the wire.<a name="line.2262"></a>
-<span class="sourceLineNo">2263</span>      if (e instanceof ServiceException) e = e.getCause();<a name="line.2263"></a>
-<span class="sourceLineNo">2264</span><a name="line.2264"></a>
-<span class="sourceLineNo">2265</span>      // increment the number of requests that were exceptions.<a name="line.2265"></a>
-<span class="sourceLineNo">2266</span>      metrics.exception(e);<a name="line.2266"></a>
+<span class="sourceLineNo">2160</span>  public void setSocketSendBufSize(int size) { this.socketSendBufferSize = size; }<a name="line.2160"></a>
+<span class="sourceLineNo">2161</span><a name="line.2161"></a>
+<span class="sourceLineNo">2162</span>  @Override<a name="line.2162"></a>
+<span class="sourceLineNo">2163</span>  public boolean isStarted() {<a name="line.2163"></a>
+<span class="sourceLineNo">2164</span>    return this.started;<a name="line.2164"></a>
+<span class="sourceLineNo">2165</span>  }<a name="line.2165"></a>
+<span class="sourceLineNo">2166</span><a name="line.2166"></a>
+<span class="sourceLineNo">2167</span>  /** Starts the service.  Must be called before any calls will be handled. */<a name="line.2167"></a>
+<span class="sourceLineNo">2168</span>  @Override<a name="line.2168"></a>
+<span class="sourceLineNo">2169</span>  public synchronized void start() {<a name="line.2169"></a>
+<span class="sourceLineNo">2170</span>    if (started) return;<a name="line.2170"></a>
+<span class="sourceLineNo">2171</span>    authTokenSecretMgr = createSecretManager();<a name="line.2171"></a>
+<span class="sourceLineNo">2172</span>    if (authTokenSecretMgr != null) {<a name="line.2172"></a>
+<span class="sourceLineNo">2173</span>      setSecretManager(authTokenSecretMgr);<a name="line.2173"></a>
+<span class="sourceLineNo">2174</span>      authTokenSecretMgr.start();<a name="line.2174"></a>
+<span class="sourceLineNo">2175</span>    }<a name="line.2175"></a>
+<span class="sourceLineNo">2176</span>    this.authManager = new ServiceAuthorizationManager();<a name="line.2176"></a>
+<span class="sourceLineNo">2177</span>    HBasePolicyProvider.init(conf, authManager);<a name="line.2177"></a>
+<span class="sourceLineNo">2178</span>    responder.start();<a name="line.2178"></a>
+<span class="sourceLineNo">2179</span>    listener.start();<a name="line.2179"></a>
+<span class="sourceLineNo">2180</span>    scheduler.start();<a name="line.2180"></a>
+<span class="sourceLineNo">2181</span>    started = true;<a name="line.2181"></a>
+<span class="sourceLineNo">2182</span>  }<a name="line.2182"></a>
+<span class="sourceLineNo">2183</span><a name="line.2183"></a>
+<span class="sourceLineNo">2184</span>  @Override<a name="line.2184"></a>
+<span class="sourceLineNo">2185</span>  public synchronized void refreshAuthManager(PolicyProvider pp) {<a name="line.2185"></a>
+<span class="sourceLineNo">2186</span>    // Ignore warnings that this should be accessed in a static way instead of via an instance;<a name="line.2186"></a>
+<span class="sourceLineNo">2187</span>    // it'll break if you go via static route.<a name="line.2187"></a>
+<span class="sourceLineNo">2188</span>    this.authManager.refresh(this.conf, pp);<a name="line.2188"></a>
+<span class="sourceLineNo">2189</span>  }<a name="line.2189"></a>
+<span class="sourceLineNo">2190</span><a name="line.2190"></a>
+<span class="sourceLineNo">2191</span>  private AuthenticationTokenSecretManager createSecretManager() {<a name="line.2191"></a>
+<span class="sourceLineNo">2192</span>    if (!isSecurityEnabled) return null;<a name="line.2192"></a>
+<span class="sourceLineNo">2193</span>    if (server == null) return null;<a name="line.2193"></a>
+<span class="sourceLineNo">2194</span>    Configuration conf = server.getConfiguration();<a name="line.2194"></a>
+<span class="sourceLineNo">2195</span>    long keyUpdateInterval =<a name="line.2195"></a>
+<span class="sourceLineNo">2196</span>        conf.getLong("hbase.auth.key.update.interval", 24*60*60*1000);<a name="line.2196"></a>
+<span class="sourceLineNo">2197</span>    long maxAge =<a name="line.2197"></a>
+<span class="sourceLineNo">2198</span>        conf.getLong("hbase.auth.token.max.lifetime", 7*24*60*60*1000);<a name="line.2198"></a>
+<span class="sourceLineNo">2199</span>    return new AuthenticationTokenSecretManager(conf, server.getZooKeeper(),<a name="line.2199"></a>
+<span class="sourceLineNo">2200</span>        server.getServerName().toString(), keyUpdateInterval, maxAge);<a name="line.2200"></a>
+<span class="sourceLineNo">2201</span>  }<a name="line.2201"></a>
+<span class="sourceLineNo">2202</span><a name="line.2202"></a>
+<span class="sourceLineNo">2203</span>  public SecretManager&lt;? extends TokenIdentifier&gt; getSecretManager() {<a name="line.2203"></a>
+<span class="sourceLineNo">2204</span>    return this.secretManager;<a name="line.2204"></a>
+<span class="sourceLineNo">2205</span>  }<a name="line.2205"></a>
+<span class="sourceLineNo">2206</span><a name="line.2206"></a>
+<span class="sourceLineNo">2207</span>  @SuppressWarnings("unchecked")<a name="line.2207"></a>
+<span class="sourceLineNo">2208</span>  public void setSecretManager(SecretManager&lt;? extends TokenIdentifier&gt; secretManager) {<a name="line.2208"></a>
+<span class="sourceLineNo">2209</span>    this.secretManager = (SecretManager&lt;TokenIdentifier&gt;) secretManager;<a name="line.2209"></a>
+<span class="sourceLineNo">2210</span>  }<a name="line.2210"></a>
+<span class="sourceLineNo">2211</span><a name="line.2211"></a>
+<span class="sourceLineNo">2212</span>  /**<a name="line.2212"></a>
+<span class="sourceLineNo">2213</span>   * This is a server side method, which is invoked over RPC. On success<a name="line.2213"></a>
+<span class="sourceLineNo">2214</span>   * the return response has protobuf response payload. On failure, the<a name="line.2214"></a>
+<span class="sourceLineNo">2215</span>   * exception name and the stack trace are returned in the protobuf response.<a name="line.2215"></a>
+<span class="sourceLineNo">2216</span>   */<a name="line.2216"></a>
+<span class="sourceLineNo">2217</span>  @Override<a name="line.2217"></a>
+<span class="sourceLineNo">2218</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,<a name="line.2218"></a>
+<span class="sourceLineNo">2219</span>      Message param, CellScanner cellScanner, long receiveTime, MonitoredRPCHandler status)<a name="line.2219"></a>
+<span class="sourceLineNo">2220</span>  throws IOException {<a name="line.2220"></a>
+<span class="sourceLineNo">2221</span>    try {<a name="line.2221"></a>
+<span class="sourceLineNo">2222</span>      status.setRPC(md.getName(), new Object[]{param}, receiveTime);<a name="line.2222"></a>
+<span class="sourceLineNo">2223</span>      // TODO: Review after we add in encoded data blocks.<a name="line.2223"></a>
+<span class="sourceLineNo">2224</span>      status.setRPCPacket(param);<a name="line.2224"></a>
+<span class="sourceLineNo">2225</span>      status.resume("Servicing call");<a name="line.2225"></a>
+<span class="sourceLineNo">2226</span>      //get an instance of the method arg type<a name="line.2226"></a>
+<span class="sourceLineNo">2227</span>      long startTime = System.currentTimeMillis();<a name="line.2227"></a>
+<span class="sourceLineNo">2228</span>      PayloadCarryingRpcController controller = new PayloadCarryingRpcController(cellScanner);<a name="line.2228"></a>
+<span class="sourceLineNo">2229</span>      Message result = service.callBlockingMethod(md, controller, param);<a name="line.2229"></a>
+<span class="sourceLineNo">2230</span>      long endTime = System.currentTimeMillis();<a name="line.2230"></a>
+<span class="sourceLineNo">2231</span>      int processingTime = (int) (endTime - startTime);<a name="line.2231"></a>
+<span class="sourceLineNo">2232</span>      int qTime = (int) (startTime - receiveTime);<a name="line.2232"></a>
+<span class="sourceLineNo">2233</span>      int totalTime = (int) (endTime - receiveTime);<a name="line.2233"></a>
+<span class="sourceLineNo">2234</span>      if (LOG.isTraceEnabled()) {<a name="line.2234"></a>
+<span class="sourceLineNo">2235</span>        LOG.trace(CurCall.get().toString() +<a name="line.2235"></a>
+<span class="sourceLineNo">2236</span>            ", response " + TextFormat.shortDebugString(result) +<a name="line.2236"></a>
+<span class="sourceLineNo">2237</span>            " queueTime: " + qTime +<a name="line.2237"></a>
+<span class="sourceLineNo">2238</span>            " processingTime: " + processingTime +<a name="line.2238"></a>
+<span class="sourceLineNo">2239</span>            " totalTime: " + totalTime);<a name="line.2239"></a>
+<span class="sourceLineNo">2240</span>      }<a name="line.2240"></a>
+<span class="sourceLineNo">2241</span>      long requestSize = param.getSerializedSize();<a name="line.2241"></a>
+<span class="sourceLineNo">2242</span>      long responseSize = result.getSerializedSize();<a name="line.2242"></a>
+<span class="sourceLineNo">2243</span>      metrics.dequeuedCall(qTime);<a name="line.2243"></a>
+<span class="sourceLineNo">2244</span>      metrics.processedCall(processingTime);<a name="line.2244"></a>
+<span class="sourceLineNo">2245</span>      metrics.totalCall(totalTime);<a name="line.2245"></a>
+<span class="sourceLineNo">2246</span>      metrics.receivedRequest(requestSize);<a name="line.2246"></a>
+<span class="sourceLineNo">2247</span>      metrics.sentResponse(responseSize);<a name="line.2247"></a>
+<span class="sourceLineNo">2248</span>      // log any RPC responses that are slower than the configured warn<a name="line.2248"></a>
+<span class="sourceLineNo">2249</span>      // response time or larger than configured warning size<a name="line.2249"></a>
+<span class="sourceLineNo">2250</span>      boolean tooSlow = (processingTime &gt; warnResponseTime &amp;&amp; warnResponseTime &gt; -1);<a name="line.2250"></a>
+<span class="sourceLineNo">2251</span>      boolean tooLarge = (responseSize &gt; warnResponseSize &amp;&amp; warnResponseSize &gt; -1);<a name="line.2251"></a>
+<span class="sourceLineNo">2252</span>      if (tooSlow || tooLarge) {<a name="line.2252"></a>
+<span class="sourceLineNo">2253</span>        // when tagging, we let TooLarge trump TooSmall to keep output simple<a name="line.2253"></a>
+<span class="sourceLineNo">2254</span>        // note that large responses will often also be slow.<a name="line.2254"></a>
+<span class="sourceLineNo">2255</span>        logResponse(new Object[]{param},<a name="line.2255"></a>
+<span class="sourceLineNo">2256</span>            md.getName(), md.getName() + "(" + param.getClass().getName() + ")",<a name="line.2256"></a>
+<span class="sourceLineNo">2257</span>            (tooLarge ? "TooLarge" : "TooSlow"),<a name="line.2257"></a>
+<span class="sourceLineNo">2258</span>            status.getClient(), startTime, processingTime, qTime,<a name="line.2258"></a>
+<span class="sourceLineNo">2259</span>            responseSize);<a name="line.2259"></a>
+<span class="sourceLineNo">2260</span>      }<a name="line.2260"></a>
+<span class="sourceLineNo">2261</span>      return new Pair&lt;Message, CellScanner&gt;(result, controller.cellScanner());<a name="line.2261"></a>
+<span class="sourceLineNo">2262</span>    } catch (Throwable e) {<a name="line.2262"></a>
+<span class="sourceLineNo">2263</span>      // The above callBlockingMethod will always return a SE.  Strip the SE wrapper before<a name="line.2263"></a>
+<span class="sourceLineNo">2264</span>      // putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't<a name="line.2264"></a>
+<span class="sourceLineNo">2265</span>      // need to pass it over the wire.<a name="line.2265"></a>
+<span class="sourceLineNo">2266</span>      if (e instanceof ServiceException) e = e.getCause();<a name="line.2266"></a>
 <span class="sourceLineNo">2267</span><a name="line.2267"></a>
-<span class="sourceLineNo">2268</span>      if (e instanceof LinkageError) throw new DoNotRetryIOException(e);<a name="line.2268"></a>
-<span class="sourceLineNo">2269</span>      if (e instanceof IOException) throw (IOException)e;<a name="line.2269"></a>
-<span class="sourceLineNo">2270</span>      LOG.error("Unexpected throwable object ", e);<a name="line.2270"></a>
-<span class="sourceLineNo">2271</span>      throw new IOException(e.getMessage(), e);<a name="line.2271"></a>
-<span class="sourceLineNo">2272</span>    }<a name="line.2272"></a>
-<span class="sourceLineNo">2273</span>  }<a name="line.2273"></a>
-<span class="sourceLineNo">2274</span><a name="line.2274"></a>
-<span class="sourceLineNo">2275</span>  /**<a name="line.2275"></a>
-<span class="sourceLineNo">2276</span>   * Logs an RPC response to the LOG file, producing valid JSON objects for<a name="line.2276"></a>
-<span class="sourceLineNo">2277</span>   * client Operations.<a name="line.2277"></a>
-<span class="sourceLineNo">2278</span>   * @param params The parameters received in the call.<a name="line.2278"></a>
-<span class="sourceLineNo">2279</span>   * @param methodName The name of the method invoked<a name="line.2279"></a>
-<span class="sourceLineNo">2280</span>   * @param call The string representation of the call<a name="line.2280"></a>
-<span class="sourceLineNo">2281</span>   * @param tag  The tag that will be used to indicate this event in the log.<a name="line.2281"></a>
-<span class="sourceLineNo">2282</span>   * @param clientAddress   The address of the client who made this call.<a name="line.2282"></a>
-<span class="sourceLineNo">2283</span>   * @param startTime       The time that the call was initiated, in ms.<a name="line.2283"></a>
-<span class="sourceLineNo">2284</span>   * @param processingTime  The duration that the call took to run, in ms.<a name="line.2284"></a>
-<span class="sourceLineNo">2285</span>   * @param qTime           The duration that the call spent on the queue<a name="line.2285"></a>
-<span class="sourceLineNo">2286</span>   *                        prior to being initiated, in ms.<a name="line.2286"></a>
-<span class="sourceLineNo">2287</span>   * @param responseSize    The size in bytes of the response buffer.<a name="line.2287"></a>
-<span class="sourceLineNo">2288</span>   */<a name="line.2288"></a>
-<span class="sourceLineNo">2289</span>  void logResponse(Object[] params, String methodName, String call, String tag,<a name="line.2289"></a>
-<span class="sourceLineNo">2290</span>      String clientAddress, long startTime, int processingTime, int qTime,<a name="line.2290"></a>
-<span class="sourceLineNo">2291</span>      long responseSize)<a name="line.2291"></a>
-<span class="sourceLineNo">2292</span>          throws IOException {<a name="line.2292"></a>
-<span class="sourceLineNo">2293</span>    // base information that is reported regardless of type of call<a name="line.2293"></a>
-<span class="sourceLineNo">2294</span>    Map&lt;String, Object&gt; responseInfo = new HashMap&lt;String, Object&gt;();<a name="line.2294"></a>
-<span class="sourceLineNo">2295</span>    responseInfo.put("starttimems", startTime);<a name="line.2295"></a>
-<span class="sourceLineNo">2296</span>    responseInfo.put("processingtimems", processingTime);<a name="line.2296"></a>
-<span class="sourceLineNo">2297</span>    responseInfo.put("queuetimems", qTime);<a name="line.2297"></a>
-<span class="sourceLineNo">2298</span>    responseInfo.put("responsesize", responseSize);<a name="line.2298"></a>
-<span class="sourceLineNo">2299</span>    responseInfo.put("client", clientAddress);<a name="line.2299"></a>
-<span class="sourceLineNo">2300</span>    responseInfo.put("class", server == null? "": server.getClass().getSimpleName());<a name="line.2300"></a>
-<span class="sourceLineNo">2301</span>    responseInfo.put("method", methodName);<a name="line.2301"></a>
-<span class="sourceLineNo">2302</span>    if (params.length == 2 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2302"></a>
-<span class="sourceLineNo">2303</span>        params[0] instanceof byte[] &amp;&amp;<a name="line.2303"></a>
-<span class="sourceLineNo">2304</span>        params[1] instanceof Operation) {<a name="line.2304"></a>
-<span class="sourceLineNo">2305</span>      // if the slow process is a query, we want to log its table as well<a name="line.2305"></a>
-<span class="sourceLineNo">2306</span>      // as its own fingerprint<a name="line.2306"></a>
-<span class="sourceLineNo">2307</span>      TableName tableName = TableName.valueOf(<a name="line.2307"></a>
-<span class="sourceLineNo">2308</span>          HRegionInfo.parseRegionName((byte[]) params[0])[0]);<a name="line.2308"></a>
-<span class="sourceLineNo">2309</span>      responseInfo.put("table", tableName.getNameAsString());<a name="line.2309"></a>
-<span class="sourceLineNo">2310</span>      // annotate the response map with operation details<a name="line.2310"></a>
-<span class="sourceLineNo">2311</span>      responseInfo.putAll(((Operation) params[1]).toMap());<a name="line.2311"></a>
-<span class="sourceLineNo">2312</span>      // report to the log file<a name="line.2312"></a>
-<span class="sourceLineNo">2313</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2313"></a>
-<span class="sourceLineNo">2314</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2314"></a>
-<span class="sourceLineNo">2315</span>    } else if (params.length == 1 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2315"></a>
-<span class="sourceLineNo">2316</span>        params[0] instanceof Operation) {<a name="line.2316"></a>
-<span class="sourceLineNo">2317</span>      // annotate the response map with operation details<a name="line.2317"></a>
-<span class="sourceLineNo">2318</span>      responseInfo.putAll(((Operation) params[0]).toMap());<a name="line.2318"></a>
-<span class="sourceLineNo">2319</span>      // report to the log file<a name="line.2319"></a>
-<span class="sourceLineNo">2320</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2320"></a>
-<span class="sourceLineNo">2321</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2321"></a>
-<span class="sourceLineNo">2322</span>    } else {<a name="line.2322"></a>
-<span class="sourceLineNo">2323</span>      // can't get JSON details, so just report call.toString() along with<a name="line.2323"></a>
-<span class="sourceLineNo">2324</span>      // a more generic tag.<a name="line.2324"></a>
-<span class="sourceLineNo">2325</span>      responseInfo.put("call", call);<a name="line.2325"></a>
-<span class="sourceLineNo">2326</span>      LOG.warn("(response" + tag + "): " + MAPPER.writeValueAsString(responseInfo));<a name="line.2326"></a>
-<span class="sourceLineNo">2327</span>    }<a name="line.2327"></a>
-<span class="sourceLineNo">2328</span>  }<a name="line.2328"></a>
-<span class="sourceLineNo">2329</span><a name="line.2329"></a>
-<span class="sourceLineNo">2330</span>  /** Stops the service.  No new calls will be handled after this is called. */<a name="line.2330"></a>
-<span class="sourceLineNo">2331</span>  @Override<a name="line.2331"></a>
-<span class="sourceLineNo">2332</span>  public synchronized void stop() {<a name="line.2332"></a>
-<span class="sourceLineNo">2333</span>    LOG.info("Stopping server on " + port);<a name="line.2333"></a>
-<span class="sourceLineNo">2334</span>    running = false;<a name="line.2334"></a>
-<span class="sourceLineNo">2335</span>    if (authTokenSecretMgr != null) {<a name="line.2335"></a>
-<span class="sourceLineNo">2336</span>      authTokenSecretMgr.stop();<a name="line.2336"></a>
-<span class="sourceLineNo">2337</span>      authTokenSecretMgr = null;<a name="line.2337"></a>
-<span class="sourceLineNo">2338</span>    }<a name="line.2338"></a>
-<span class="sourceLineNo">2339</span>    listener.interrupt();<a name="line.2339"></a>
-<span class="sourceLineNo">2340</span>    listener.doStop();<a name="line.2340"></a>
-<span class="sourceLineNo">2341</span>    responder.interrupt();<a name="line.2341"></a>
-<span class="sourceLineNo">2342</span>    scheduler.stop();<a name="line.2342"></a>
-<span class="sourceLineNo">2343</span>    notifyAll();<a name="line.2343"></a>
-<span class="sourceLineNo">2344</span>  }<a name="line.2344"></a>
-<span class="sourceLineNo">2345</span><a name="line.2345"></a>
-<span class="sourceLineNo">2346</span>  /** Wait for the server to be stopped.<a name="line.2346"></a>
-<span class="sourceLineNo">2347</span>   * Does not wait for all subthreads to finish.<a name="line.2347"></a>
-<span class="sourceLineNo">2348</span>   *  See {@link #stop()}.<a name="line.2348"></a>
-<span class="sourceLineNo">2349</span>   * @throws InterruptedException e<a name="line.2349"></a>
-<span class="sourceLineNo">2350</span>   */<a name="line.2350"></a>
-<span class="sourceLineNo">2351</span>  @Override<a name="line.2351"></a>
-<span class="sourceLineNo">2352</span>  public synchronized void join() throws InterruptedException {<a name="line.2352"></a>
-<span class="sourceLineNo">2353</span>    while (running) {<a name="line.2353"></a>
-<span class="sourceLineNo">2354</span>      wait();<a name="line.2354"></a>
-<span class="sourceLineNo">2355</span>    }<a name="line.2355"></a>
-<span class="sourceLineNo">2356</span>  }<a name="line.2356"></a>
-<span class="sourceLineNo">2357</span><a name="line.2357"></a>
-<span class="sourceLineNo">2358</span>  /**<a name="line.2358"></a>
-<span class="sourceLineNo">2359</span>   * Return the socket (ip+port) on which the RPC server is listening to. May return null if<a name="line.2359"></a>
-<span class="sourceLineNo">2360</span>   * the listener channel is closed.<a name="line.2360"></a>
-<span class="sourceLineNo">2361</span>   * @return the socket (ip+port) on which the RPC server is listening to, or null if this<a name="line.2361"></a>
-<span class="sourceLineNo">2362</span>   * information cannot be determined<a name="line.2362"></a>
-<span class="sourceLineNo">2363</span>   */<a name="line.2363"></a>
-<span class="sourceLineNo">2364</span>  @Override<a name="line.2364"></a>
-<span class="sourceLineNo">2365</span>  public synchronized InetSocketAddress getListenerAddress() {<a name="line.2365"></a>
-<span class="sourceLineNo">2366</span>    if (listener == null) {<a name="line.2366"></a>
-<span class="sourceLineNo">2367</span>      return null;<a name="line.2367"></a>
-<span class="sourceLineNo">2368</span>    }<a name="line.2368"></a>
-<span class="sourceLineNo">2369</span>    return listener.getAddress();<a name="line.2369"></a>
-<span class="sourceLineNo">2370</span>  }<a name="line.2370"></a>
-<span class="sourceLineNo">2371</span><a name="line.2371"></a>
-<span class="sourceLineNo">2372</span>  /**<a name="line.2372"></a>
-<span class="sourceLineNo">2373</span>   * Set the handler for calling out of RPC for error conditions.<a name="line.2373"></a>
-<span class="sourceLineNo">2374</span>   * @param handler the handler implementation<a name="line.2374"></a>
-<span class="sourceLineNo">2375</span>   */<a name="line.2375"></a>
-<span class="sourceLineNo">2376</span>  @Override<a name="line.2376"></a>
-<span class="sourceLineNo">2377</span>  public void setErrorHandler(HBaseRPCErrorHandler handler) {<a name="line.2377"></a>
-<span class="sourceLineNo">2378</span>    this.errorHandler = handler;<a name="line.2378"></a>
-<span class="sourceLineNo">2379</span>  }<a name="line.2379"></a>
-<span class="sourceLineNo">2380</span><a name="line.2380"></a>
-<span class="sourceLineNo">2381</span>  @Override<a name="line.2381"></a>
-<span class="sourceLineNo">2382</span>  public HBaseRPCErrorHandler getErrorHandler() {<a name="line.2382"></a>
-<span class="sourceLineNo">2383</span>    return this.errorHandler;<a name="line.2383"></a>
-<span class="sourceLineNo">2384</span>  }<a name="line.2384"></a>
-<span class="sourceLineNo">2385</span><a name="line.2385"></a>
-<span class="sourceLineNo">2386</span>  /**<a name="line.2386"></a>
-<span class="sourceLineNo">2387</span>   * Returns the metrics instance for reporting RPC call statistics<a name="line.2387"></a>
-<span class="sourceLineNo">2388</span>   */<a name="line.2388"></a>
-<span class="sourceLineNo">2389</span>  @Override<a name="line.2389"></a>
-<span class="sourceLineNo">2390</span>  public MetricsHBaseServer getMetrics() {<a name="line.2390"></a>
-<span class="sourceLineNo">2391</span>    return metrics;<a name="line.2391"></a>
-<span class="sourceLineNo">2392</span>  }<a name="line.2392"></a>
-<span class="sourceLineNo">2393</span><a name="line.2393"></a>
-<span class="sourceLineNo">2394</span>  @Override<a name="line.2394"></a>
-<span class="sourceLineNo">2395</span>  public void addCallSize(final long diff) {<a name="line.2395"></a>
-<span class="sourceLineNo">2396</span>    this.callQueueSize.add(diff);<a name="line.2396"></a>
-<span class="sourceLineNo">2397</span>  }<a name="line.2397"></a>
-<span class="sourceLineNo">2398</span><a name="line.2398"></a>
-<span class="sourceLineNo">2399</span>  /**<a name="line.2399"></a>
-<span class="sourceLineNo">2400</span>   * Authorize the incoming client connection.<a name="line.2400"></a>
-<span class="sourceLineNo">2401</span>   *<a name="line.2401"></a>
-<span class="sourceLineNo">2402</span>   * @param user client user<a name="line.2402"></a>
-<span class="sourceLineNo">2403</span>   * @param connection incoming connection<a name="line.2403"></a>
-<span class="sourceLineNo">2404</span>   * @param addr InetAddress of incoming connection<a name="line.2404"></a>
-<span class="sourceLineNo">2405</span>   * @throws org.apache.hadoop.security.authorize.AuthorizationException<a name="line.2405"></a>
-<span class="sourceLineNo">2406</span>   *         when the client isn't authorized to talk the protocol<a name="line.2406"></a>
-<span class="sourceLineNo">2407</span>   */<a name="line.2407"></a>
-<span class="sourceLineNo">2408</span>  public synchronized void authorize(UserGroupInformation user, ConnectionHeader connection,<a name="line.2408"></a>
-<span class="sourceLineNo">2409</span>      InetAddress addr)<a name="line.2409"></a>
-<span class="sourceLineNo">2410</span>  throws AuthorizationException {<a name="line.2410"></a>
-<span class="sourceLineNo">2411</span>    if (authorize) {<a name="line.2411"></a>
-<span class="sourceLineNo">2412</span>      Class&lt;?&gt; c = getServiceInterface(services, connection.getServiceName());<a name="line.2412"></a>
-<span class="sourceLineNo">2413</span>      this.authManager.authorize(user != null ? user : null, c, getConf(), addr);<a name="line.2413"></a>
-<span class="sourceLineNo">2414</span>    }<a name="line.2414"></a>
-<span class="sourceLineNo">2415</span>  }<a name="line.2415"></a>
-<span class="sourceLineNo">2416</span><a name="line.2416"></a>
-<span class="sourceLineNo">2417</span>  /**<a name="line.2417"></a>
-<span class="sourceLineNo">2418</span>   * When the read or write buffer size is larger than this limit, i/o will be<a name="line.2418"></a>
-<span class="sourceLineNo">2419</span>   * done in chunks of this size. Most RPC requests and responses would be<a name="line.2419"></a>
-<span class="sourceLineNo">2420</span>   * be smaller.<a name="line.2420"></a>
-<span class="sourceLineNo">2421</span>   */<a name="line.2421"></a>
-<span class="sourceLineNo">2422</span>  private static int NIO_BUFFER_LIMIT = 64 * 1024; //should not be more than 64KB.<a name="line.2422"></a>
-<span class="sourceLineNo">2423</span><a name="line.2423"></a>
-<span class="sourceLineNo">2424</span>  /**<a name="line.2424"></a>
-<span class="sourceLineNo">2425</span>   * This is a wrapper around {@link java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)}.<a name="line.2425"></a>
-<span class="sourceLineNo">2426</span>   * If the amount of data is large, it writes to channel in smaller chunks.<a name="line.2426"></a>
-<span class="sourceLineNo">2427</span>   * This is to avoid jdk from creating many direct buffers as the size of<a name="line.2427"></a>
-<span class="sourceLineNo">2428</span>   * buffer increases. This also minimizes extra copies in NIO layer<a name="line.2428"></a>
-<span class="sourceLineNo">2429</span>   * as a result of multiple write operations required to write a large<a name="line.2429"></a>
-<span class="sourceLineNo">2430</span>   * buffer.<a name="line.2430"></a>
-<span class="sourceLineNo">2431</span>   *<a name="line.2431"></a>
-<span class="sourceLineNo">2432</span>   * @param channel writable byte channel to write to<a name="line.2432"></a>
-<span class="sourceLineNo">2433</span>   * @param bufferChain Chain of buffers to write<a name="line.2433"></a>
-<span class="sourceLineNo">2434</span>   * @return number of bytes written<a name="line.2434"></a>
-<span class="sourceLineNo">2435</span>   * @throws java.io.IOException e<a name="line.2435"></a>
-<span class="sourceLineNo">2436</span>   * @see java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)<a name="line.2436"></a>
-<span class="sourceLineNo">2437</span>   */<a name="line.2437"></a>
-<span class="sourceLineNo">2438</span>  protected long channelWrite(GatheringByteChannel channel, BufferChain bufferChain)<a name="line.2438"></a>
-<span class="sourceLineNo">2439</span>  throws IOException {<a name="line.2439"></a>
-<span class="sourceLineNo">2440</span>    long count =  bufferChain.write(channel, NIO_BUFFER_LIMIT);<a name="line.2440"></a>
-<span class="sourceLineNo">2441</span>    if (count &gt; 0) this.metrics.sentBytes(count);<a name="line.2441"></a>
-<span class="sourceLineNo">2442</span>    return count;<a name="line.2442"></a>
-<span class="sourceLineNo">2443</span>  }<a name="line.2443"></a>
-<span class="sourceLineNo">2444</span><a name="line.2444"></a>
-<span class="sourceLineNo">2445</span>  /**<a name="line.2445"></a>
-<span class="sourceLineNo">2446</span>   * This is a wrapper around {@link java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer)}.<a name="line.2446"></a>
-<span class="sourceLineNo">2447</span>   * If the amount of data is large, it writes to channel in smaller chunks.<a name="line.2447"></a>
-<span class="sourceLineNo">2448</span>   * This is to avoid jdk from creating many direct buffers as the size of<a name="line.2448"></a>
-<span class="sourceLineNo">2449</span>   * ByteBuffer increases. There should not be any performance degredation.<a name="line.2449"></a>
-<span class="sourceLineNo">2450</span>   *<a name="line.2450"></a>
-<span class="sourceLineNo">2451</span>   * @param channel writable byte channel to write on<a name="line.2451"></a>
-<span class="sourceLineNo">2452</span>   * @param buffer buffer to write<a name="line.2452"></a>
-<span class="sourceLineNo">2453</span>   * @return number of bytes written<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>   * @throws java.io.IOException e<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>   * @see java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer)<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>   */<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>  protected int channelRead(ReadableByteChannel channel,<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>                                   ByteBuffer buffer) throws IOException {<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span><a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>    int count = (buffer.remaining() &lt;= NIO_BUFFER_LIMIT) ?<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>           channel.read(buffer) : channelIO(channel, null, buffer);<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span>    if (count &gt; 0) {<a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      metrics.receivedBytes(count);<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>    }<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>    return count;<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>  }<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span><a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>  /**<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>   * Helper for {@link #channelRead(java.nio.channels.ReadableByteChannel, java.nio.ByteBuffer)}<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>   * and {@link #channelWrite(GatheringByteChannel, BufferChain)}. Only<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span>   * one of readCh or writeCh should be non-null.<a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>   *<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>   * @param readCh read channel<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>   * @param writeCh write channel<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>   * @param buf buffer to read or write into/out of<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>   * @return bytes written<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>   * @throws java.io.IOException e<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>   * @see #channelRead(java.nio.channels.ReadableByteChannel, java.nio.ByteBuffer)<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>   * @see #channelWrite(GatheringByteChannel, BufferChain)<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>   */<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>  private static int channelIO(ReadableByteChannel readCh,<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>                               WritableByteChannel writeCh,<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>                               ByteBuffer buf) throws IOException {<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span><a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    int originalLimit = buf.limit();<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    int initialRemaining = buf.remaining();<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>    int ret = 0;<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span><a name="line.2488"></a>
-<span class="sourceLineNo">2489</span>    while (buf.remaining() &gt; 0) {<a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>      try {<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>        int ioSize = Math.min(buf.remaining(), NIO_BUFFER_LIMIT);<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>        buf.limit(buf.position() + ioSize);<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span><a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>        ret = (readCh == null) ? writeCh.write(buf) : readCh.read(buf);<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span><a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>        if (ret &lt; ioSize) {<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>          break;<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>        }<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span><a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      } finally {<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>        buf.limit(originalLimit);<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>      }<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>    }<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span><a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>    int nBytes = initialRemaining - buf.remaining();<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    return (nBytes &gt; 0) ? nBytes : ret;<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>  }<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span><a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>  /**<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>   * Needed for features such as delayed calls.  We need to be able to store the current call<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>   * so that we can complete it later or ask questions of what is supported by the current ongoing<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span>   * call.<a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>   * @return An RpcCallContext backed by the currently ongoing call (gotten from a thread local)<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>   */<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>  public static RpcCallContext getCurrentCall() {<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    return CurCall.get();<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>  }<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span><a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>  public static boolean isInRpcCallContext() {<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>    return CurCall.get() != null;<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>  }<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span><a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>  /**<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>   * Returns the user credentials associated with the current RPC request or<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>   * &lt;code&gt;null&lt;/code&gt; if no credentials were provided.<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>   * @return A User<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>   */<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  public static User getRequestUser() {<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span>    RpcCallContext ctx = getCurrentCall();<a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>    return ctx == null? null: ctx.getRequestUser();<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>  }<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span><a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  /**<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>   * Returns the username for any user associated with the current RPC<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>   * request or &lt;code&gt;null&lt;/code&gt; if no user is set.<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>   */<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>  public static String getRequestUserName() {<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    User user = getRequestUser();<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>    return user == null? null: user.getShortName();<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>  }<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span><a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>  /**<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>   * @return Address of remote client if a request is ongoing, else null<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>   */<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span>  public static InetAddress getRemoteAddress() {<a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>    RpcCallContext ctx = getCurrentCall();<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>    return ctx == null? null: ctx.getRemoteAddress();<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>  }<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span><a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>  /**<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span>   * @param services Available service instances<a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>   * @return Matching BlockingServiceAndInterface pair<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   */<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>  static BlockingServiceAndInterface getServiceAndInterface(<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>      final List&lt;BlockingServiceAndInterface&gt; services, final String serviceName) {<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>    for (BlockingServiceAndInterface bs : services) {<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>      if (bs.getBlockingService().getDescriptorForType().getName().equals(serviceName)) {<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>        return bs;<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>      }<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>    }<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>    return null;<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>  }<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span><a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>  /**<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>   * @param services Available services and their service interfaces.<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>   * @return Service interface class for &lt;code&gt;serviceName&lt;/code&gt;<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>   */<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>  static Class&lt;?&gt; getServiceInterface(<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>      final List&lt;BlockingServiceAndInterface&gt; services,<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>      final String serviceName) {<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>    BlockingServiceAndInterface bsasi =<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span>        getServiceAndInterface(services, serviceName);<a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>    return bsasi == null? null: bsasi.getServiceInterface();<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>  }<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span><a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>  /**<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>   * @param services Available services and their service interfaces.<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>   * @return BlockingService that goes with the passed &lt;code&gt;serviceName&lt;/code&gt;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>   */<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>  static BlockingService getService(<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>      final List&lt;BlockingServiceAndInterface&gt; services,<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span>      final String serviceName) {<a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    BlockingServiceAndInterface bsasi =<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>        getServiceAndInterface(services, serviceName);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    return bsasi == null? null: bsasi.getBlockingService();<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span>  }<a name="line.2589"></a>
-<span class="sourceLineNo">2590</span><a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>  static MonitoredRPCHandler getStatus() {<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // It is ugly the way we park status up in RpcServer.  Let it be for now.  TODO.<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    MonitoredRPCHandler status = RpcServer.MONITORED_RPC.get();<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    if (status != null) {<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>      return status;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    }<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>    status = TaskMonitor.get().createRPCStatus(Thread.currentThread().getName());<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>    status.pause("Waiting for a call");<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>    RpcServer.MONITORED_RPC.set(status);<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>    return status;<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span>  }<a name="line.2601"></a>
-<span class="sourceLineNo">2602</span><a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>  /** Returns the remote side ip address when invoked inside an RPC<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>   *  Returns null incase of an error.<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span>   *  @return InetAddress<a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>   */<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>  public static InetAddress getRemoteIp() {<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>    Call call = CurCall.get();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>    if (call != null &amp;&amp; call.connection != null &amp;&amp; call.connection.socket != null) {<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      return call.connection.socket.getInetAddress();<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>    }<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>    return null;<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>  }<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span><a name="line.2614"></a>
-<span class="sourceLineNo">2615</span><a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>  /**<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>   * A convenience method to bind to a given address and report<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>   * better exceptions if the address is not a valid host.<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>   * @param socket the socket to bind<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>   * @param address the address to bind to<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>   * @param backlog the number of connections allowed in the queue<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>   * @throws BindException if the address can't be bound<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>   * @throws UnknownHostException if the address isn't a valid host name<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>   * @throws IOException other random errors from bind<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>   */<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span>  public static void bind(ServerSocket socket, InetSocketAddress address,<a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>                          int backlog) throws IOException {<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>    try {<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span>      socket.bind(address, backlog);<a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>    } catch (BindException e) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>      BindException bindException =<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        new BindException("Problem binding to " + address + " : " +<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>            e.getMessage());<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>      bindException.initCause(e);<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>      throw bindException;<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>    } catch (SocketException e) {<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>      // If they try to bind to a different host's address, give a better<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // error message.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      if ("Unresolved address".equals(e.getMessage())) {<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>        throw new UnknownHostException("Invalid hostname for server: " +<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>                                       address.getHostName());<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      }<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      throw e;<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>    }<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>  }<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span><a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>  @Override<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>  public RpcScheduler getScheduler() {<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>    return scheduler;<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>  }<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>}<a name="line.2651"></a>
+<span class="sourceLineNo">2268</span>      // increment the number of requests that were exceptions.<a name="line.2268"></a>
+<span class="sourceLineNo">2269</span>      metrics.exception(e);<a name="line.2269"></a>
+<span class="sourceLineNo">2270</span><a name="line.2270"></a>
+<span class="sourceLineNo">2271</span>      if (e instanceof LinkageError) throw new DoNotRetryIOException(e);<a name="line.2271"></a>
+<span class="sourceLineNo">2272</span>      if (e instanceof IOException) throw (IOException)e;<a name="line.2272"></a>
+<span class="sourceLineNo">2273</span>      LOG.error("Unexpected throwable object ", e);<a name="line.2273"></a>
+<span class="sourceLineNo">2274</span>      throw new IOException(e.getMessage(), e);<a name="line.2274"></a>
+<span class="sourceLineNo">2275</span>    }<a name="line.2275"></a>
+<span class="sourceLineNo">2276</span>  }<a name="line.2276"></a>
+<span class="sourceLineNo">2277</span><a name="line.2277"></a>
+<span class="sourceLineNo">2278</span>  /**<a name="line.2278"></a>
+<span class="sourceLineNo">2279</span>   * Logs an RPC response to the LOG file, producing valid JSON objects for<a name="line.2279"></a>
+<span class="sourceLineNo">2280</span>   * client Operations.<a name="line.2280"></a>
+<span class="sourceLineNo">2281</span>   * @param params The parameters received in the call.<a name="line.2281"></a>
+<span class="sourceLineNo">2282</span>   * @param methodName The name of the method invoked<a name="line.2282"></a>
+<span class="sourceLineNo">2283</span>   * @param call The string representation of the call<a name="line.2283"></a>
+<span class="sourceLineNo">2284</span>   * @param tag  The tag that will be used to indicate this event in the log.<a name="line.2284"></a>
+<span class="sourceLineNo">2285</span>   * @param clientAddress   The address of the client who made this call.<a name="line.2285"></a>
+<span class="sourceLineNo">2286</span>   * @param startTime       The time that the call was initiated, in ms.<a name="line.2286"></a>
+<span class="sourceLineNo">2287</span>   * @param processingTime  The duration that the call took to run, in ms.<a name="line.2287"></a>
+<span class="sourceLineNo">2288</span>   * @param qTime           The duration that the call spent on the queue<a name="line.2288"></a>
+<span class="sourceLineNo">2289</span>   *                        prior to being initiated, in ms.<a name="line.2289"></a>
+<span class="sourceLineNo">2290</span>   * @param responseSize    The size in bytes of the response buffer.<a name="line.2290"></a>
+<span class="sourceLineNo">2291</span>   */<a name="line.2291"></a>
+<span class="sourceLineNo">2292</span>  void logResponse(Object[] params, String methodName, String call, String tag,<a name="line.2292"></a>
+<span class="sourceLineNo">2293</span>      String clientAddress, long startTime, int processingTime, int qTime,<a name="line.2293"></a>
+<span class="sourceLineNo">2294</span>      long responseSize)<a name="line.2294"></a>
+<span class="sourceLineNo">2295</span>          throws IOException {<a name="line.2295"></a>
+<span class="sourceLineNo">2296</span>    // base information that is reported regardless of type of call<a name="line.2296"></a>
+<span class="sourceLineNo">2297</span>    Map&lt;String, Object&gt; responseInfo = new HashMap&lt;String, Object&gt;();<a name="line.2297"></a>
+<span class="sourceLineNo">2298</span>    responseInfo.put("starttimems", startTime);<a name="line.2298"></a>
+<span class="sourceLineNo">2299</span>    responseInfo.put("processingtimems", processingTime);<a name="line.2299"></a>
+<span class="sourceLineNo">2300</span>    responseInfo.put("queuetimems", qTime);<a name="line.2300"></a>
+<span class="sourceLineNo">2301</span>    responseInfo.put("responsesize", responseSize);<a name="line.2301"></a>
+<span class="sourceLineNo">2302</span>    responseInfo.put("client", clientAddress);<a name="line.2302"></a>
+<span class="sourceLineNo">2303</span>    responseInfo.put("class", server == null? "": server.getClass().getSimpleName());<a name="line.2303"></a>
+<span class="sourceLineNo">2304</span>    responseInfo.put("method", methodName);<a name="line.2304"></a>
+<span class="sourceLineNo">2305</span>    if (params.length == 2 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2305"></a>
+<span class="sourceLineNo">2306</span>        params[0] instanceof byte[] &amp;&amp;<a name="line.2306"></a>
+<span class="sourceLineNo">2307</span>        params[1] instanceof Operation) {<a name="line.2307"></a>
+<span class="sourceLineNo">2308</span>      // if the slow process is a query, we want to log its table as well<a name="line.2308"></a>
+<span class="sourceLineNo">2309</span>      // as its own fingerprint<a name="line.2309"></a>
+<span class="sourceLineNo">2310</span>      TableName tableName = TableName.valueOf(<a name="line.2310"></a>
+<span class="sourceLineNo">2311</span>          HRegionInfo.parseRegionName((byte[]) params[0])[0]);<a name="line.2311"></a>
+<span class="sourceLineNo">2312</span>      responseInfo.put("table", tableName.getNameAsString());<a name="line.2312"></a>
+<span class="sourceLineNo">2313</span>      // annotate the response map with operation details<a name="line.2313"></a>
+<span class="sourceLineNo">2314</span>      responseInfo.putAll(((Operation) params[1]).toMap());<a name="line.2314"></a>
+<span class="sourceLineNo">2315</span>      // report to the log file<a name="line.2315"></a>
+<span class="sourceLineNo">2316</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2316"></a>
+<span class="sourceLineNo">2317</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2317"></a>
+<span class="sourceLineNo">2318</span>    } else if (params.length == 1 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2318"></a>
+<span class="sourceLineNo">2319</span>        params[0] instanceof Operation) {<a name="line.2319"></a>
+<span class="sourceLineNo">2320</span>      // annotate the response map with operation details<a name="line.2320"></a>
+<span class="sourceLineNo">2321</span>      responseInfo.putAll(((Operation) params[0]).toMap());<a name="line.2321"></a>
+<span class="sourceLineNo">2322</span>      // report to the log file<a name="line.2322"></a>
+<span class="sourceLineNo">2323</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2323"></a>
+<span class="sourceLineNo">2324</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2324"></a>
+<span class="sourceLineNo">2325</span>    } else {<a name="line.2325"></a>
+<span class="sourceLineNo">2326</span>      // can't get JSON details, so just report call.toString() along with<a name="line.2326"></a>
+<span class="sourceLineNo">2327</span>      // a more generic tag.<a name="line.2327"></a>
+<span class="sourceLineNo">2328</span>      responseInfo.put("call", call);<a name="line.2328"></a>
+<span class="sourceLineNo">2329</span>      LOG.warn("(response" + tag + "): " + MAPPER.writeValueAsString(responseInfo));<a name="line.2329"></a>
+<span class="sourceLineNo">2330</span>    }<a name="line.2330"></a>
+<span class="sourceLineNo">2331</span>  }<a name="line.2331"></a>
+<span class="sourceLineNo">2332</span><a name="line.2332"></a>
+<span class="sourceLineNo">2333</span>  /** Stops the service.  No new calls will be handled after this is called. */<a name="line.2333"></a>
+<span class="sourceLineNo">2334</span>  @Override<a name="line.2334"></a>
+<span class="sourceLineNo">2335</span>  public synchronized void stop() {<a name="line.2335"></a>
+<span class="sourceLineNo">2336</span>    LOG.info("Stopping server on " + port);<a name="line.2336"></a>
+<span class="sourceLineNo">2337</span>    running = false;<a name="line.2337"></a>
+<span class="sourceLineNo">2338</span>    if (authTokenSecretMgr != null) {<a name="line.2338"></a>
+<span class="sourceLineNo">2339</span>      authTokenSecretMgr.stop();<a name="line.2339"></a>
+<span class="sourceLineNo">2340</span>      authTokenSecretMgr = null;<a name="line.2340"></a>
+<span class="sourceLineNo">2341</span>    }<a name="line.2341"></a>
+<span class="sourceLineNo">2342</span>    listener.interrupt();<a name="line.2342"></a>
+<span class="sourceLineNo">2343</span>    listener.doStop();<a name="line.2343"></a>
+<span class="sourceLineNo">2344</span>    responder.interrupt();<a name="line.2344"></a>
+<span class="sourceLineNo">2345</span>    scheduler.stop();<a name="line.2345"></a>
+<span class="sourceLineNo">2346</span>    notifyAll();<a name="line.2346"></a>
+<span class="sourceLineNo">2347</span>  }<a name="line.2347"></a>
+<span class="sourceLineNo">2348</span><a name="line.2348"></a>
+<span class="sourceLineNo">2349</span>  /** Wait for the server to be stopped.<a name="line.2349"></a>
+<span class="sourceLineNo">2350</span>   * Does not wait for all subthreads to finish.<a name="line.2350"></a>
+<span class="sourceLineNo">2351</span>   *  See {@link #stop()}.<a name="line.2351"></a>
+<span class="sourceLineNo">2352</span>   * @throws InterruptedException e<a name="line.2352"></a>
+<span class="sourceLineNo">2353</span>   */<a name="line.2353"></a>
+<span class="sourceLineNo">2354</span>  @Override<a name="line.2354"></a>
+<span class="sourceLineNo">2355</span>  public synchronized void join() throws InterruptedException {<a name="line.2355"></a>
+<span class="sourceLineNo">2356</span>    while (running) {<a name="line.2356"></a>
+<span class="sourceLineNo">2357</span>      wait();<a name="line.2357"></a>
+<span class="sourceLineNo">2358</span>    }<a name="line.2358"></a>
+<span class="sourceLineNo">2359</span>  }<a name="line.2359"></a>
+<span class="sourceLineNo">2360</span><a name="line.2360"></a>
+<span class="sourceLineNo">2361</span>  /**<a name="line.2361"></a>
+<span class="sourceLineNo">2362</span>   * Return the socket (ip+port) on which the RPC server is listening to. May return null if<a name="line.2362"></a>
+<span class="sourceLineNo">2363</span>   * the listener channel is closed.<a name="line.2363"></a>
+<span class="sourceLineNo">2364</span>   * @return the socket (ip+port) on which the RPC server is listening to, or null if this<a name="line.2364"></a>
+<span class="sourceLineNo">2365</span>   * information cannot be determined<a name="line.2365"></a>
+<span class="sourceLineNo">2366</span>   */<a name="line.2366"></a>
+<span class="sourceLineNo">2367</span>  @Override<a name="line.2367"></a>
+<span class="sourceLineNo">2368</span>  public synchronized InetSocketAddress getListenerAddress() {<a name="line.2368"></a>
+<span class="sourceLineNo">2369</span>    if (listener == null) {<a name="line.2369"></a>
+<span class="sourceLineNo">2370</span>      return null;<a name="line.2370"></a>
+<span class="sourceLineNo">2371</span>    }<a name="line.2371"></a>
+<span class="sourceLineNo">2372</span>    return listener.getAddress();<a name="line.2372"></a>
+<span class="sourceLineNo">2373</span>  }<a name="line.2373"></a>
+<span class="sourceLineNo">2374</span><a name="line.2374"></a>
+<span class="sourceLineNo">2375</span>  /**<a name="line.2375"></a>
+<span class="sourceLineNo">2376</span>   * Set the handler for calling out of RPC for error conditions.<a name="line.2376"></a>
+<span class="sourceLineNo">2377</span>   * @param handler the handler implementation<a name="line.2377"></a>
+<span class="sourceLineNo">2378</span>   */<a name="line.2378"></a>
+<span class="sourceLineNo">2379</span>  @Override<a name="line.2379"></a>
+<span class="sourceLineNo">2380</span>  public void setErrorHandler(HBaseRPCErrorHandler handler) {<a name="line.2380"></a>
+<span class="sourceLineNo">2381</span>    this.errorHandler = handler;<a name="line.2381"></a>
+<span class="sourceLineNo">2382</span>  }<a name="line.2382"></a>
+<span class="sourceLineNo">2383</span><a name="line.2383"></a>
+<span class="sourceLineNo">2384</span>  @Override<a name="line.2384"></a>
+<span class="sourceLineNo">2385</span>  public HBaseRPCErrorHandler getErrorHandler() {<a name="line.2385"></a>
+<span class="sourceLineNo">2386</span>    return this.errorHandler;<a name="line.2386"></a>
+<span class="sourceLineNo">2387</span>  }<a name="line.2387"></a>
+<span class="sourceLineNo">2388</span><a name="line.2388"></a>
+<span class="sourceLineNo">2389</span>  /**<a name="line.2389"></a>
+<span class="sourceLineNo">2390</span>   * Returns the metrics instance for reporting RPC call statistics<a name="line.2390"></a>
+<span class="sourceLineNo">2391</span>   */<a name="line.2391"></a>
+<span class="sourceLineNo">2392</span>  @Override<a name="line.2392"></a>
+<span class="sourceLineNo">2393</span>  public MetricsHBaseServer getMetrics() {<a name="line.2393"></a>
+<span class="sourceLineNo">2394</span>    return metrics;<a name="line.2394"></a>
+<span class="sourceLineNo">2395</span>  }<a name="line.2395"></a>
+<span class="sourceLineNo">2396</span><a name="line.2396"></a>
+<span class="sourceLineNo">2397</span>  @Override<a name="line.2397"></a>
+<span class="sourceLineNo">2398</span>  public void addCallSize(final long diff) {<a name="line.2398"></a>
+<span class="sourceLineNo">2399</span>    this.callQueueSize.add(diff);<a name="line.2399"></a>
+<span class="sourceLineNo">2400</span>  }<a name="line.2400"></a>
+<span class="sourceLineNo">2401</span><a name="line.2401"></a>
+<span class="sourceLineNo">2402</span>  /**<a name="line.2402"></a>
+<span class="sourceLineNo">2403</span>   * Authorize the incoming client connection.<a name="line.2403"></a>
+<span class="sourceLineNo">2404</span>   *<a name="line.2404"></a>
+<span class="sourceLineNo">2405</span>   * @param user client user<a name="line.2405"></a>
+<span class="sourceLineNo">2406</span>   * @param connection incoming connection<a name="line.2406"></a>
+<span class="sourceLineNo">2407</span>   * @param addr InetAddress of incoming connection<a name="line.2407"></a>
+<span class="sourceLineNo">2408</span>   * @throws org.apache.hadoop.security.authorize.AuthorizationException<a name="line.2408"></a>
+<span class="sourceLineNo">2409</span>   *         when the client isn't authorized to talk the protocol<a name="line.2409"></a>
+<span class="sourceLineNo">2410</span>   */<a name="line.2410"></a>
+<span class="sourceLineNo">2411</span>  public synchronized void authorize(UserGroupInformation user, ConnectionHeader connection,<a name="line.2411"></a>
+<span class="sourceLineNo">2412</span>      InetAddress addr)<a name="line.2412"></a>
+<span class="sourceLineNo">2413</span>  throws AuthorizationException {<a name="line.2413"></a>
+<span class="sourceLineNo">2414</span>    if (authorize) {<a name="line.2414"></a>
+<span class="sourceLineNo">2415</span>      Class&lt;?&gt; c = getServiceInterface(services, connection.getServiceName());<a name="line.2415"></a>
+<span class="sourceLineNo">2416</span>      this.authManager.authorize(user != null ? user : null, c, getConf(), addr);<a name="line.2416"></a>
+<span class="sourceLineNo">2417</span>    }<a name="line.2417"></a>
+<span class="sourceLineNo">2418</span>  }<a name="line.2418"></a>
+<span class="sourceLineNo">2419</span><a name="line.2419"></a>
+<span class="sourceLineNo">2420</span>  /**<a name="line.2420"></a>
+<span class="sourceLineNo">2421</span>   * When the read or write buffer size is larger than this limit, i/o will be<a name="line.2421"></a>
+<span class="sourceLineNo">2422</span>   * done in chunks of this size. Most RPC requests and responses would be<a name="line.2422"></a>
+<span class="sourceLineNo">2423</span>   * be smaller.<a name="line.2423"></a>
+<span class="sourceLineNo">2424</span>   */<a name="line.2424"></a>
+<span class="sourceLineNo">2425</span>  private static int NIO_BUFFER_LIMIT = 64 * 1024; //should not be more than 64KB.<a name="line.2425"></a>
+<span class="sourceLineNo">2426</span><a name="line.2426"></a>
+<span class="sourceLineNo">2427</span>  /**<a name="line.2427"></a>
+<span class="sourceLineNo">2428</span>   * This is a wrapper around {@link java.nio.channels.WritableByteChannel#write(java.

<TRUNCATED>

[15/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
index 52d47c0..b8ef76a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
@@ -67,15 +67,15 @@
 <span class="sourceLineNo">059</span>  requiredArguments = {<a name="line.59"></a>
 <span class="sourceLineNo">060</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.60"></a>
 <span class="sourceLineNo">061</span>  optionalArguments = {<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager")})<a name="line.70"></a>
+<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean")})<a name="line.70"></a>
 <span class="sourceLineNo">071</span>public class MasterStatusTmpl<a name="line.71"></a>
 <span class="sourceLineNo">072</span>  extends org.jamon.AbstractTemplateProxy<a name="line.72"></a>
 <span class="sourceLineNo">073</span>{<a name="line.73"></a>
@@ -116,159 +116,159 @@
 <span class="sourceLineNo">108</span>      return m_master;<a name="line.108"></a>
 <span class="sourceLineNo">109</span>    }<a name="line.109"></a>
 <span class="sourceLineNo">110</span>    private HMaster m_master;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    // 21, 1<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.112"></a>
+<span class="sourceLineNo">111</span>    // 28, 1<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    public void setServerManager(ServerManager serverManager)<a name="line.112"></a>
 <span class="sourceLineNo">113</span>    {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      // 21, 1<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      m_frags = frags;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      m_frags__IsNotDefault = true;<a name="line.116"></a>
+<span class="sourceLineNo">114</span>      // 28, 1<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      m_serverManager = serverManager;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      m_serverManager__IsNotDefault = true;<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.118"></a>
+<span class="sourceLineNo">118</span>    public ServerManager getServerManager()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_frags;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_serverManager;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    public boolean getFrags__IsNotDefault()<a name="line.123"></a>
+<span class="sourceLineNo">122</span>    private ServerManager m_serverManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    public boolean getServerManager__IsNotDefault()<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      return m_frags__IsNotDefault;<a name="line.125"></a>
+<span class="sourceLineNo">125</span>      return m_serverManager__IsNotDefault;<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    private boolean m_frags__IsNotDefault;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    // 25, 1<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.129"></a>
+<span class="sourceLineNo">127</span>    private boolean m_serverManager__IsNotDefault;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    // 22, 1<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.129"></a>
 <span class="sourceLineNo">130</span>    {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      // 25, 1<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.133"></a>
+<span class="sourceLineNo">131</span>      // 22, 1<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      m_metaLocation = metaLocation;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      m_metaLocation__IsNotDefault = true;<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    }<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getCatalogJanitorEnabled()<a name="line.135"></a>
+<span class="sourceLineNo">135</span>    public ServerName getMetaLocation()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_catalogJanitorEnabled;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_metaLocation;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_catalogJanitorEnabled;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.140"></a>
+<span class="sourceLineNo">139</span>    private ServerName m_metaLocation;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.140"></a>
 <span class="sourceLineNo">141</span>    {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.142"></a>
+<span class="sourceLineNo">142</span>      return m_metaLocation__IsNotDefault;<a name="line.142"></a>
 <span class="sourceLineNo">143</span>    }<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    // 26, 1<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    public void setFilter(String filter)<a name="line.146"></a>
+<span class="sourceLineNo">144</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    // 21, 1<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.146"></a>
 <span class="sourceLineNo">147</span>    {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      // 26, 1<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      m_filter = filter;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      m_filter__IsNotDefault = true;<a name="line.150"></a>
+<span class="sourceLineNo">148</span>      // 21, 1<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      m_frags = frags;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      m_frags__IsNotDefault = true;<a name="line.150"></a>
 <span class="sourceLineNo">151</span>    }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public String getFilter()<a name="line.152"></a>
+<span class="sourceLineNo">152</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.152"></a>
 <span class="sourceLineNo">153</span>    {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      return m_filter;<a name="line.154"></a>
+<span class="sourceLineNo">154</span>      return m_frags;<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    private String m_filter;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    public boolean getFilter__IsNotDefault()<a name="line.157"></a>
+<span class="sourceLineNo">156</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public boolean getFrags__IsNotDefault()<a name="line.157"></a>
 <span class="sourceLineNo">158</span>    {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      return m_filter__IsNotDefault;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>      return m_frags__IsNotDefault;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    private boolean m_filter__IsNotDefault;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // 24, 1<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.163"></a>
+<span class="sourceLineNo">161</span>    private boolean m_frags__IsNotDefault;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // 26, 1<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    public void setFilter(String filter)<a name="line.163"></a>
 <span class="sourceLineNo">164</span>    {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      // 24, 1<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      m_deadServers = deadServers;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      m_deadServers__IsNotDefault = true;<a name="line.167"></a>
+<span class="sourceLineNo">165</span>      // 26, 1<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      m_filter = filter;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      m_filter__IsNotDefault = true;<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.169"></a>
+<span class="sourceLineNo">169</span>    public String getFilter()<a name="line.169"></a>
 <span class="sourceLineNo">170</span>    {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return m_deadServers;<a name="line.171"></a>
+<span class="sourceLineNo">171</span>      return m_filter;<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public boolean getDeadServers__IsNotDefault()<a name="line.174"></a>
+<span class="sourceLineNo">173</span>    private String m_filter;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    public boolean getFilter__IsNotDefault()<a name="line.174"></a>
 <span class="sourceLineNo">175</span>    {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      return m_deadServers__IsNotDefault;<a name="line.176"></a>
+<span class="sourceLineNo">176</span>      return m_filter__IsNotDefault;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    private boolean m_deadServers__IsNotDefault;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    // 27, 1<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    public void setFormat(String format)<a name="line.180"></a>
+<span class="sourceLineNo">178</span>    private boolean m_filter__IsNotDefault;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    // 24, 1<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.180"></a>
 <span class="sourceLineNo">181</span>    {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      // 27, 1<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      m_format = format;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      m_format__IsNotDefault = true;<a name="line.184"></a>
+<span class="sourceLineNo">182</span>      // 24, 1<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      m_deadServers = deadServers;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      m_deadServers__IsNotDefault = true;<a name="line.184"></a>
 <span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    public String getFormat()<a name="line.186"></a>
+<span class="sourceLineNo">186</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.186"></a>
 <span class="sourceLineNo">187</span>    {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      return m_format;<a name="line.188"></a>
+<span class="sourceLineNo">188</span>      return m_deadServers;<a name="line.188"></a>
 <span class="sourceLineNo">189</span>    }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    private String m_format;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    public boolean getFormat__IsNotDefault()<a name="line.191"></a>
+<span class="sourceLineNo">190</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    public boolean getDeadServers__IsNotDefault()<a name="line.191"></a>
 <span class="sourceLineNo">192</span>    {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      return m_format__IsNotDefault;<a name="line.193"></a>
+<span class="sourceLineNo">193</span>      return m_deadServers__IsNotDefault;<a name="line.193"></a>
 <span class="sourceLineNo">194</span>    }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    private boolean m_format__IsNotDefault;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // 23, 1<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.197"></a>
+<span class="sourceLineNo">195</span>    private boolean m_deadServers__IsNotDefault;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // 27, 1<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    public void setFormat(String format)<a name="line.197"></a>
 <span class="sourceLineNo">198</span>    {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      // 23, 1<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      m_servers = servers;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      m_servers__IsNotDefault = true;<a name="line.201"></a>
+<span class="sourceLineNo">199</span>      // 27, 1<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      m_format = format;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      m_format__IsNotDefault = true;<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    public List&lt;ServerName&gt; getServers()<a name="line.203"></a>
+<span class="sourceLineNo">203</span>    public String getFormat()<a name="line.203"></a>
 <span class="sourceLineNo">204</span>    {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return m_servers;<a name="line.205"></a>
+<span class="sourceLineNo">205</span>      return m_format;<a name="line.205"></a>
 <span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    private List&lt;ServerName&gt; m_servers;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    public boolean getServers__IsNotDefault()<a name="line.208"></a>
+<span class="sourceLineNo">207</span>    private String m_format;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public boolean getFormat__IsNotDefault()<a name="line.208"></a>
 <span class="sourceLineNo">209</span>    {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      return m_servers__IsNotDefault;<a name="line.210"></a>
+<span class="sourceLineNo">210</span>      return m_format__IsNotDefault;<a name="line.210"></a>
 <span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    private boolean m_servers__IsNotDefault;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    // 22, 1<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.214"></a>
+<span class="sourceLineNo">212</span>    private boolean m_format__IsNotDefault;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    // 29, 1<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      // 22, 1<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      m_metaLocation = metaLocation;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      m_metaLocation__IsNotDefault = true;<a name="line.218"></a>
+<span class="sourceLineNo">216</span>      // 29, 1<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      m_assignmentManager = assignmentManager;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      m_assignmentManager__IsNotDefault = true;<a name="line.218"></a>
 <span class="sourceLineNo">219</span>    }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    public ServerName getMetaLocation()<a name="line.220"></a>
+<span class="sourceLineNo">220</span>    public AssignmentManager getAssignmentManager()<a name="line.220"></a>
 <span class="sourceLineNo">221</span>    {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return m_metaLocation;<a name="line.222"></a>
+<span class="sourceLineNo">222</span>      return m_assignmentManager;<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    private ServerName m_metaLocation;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.225"></a>
+<span class="sourceLineNo">224</span>    private AssignmentManager m_assignmentManager;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.225"></a>
 <span class="sourceLineNo">226</span>    {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return m_metaLocation__IsNotDefault;<a name="line.227"></a>
+<span class="sourceLineNo">227</span>      return m_assignmentManager__IsNotDefault;<a name="line.227"></a>
 <span class="sourceLineNo">228</span>    }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // 29, 1<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.231"></a>
+<span class="sourceLineNo">229</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    // 23, 1<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.231"></a>
 <span class="sourceLineNo">232</span>    {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      // 29, 1<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      m_assignmentManager = assignmentManager;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      m_assignmentManager__IsNotDefault = true;<a name="line.235"></a>
+<span class="sourceLineNo">233</span>      // 23, 1<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      m_servers = servers;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      m_servers__IsNotDefault = true;<a name="line.235"></a>
 <span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    public AssignmentManager getAssignmentManager()<a name="line.237"></a>
+<span class="sourceLineNo">237</span>    public List&lt;ServerName&gt; getServers()<a name="line.237"></a>
 <span class="sourceLineNo">238</span>    {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      return m_assignmentManager;<a name="line.239"></a>
+<span class="sourceLineNo">239</span>      return m_servers;<a name="line.239"></a>
 <span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    private AssignmentManager m_assignmentManager;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.242"></a>
+<span class="sourceLineNo">241</span>    private List&lt;ServerName&gt; m_servers;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public boolean getServers__IsNotDefault()<a name="line.242"></a>
 <span class="sourceLineNo">243</span>    {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return m_assignmentManager__IsNotDefault;<a name="line.244"></a>
+<span class="sourceLineNo">244</span>      return m_servers__IsNotDefault;<a name="line.244"></a>
 <span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    // 28, 1<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    public void setServerManager(ServerManager serverManager)<a name="line.248"></a>
+<span class="sourceLineNo">246</span>    private boolean m_servers__IsNotDefault;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    // 25, 1<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.248"></a>
 <span class="sourceLineNo">249</span>    {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      // 28, 1<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      m_serverManager = serverManager;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      m_serverManager__IsNotDefault = true;<a name="line.252"></a>
+<span class="sourceLineNo">250</span>      // 25, 1<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.252"></a>
 <span class="sourceLineNo">253</span>    }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    public ServerManager getServerManager()<a name="line.254"></a>
+<span class="sourceLineNo">254</span>    public boolean getCatalogJanitorEnabled()<a name="line.254"></a>
 <span class="sourceLineNo">255</span>    {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      return m_serverManager;<a name="line.256"></a>
+<span class="sourceLineNo">256</span>      return m_catalogJanitorEnabled;<a name="line.256"></a>
 <span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    private ServerManager m_serverManager;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    public boolean getServerManager__IsNotDefault()<a name="line.259"></a>
+<span class="sourceLineNo">258</span>    private boolean m_catalogJanitorEnabled;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.259"></a>
 <span class="sourceLineNo">260</span>    {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return m_serverManager__IsNotDefault;<a name="line.261"></a>
+<span class="sourceLineNo">261</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.261"></a>
 <span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private boolean m_serverManager__IsNotDefault;<a name="line.263"></a>
+<span class="sourceLineNo">263</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.263"></a>
 <span class="sourceLineNo">264</span>  }<a name="line.264"></a>
 <span class="sourceLineNo">265</span>  @Override<a name="line.265"></a>
 <span class="sourceLineNo">266</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.266"></a>
@@ -280,66 +280,66 @@
 <span class="sourceLineNo">272</span>    return (ImplData) super.getImplData();<a name="line.272"></a>
 <span class="sourceLineNo">273</span>  }<a name="line.273"></a>
 <span class="sourceLineNo">274</span>  <a name="line.274"></a>
-<span class="sourceLineNo">275</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.276"></a>
+<span class="sourceLineNo">275</span>  protected ServerManager serverManager;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.276"></a>
 <span class="sourceLineNo">277</span>  {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    (getImplData()).setFrags(p_frags);<a name="line.278"></a>
+<span class="sourceLineNo">278</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.278"></a>
 <span class="sourceLineNo">279</span>    return this;<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>  protected boolean catalogJanitorEnabled;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.283"></a>
+<span class="sourceLineNo">282</span>  protected ServerName metaLocation;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.283"></a>
 <span class="sourceLineNo">284</span>  {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.285"></a>
+<span class="sourceLineNo">285</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.285"></a>
 <span class="sourceLineNo">286</span>    return this;<a name="line.286"></a>
 <span class="sourceLineNo">287</span>  }<a name="line.287"></a>
 <span class="sourceLineNo">288</span>  <a name="line.288"></a>
-<span class="sourceLineNo">289</span>  protected String filter;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.290"></a>
+<span class="sourceLineNo">289</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.290"></a>
 <span class="sourceLineNo">291</span>  {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    (getImplData()).setFilter(p_filter);<a name="line.292"></a>
+<span class="sourceLineNo">292</span>    (getImplData()).setFrags(p_frags);<a name="line.292"></a>
 <span class="sourceLineNo">293</span>    return this;<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>  protected Set&lt;ServerName&gt; deadServers;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.297"></a>
+<span class="sourceLineNo">296</span>  protected String filter;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.297"></a>
 <span class="sourceLineNo">298</span>  {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.299"></a>
+<span class="sourceLineNo">299</span>    (getImplData()).setFilter(p_filter);<a name="line.299"></a>
 <span class="sourceLineNo">300</span>    return this;<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>  protected String format;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.304"></a>
+<span class="sourceLineNo">303</span>  protected Set&lt;ServerName&gt; deadServers;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.304"></a>
 <span class="sourceLineNo">305</span>  {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    (getImplData()).setFormat(p_format);<a name="line.306"></a>
+<span class="sourceLineNo">306</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.306"></a>
 <span class="sourceLineNo">307</span>    return this;<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>
-<span class="sourceLineNo">310</span>  protected List&lt;ServerName&gt; servers;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.311"></a>
+<span class="sourceLineNo">310</span>  protected String format;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.311"></a>
 <span class="sourceLineNo">312</span>  {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    (getImplData()).setServers(p_servers);<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    (getImplData()).setFormat(p_format);<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    return this;<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>  protected ServerName metaLocation;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.318"></a>
+<span class="sourceLineNo">317</span>  protected AssignmentManager assignmentManager;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.318"></a>
 <span class="sourceLineNo">319</span>  {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.320"></a>
+<span class="sourceLineNo">320</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.320"></a>
 <span class="sourceLineNo">321</span>    return this;<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>  protected AssignmentManager assignmentManager;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.325"></a>
+<span class="sourceLineNo">324</span>  protected List&lt;ServerName&gt; servers;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.325"></a>
 <span class="sourceLineNo">326</span>  {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.327"></a>
+<span class="sourceLineNo">327</span>    (getImplData()).setServers(p_servers);<a name="line.327"></a>
 <span class="sourceLineNo">328</span>    return this;<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>  protected ServerManager serverManager;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.332"></a>
+<span class="sourceLineNo">331</span>  protected boolean catalogJanitorEnabled;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.332"></a>
 <span class="sourceLineNo">333</span>  {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.334"></a>
+<span class="sourceLineNo">334</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.334"></a>
 <span class="sourceLineNo">335</span>    return this;<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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
index afc0f44..03607bf 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
@@ -68,15 +68,15 @@
 <span class="sourceLineNo">060</span><a name="line.60"></a>
 <span class="sourceLineNo">061</span>{<a name="line.61"></a>
 <span class="sourceLineNo">062</span>  private final HMaster master;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private final Map&lt;String,Integer&gt; frags;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private final boolean catalogJanitorEnabled;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private final String filter;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private final Set&lt;ServerName&gt; deadServers;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private final String format;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private final List&lt;ServerName&gt; servers;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private final ServerName metaLocation;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private final AssignmentManager assignmentManager;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private final ServerManager serverManager;<a name="line.71"></a>
+<span class="sourceLineNo">063</span>  private final ServerManager serverManager;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private final ServerName metaLocation;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private final Map&lt;String,Integer&gt; frags;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private final String filter;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private final Set&lt;ServerName&gt; deadServers;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private final String format;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private final AssignmentManager assignmentManager;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private final List&lt;ServerName&gt; servers;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private final boolean catalogJanitorEnabled;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>  // 68, 1<a name="line.72"></a>
 <span class="sourceLineNo">073</span>  <a name="line.73"></a>
 <span class="sourceLineNo">074</span>  public String formatZKString() {<a name="line.74"></a>
@@ -106,41 +106,41 @@
 <span class="sourceLineNo">098</span><a name="line.98"></a>
 <span class="sourceLineNo">099</span>  protected static org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData p_implData)<a name="line.99"></a>
 <span class="sourceLineNo">100</span>  {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    if(! p_implData.getFrags__IsNotDefault())<a name="line.101"></a>
+<span class="sourceLineNo">101</span>    if(! p_implData.getServerManager__IsNotDefault())<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      p_implData.setFrags(null);<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      p_implData.setServerManager(null);<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    if(! p_implData.getCatalogJanitorEnabled__IsNotDefault())<a name="line.105"></a>
+<span class="sourceLineNo">105</span>    if(! p_implData.getMetaLocation__IsNotDefault())<a name="line.105"></a>
 <span class="sourceLineNo">106</span>    {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      p_implData.setCatalogJanitorEnabled(true);<a name="line.107"></a>
+<span class="sourceLineNo">107</span>      p_implData.setMetaLocation(null);<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    }<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.109"></a>
+<span class="sourceLineNo">109</span>    if(! p_implData.getFrags__IsNotDefault())<a name="line.109"></a>
 <span class="sourceLineNo">110</span>    {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      p_implData.setFilter("general");<a name="line.111"></a>
+<span class="sourceLineNo">111</span>      p_implData.setFrags(null);<a name="line.111"></a>
 <span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    if(! p_implData.getDeadServers__IsNotDefault())<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      p_implData.setDeadServers(null);<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      p_implData.setFilter("general");<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.117"></a>
+<span class="sourceLineNo">117</span>    if(! p_implData.getDeadServers__IsNotDefault())<a name="line.117"></a>
 <span class="sourceLineNo">118</span>    {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      p_implData.setFormat("html");<a name="line.119"></a>
+<span class="sourceLineNo">119</span>      p_implData.setDeadServers(null);<a name="line.119"></a>
 <span class="sourceLineNo">120</span>    }<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    if(! p_implData.getServers__IsNotDefault())<a name="line.121"></a>
+<span class="sourceLineNo">121</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.121"></a>
 <span class="sourceLineNo">122</span>    {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      p_implData.setServers(null);<a name="line.123"></a>
+<span class="sourceLineNo">123</span>      p_implData.setFormat("html");<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    }<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    if(! p_implData.getMetaLocation__IsNotDefault())<a name="line.125"></a>
+<span class="sourceLineNo">125</span>    if(! p_implData.getAssignmentManager__IsNotDefault())<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      p_implData.setMetaLocation(null);<a name="line.127"></a>
+<span class="sourceLineNo">127</span>      p_implData.setAssignmentManager(null);<a name="line.127"></a>
 <span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    if(! p_implData.getAssignmentManager__IsNotDefault())<a name="line.129"></a>
+<span class="sourceLineNo">129</span>    if(! p_implData.getServers__IsNotDefault())<a name="line.129"></a>
 <span class="sourceLineNo">130</span>    {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      p_implData.setAssignmentManager(null);<a name="line.131"></a>
+<span class="sourceLineNo">131</span>      p_implData.setServers(null);<a name="line.131"></a>
 <span class="sourceLineNo">132</span>    }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    if(! p_implData.getServerManager__IsNotDefault())<a name="line.133"></a>
+<span class="sourceLineNo">133</span>    if(! p_implData.getCatalogJanitorEnabled__IsNotDefault())<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      p_implData.setServerManager(null);<a name="line.135"></a>
+<span class="sourceLineNo">135</span>      p_implData.setCatalogJanitorEnabled(true);<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    }<a name="line.136"></a>
 <span class="sourceLineNo">137</span>    return p_implData;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>  }<a name="line.138"></a>
@@ -148,15 +148,15 @@
 <span class="sourceLineNo">140</span>  {<a name="line.140"></a>
 <span class="sourceLineNo">141</span>    super(p_templateManager, __jamon_setOptionalArguments(p_implData));<a name="line.141"></a>
 <span class="sourceLineNo">142</span>    master = p_implData.getMaster();<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    frags = p_implData.getFrags();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    filter = p_implData.getFilter();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    deadServers = p_implData.getDeadServers();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    format = p_implData.getFormat();<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    servers = p_implData.getServers();<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    metaLocation = p_implData.getMetaLocation();<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    assignmentManager = p_implData.getAssignmentManager();<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    serverManager = p_implData.getServerManager();<a name="line.151"></a>
+<span class="sourceLineNo">143</span>    serverManager = p_implData.getServerManager();<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    metaLocation = p_implData.getMetaLocation();<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    frags = p_implData.getFrags();<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    filter = p_implData.getFilter();<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    deadServers = p_implData.getDeadServers();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    format = p_implData.getFormat();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    assignmentManager = p_implData.getAssignmentManager();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    servers = p_implData.getServers();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();<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 public void renderNoFlush(final java.io.Writer jamonWriter)<a name="line.154"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
index 46c00c7..049b2e1 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
@@ -33,10 +33,10 @@
 <span class="sourceLineNo">025</span>  requiredArguments = {<a name="line.25"></a>
 <span class="sourceLineNo">026</span>    @org.jamon.annotations.Argument(name = "regionServer", type = "HRegionServer")},<a name="line.26"></a>
 <span class="sourceLineNo">027</span>  optionalArguments = {<a name="line.27"></a>
-<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.28"></a>
-<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.29"></a>
-<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.30"></a>
-<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String")})<a name="line.31"></a>
+<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.29"></a>
+<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.30"></a>
+<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.31"></a>
 <span class="sourceLineNo">032</span>public class RSStatusTmpl<a name="line.32"></a>
 <span class="sourceLineNo">033</span>  extends org.jamon.AbstractTemplateProxy<a name="line.33"></a>
 <span class="sourceLineNo">034</span>{<a name="line.34"></a>
@@ -77,74 +77,74 @@
 <span class="sourceLineNo">069</span>      return m_regionServer;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>    }<a name="line.70"></a>
 <span class="sourceLineNo">071</span>    private HRegionServer m_regionServer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    // 22, 1<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    public void setFormat(String format)<a name="line.73"></a>
+<span class="sourceLineNo">072</span>    // 24, 1<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public void setBcv(String bcv)<a name="line.73"></a>
 <span class="sourceLineNo">074</span>    {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      // 22, 1<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      m_format = format;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      m_format__IsNotDefault = true;<a name="line.77"></a>
+<span class="sourceLineNo">075</span>      // 24, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      m_bcv = bcv;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      m_bcv__IsNotDefault = true;<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public String getFormat()<a name="line.79"></a>
+<span class="sourceLineNo">079</span>    public String getBcv()<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return m_format;<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return m_bcv;<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    private String m_format;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public boolean getFormat__IsNotDefault()<a name="line.84"></a>
+<span class="sourceLineNo">083</span>    private String m_bcv;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    public boolean getBcv__IsNotDefault()<a name="line.84"></a>
 <span class="sourceLineNo">085</span>    {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      return m_format__IsNotDefault;<a name="line.86"></a>
+<span class="sourceLineNo">086</span>      return m_bcv__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    private boolean m_format__IsNotDefault;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    // 21, 1<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public void setFilter(String filter)<a name="line.90"></a>
+<span class="sourceLineNo">088</span>    private boolean m_bcv__IsNotDefault;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    // 23, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setBcn(String bcn)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // 21, 1<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      m_filter = filter;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      m_filter__IsNotDefault = true;<a name="line.94"></a>
+<span class="sourceLineNo">092</span>      // 23, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_bcn = bcn;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_bcn__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getFilter()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getBcn()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_filter;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_bcn;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    private String m_filter;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    public boolean getFilter__IsNotDefault()<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    private String m_bcn;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getBcn__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_filter__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_bcn__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    private boolean m_filter__IsNotDefault;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    // 24, 1<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    public void setBcv(String bcv)<a name="line.107"></a>
+<span class="sourceLineNo">105</span>    private boolean m_bcn__IsNotDefault;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    // 22, 1<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    public void setFormat(String format)<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      // 24, 1<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      m_bcv = bcv;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      m_bcv__IsNotDefault = true;<a name="line.111"></a>
+<span class="sourceLineNo">109</span>      // 22, 1<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      m_format = format;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      m_format__IsNotDefault = true;<a name="line.111"></a>
 <span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public String getBcv()<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    public String getFormat()<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return m_bcv;<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      return m_format;<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    private String m_bcv;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public boolean getBcv__IsNotDefault()<a name="line.118"></a>
+<span class="sourceLineNo">117</span>    private String m_format;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    public boolean getFormat__IsNotDefault()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_bcv__IsNotDefault;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_format__IsNotDefault;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private boolean m_bcv__IsNotDefault;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // 23, 1<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    public void setBcn(String bcn)<a name="line.124"></a>
+<span class="sourceLineNo">122</span>    private boolean m_format__IsNotDefault;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    // 21, 1<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public void setFilter(String filter)<a name="line.124"></a>
 <span class="sourceLineNo">125</span>    {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      // 23, 1<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      m_bcn = bcn;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      m_bcn__IsNotDefault = true;<a name="line.128"></a>
+<span class="sourceLineNo">126</span>      // 21, 1<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      m_filter = filter;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      m_filter__IsNotDefault = true;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    public String getBcn()<a name="line.130"></a>
+<span class="sourceLineNo">130</span>    public String getFilter()<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return m_bcn;<a name="line.132"></a>
+<span class="sourceLineNo">132</span>      return m_filter;<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    private String m_bcn;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getBcn__IsNotDefault()<a name="line.135"></a>
+<span class="sourceLineNo">134</span>    private String m_filter;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    public boolean getFilter__IsNotDefault()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_bcn__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_filter__IsNotDefault;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_bcn__IsNotDefault;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>    private boolean m_filter__IsNotDefault;<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>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.142"></a>
@@ -156,31 +156,31 @@
 <span class="sourceLineNo">148</span>    return (ImplData) super.getImplData();<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>  protected String format;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.152"></a>
+<span class="sourceLineNo">151</span>  protected String bcv;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.152"></a>
 <span class="sourceLineNo">153</span>  {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    (getImplData()).setFormat(p_format);<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    (getImplData()).setBcv(p_bcv);<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    return this;<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>  protected String filter;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.159"></a>
+<span class="sourceLineNo">158</span>  protected String bcn;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setFilter(p_filter);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setBcn(p_bcn);<a name="line.161"></a>
 <span class="sourceLineNo">162</span>    return this;<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>  protected String bcv;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.166"></a>
+<span class="sourceLineNo">165</span>  protected String format;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.166"></a>
 <span class="sourceLineNo">167</span>  {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    (getImplData()).setBcv(p_bcv);<a name="line.168"></a>
+<span class="sourceLineNo">168</span>    (getImplData()).setFormat(p_format);<a name="line.168"></a>
 <span class="sourceLineNo">169</span>    return this;<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>  protected String bcn;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.173"></a>
+<span class="sourceLineNo">172</span>  protected String filter;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    (getImplData()).setBcn(p_bcn);<a name="line.175"></a>
+<span class="sourceLineNo">175</span>    (getImplData()).setFilter(p_filter);<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    return this;<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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html
index 46c00c7..049b2e1 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html
@@ -33,10 +33,10 @@
 <span class="sourceLineNo">025</span>  requiredArguments = {<a name="line.25"></a>
 <span class="sourceLineNo">026</span>    @org.jamon.annotations.Argument(name = "regionServer", type = "HRegionServer")},<a name="line.26"></a>
 <span class="sourceLineNo">027</span>  optionalArguments = {<a name="line.27"></a>
-<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.28"></a>
-<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.29"></a>
-<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.30"></a>
-<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String")})<a name="line.31"></a>
+<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.29"></a>
+<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.30"></a>
+<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.31"></a>
 <span class="sourceLineNo">032</span>public class RSStatusTmpl<a name="line.32"></a>
 <span class="sourceLineNo">033</span>  extends org.jamon.AbstractTemplateProxy<a name="line.33"></a>
 <span class="sourceLineNo">034</span>{<a name="line.34"></a>
@@ -77,74 +77,74 @@
 <span class="sourceLineNo">069</span>      return m_regionServer;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>    }<a name="line.70"></a>
 <span class="sourceLineNo">071</span>    private HRegionServer m_regionServer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    // 22, 1<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    public void setFormat(String format)<a name="line.73"></a>
+<span class="sourceLineNo">072</span>    // 24, 1<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public void setBcv(String bcv)<a name="line.73"></a>
 <span class="sourceLineNo">074</span>    {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      // 22, 1<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      m_format = format;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      m_format__IsNotDefault = true;<a name="line.77"></a>
+<span class="sourceLineNo">075</span>      // 24, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      m_bcv = bcv;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      m_bcv__IsNotDefault = true;<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public String getFormat()<a name="line.79"></a>
+<span class="sourceLineNo">079</span>    public String getBcv()<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return m_format;<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return m_bcv;<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    private String m_format;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public boolean getFormat__IsNotDefault()<a name="line.84"></a>
+<span class="sourceLineNo">083</span>    private String m_bcv;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    public boolean getBcv__IsNotDefault()<a name="line.84"></a>
 <span class="sourceLineNo">085</span>    {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      return m_format__IsNotDefault;<a name="line.86"></a>
+<span class="sourceLineNo">086</span>      return m_bcv__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    private boolean m_format__IsNotDefault;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    // 21, 1<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public void setFilter(String filter)<a name="line.90"></a>
+<span class="sourceLineNo">088</span>    private boolean m_bcv__IsNotDefault;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    // 23, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setBcn(String bcn)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // 21, 1<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      m_filter = filter;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      m_filter__IsNotDefault = true;<a name="line.94"></a>
+<span class="sourceLineNo">092</span>      // 23, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_bcn = bcn;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_bcn__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getFilter()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getBcn()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_filter;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_bcn;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    private String m_filter;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    public boolean getFilter__IsNotDefault()<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    private String m_bcn;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getBcn__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_filter__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_bcn__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    private boolean m_filter__IsNotDefault;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    // 24, 1<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    public void setBcv(String bcv)<a name="line.107"></a>
+<span class="sourceLineNo">105</span>    private boolean m_bcn__IsNotDefault;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    // 22, 1<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    public void setFormat(String format)<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      // 24, 1<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      m_bcv = bcv;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      m_bcv__IsNotDefault = true;<a name="line.111"></a>
+<span class="sourceLineNo">109</span>      // 22, 1<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      m_format = format;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      m_format__IsNotDefault = true;<a name="line.111"></a>
 <span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public String getBcv()<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    public String getFormat()<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return m_bcv;<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      return m_format;<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    private String m_bcv;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public boolean getBcv__IsNotDefault()<a name="line.118"></a>
+<span class="sourceLineNo">117</span>    private String m_format;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    public boolean getFormat__IsNotDefault()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_bcv__IsNotDefault;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_format__IsNotDefault;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private boolean m_bcv__IsNotDefault;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // 23, 1<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    public void setBcn(String bcn)<a name="line.124"></a>
+<span class="sourceLineNo">122</span>    private boolean m_format__IsNotDefault;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    // 21, 1<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public void setFilter(String filter)<a name="line.124"></a>
 <span class="sourceLineNo">125</span>    {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      // 23, 1<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      m_bcn = bcn;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      m_bcn__IsNotDefault = true;<a name="line.128"></a>
+<span class="sourceLineNo">126</span>      // 21, 1<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      m_filter = filter;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      m_filter__IsNotDefault = true;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    public String getBcn()<a name="line.130"></a>
+<span class="sourceLineNo">130</span>    public String getFilter()<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return m_bcn;<a name="line.132"></a>
+<span class="sourceLineNo">132</span>      return m_filter;<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    private String m_bcn;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getBcn__IsNotDefault()<a name="line.135"></a>
+<span class="sourceLineNo">134</span>    private String m_filter;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    public boolean getFilter__IsNotDefault()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_bcn__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_filter__IsNotDefault;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_bcn__IsNotDefault;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>    private boolean m_filter__IsNotDefault;<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>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.142"></a>
@@ -156,31 +156,31 @@
 <span class="sourceLineNo">148</span>    return (ImplData) super.getImplData();<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>  protected String format;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.152"></a>
+<span class="sourceLineNo">151</span>  protected String bcv;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.152"></a>
 <span class="sourceLineNo">153</span>  {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    (getImplData()).setFormat(p_format);<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    (getImplData()).setBcv(p_bcv);<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    return this;<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>  protected String filter;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.159"></a>
+<span class="sourceLineNo">158</span>  protected String bcn;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setFilter(p_filter);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setBcn(p_bcn);<a name="line.161"></a>
 <span class="sourceLineNo">162</span>    return this;<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>  protected String bcv;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.166"></a>
+<span class="sourceLineNo">165</span>  protected String format;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.166"></a>
 <span class="sourceLineNo">167</span>  {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    (getImplData()).setBcv(p_bcv);<a name="line.168"></a>
+<span class="sourceLineNo">168</span>    (getImplData()).setFormat(p_format);<a name="line.168"></a>
 <span class="sourceLineNo">169</span>    return this;<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>  protected String bcn;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.173"></a>
+<span class="sourceLineNo">172</span>  protected String filter;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    (getImplData()).setBcn(p_bcn);<a name="line.175"></a>
+<span class="sourceLineNo">175</span>    (getImplData()).setFilter(p_filter);<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    return this;<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>


[14/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
index 46c00c7..049b2e1 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
@@ -33,10 +33,10 @@
 <span class="sourceLineNo">025</span>  requiredArguments = {<a name="line.25"></a>
 <span class="sourceLineNo">026</span>    @org.jamon.annotations.Argument(name = "regionServer", type = "HRegionServer")},<a name="line.26"></a>
 <span class="sourceLineNo">027</span>  optionalArguments = {<a name="line.27"></a>
-<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.28"></a>
-<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.29"></a>
-<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.30"></a>
-<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String")})<a name="line.31"></a>
+<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.29"></a>
+<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.30"></a>
+<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.31"></a>
 <span class="sourceLineNo">032</span>public class RSStatusTmpl<a name="line.32"></a>
 <span class="sourceLineNo">033</span>  extends org.jamon.AbstractTemplateProxy<a name="line.33"></a>
 <span class="sourceLineNo">034</span>{<a name="line.34"></a>
@@ -77,74 +77,74 @@
 <span class="sourceLineNo">069</span>      return m_regionServer;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>    }<a name="line.70"></a>
 <span class="sourceLineNo">071</span>    private HRegionServer m_regionServer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    // 22, 1<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    public void setFormat(String format)<a name="line.73"></a>
+<span class="sourceLineNo">072</span>    // 24, 1<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public void setBcv(String bcv)<a name="line.73"></a>
 <span class="sourceLineNo">074</span>    {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      // 22, 1<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      m_format = format;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      m_format__IsNotDefault = true;<a name="line.77"></a>
+<span class="sourceLineNo">075</span>      // 24, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      m_bcv = bcv;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      m_bcv__IsNotDefault = true;<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public String getFormat()<a name="line.79"></a>
+<span class="sourceLineNo">079</span>    public String getBcv()<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return m_format;<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return m_bcv;<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    private String m_format;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public boolean getFormat__IsNotDefault()<a name="line.84"></a>
+<span class="sourceLineNo">083</span>    private String m_bcv;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    public boolean getBcv__IsNotDefault()<a name="line.84"></a>
 <span class="sourceLineNo">085</span>    {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      return m_format__IsNotDefault;<a name="line.86"></a>
+<span class="sourceLineNo">086</span>      return m_bcv__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    private boolean m_format__IsNotDefault;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    // 21, 1<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public void setFilter(String filter)<a name="line.90"></a>
+<span class="sourceLineNo">088</span>    private boolean m_bcv__IsNotDefault;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    // 23, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setBcn(String bcn)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // 21, 1<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      m_filter = filter;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      m_filter__IsNotDefault = true;<a name="line.94"></a>
+<span class="sourceLineNo">092</span>      // 23, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_bcn = bcn;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_bcn__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getFilter()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getBcn()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_filter;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_bcn;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    private String m_filter;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    public boolean getFilter__IsNotDefault()<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    private String m_bcn;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getBcn__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_filter__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_bcn__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    private boolean m_filter__IsNotDefault;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    // 24, 1<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    public void setBcv(String bcv)<a name="line.107"></a>
+<span class="sourceLineNo">105</span>    private boolean m_bcn__IsNotDefault;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    // 22, 1<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    public void setFormat(String format)<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      // 24, 1<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      m_bcv = bcv;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      m_bcv__IsNotDefault = true;<a name="line.111"></a>
+<span class="sourceLineNo">109</span>      // 22, 1<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      m_format = format;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      m_format__IsNotDefault = true;<a name="line.111"></a>
 <span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public String getBcv()<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    public String getFormat()<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return m_bcv;<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      return m_format;<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    private String m_bcv;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public boolean getBcv__IsNotDefault()<a name="line.118"></a>
+<span class="sourceLineNo">117</span>    private String m_format;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    public boolean getFormat__IsNotDefault()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_bcv__IsNotDefault;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_format__IsNotDefault;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private boolean m_bcv__IsNotDefault;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // 23, 1<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    public void setBcn(String bcn)<a name="line.124"></a>
+<span class="sourceLineNo">122</span>    private boolean m_format__IsNotDefault;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    // 21, 1<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public void setFilter(String filter)<a name="line.124"></a>
 <span class="sourceLineNo">125</span>    {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      // 23, 1<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      m_bcn = bcn;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      m_bcn__IsNotDefault = true;<a name="line.128"></a>
+<span class="sourceLineNo">126</span>      // 21, 1<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      m_filter = filter;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      m_filter__IsNotDefault = true;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    public String getBcn()<a name="line.130"></a>
+<span class="sourceLineNo">130</span>    public String getFilter()<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return m_bcn;<a name="line.132"></a>
+<span class="sourceLineNo">132</span>      return m_filter;<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    private String m_bcn;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getBcn__IsNotDefault()<a name="line.135"></a>
+<span class="sourceLineNo">134</span>    private String m_filter;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    public boolean getFilter__IsNotDefault()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_bcn__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_filter__IsNotDefault;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_bcn__IsNotDefault;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>    private boolean m_filter__IsNotDefault;<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>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.142"></a>
@@ -156,31 +156,31 @@
 <span class="sourceLineNo">148</span>    return (ImplData) super.getImplData();<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>  protected String format;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.152"></a>
+<span class="sourceLineNo">151</span>  protected String bcv;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.152"></a>
 <span class="sourceLineNo">153</span>  {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    (getImplData()).setFormat(p_format);<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    (getImplData()).setBcv(p_bcv);<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    return this;<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>  protected String filter;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.159"></a>
+<span class="sourceLineNo">158</span>  protected String bcn;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setFilter(p_filter);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setBcn(p_bcn);<a name="line.161"></a>
 <span class="sourceLineNo">162</span>    return this;<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>  protected String bcv;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.166"></a>
+<span class="sourceLineNo">165</span>  protected String format;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.166"></a>
 <span class="sourceLineNo">167</span>  {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    (getImplData()).setBcv(p_bcv);<a name="line.168"></a>
+<span class="sourceLineNo">168</span>    (getImplData()).setFormat(p_format);<a name="line.168"></a>
 <span class="sourceLineNo">169</span>    return this;<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>  protected String bcn;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.173"></a>
+<span class="sourceLineNo">172</span>  protected String filter;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    (getImplData()).setBcn(p_bcn);<a name="line.175"></a>
+<span class="sourceLineNo">175</span>    (getImplData()).setFilter(p_filter);<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    return this;<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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
index d805108..e4ffa9a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
@@ -34,27 +34,27 @@
 <span class="sourceLineNo">026</span><a name="line.26"></a>
 <span class="sourceLineNo">027</span>{<a name="line.27"></a>
 <span class="sourceLineNo">028</span>  private final HRegionServer regionServer;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>  private final String format;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>  private final String filter;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>  private final String bcv;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>  private final String bcn;<a name="line.32"></a>
+<span class="sourceLineNo">029</span>  private final String bcv;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>  private final String bcn;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>  private final String format;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  private final String filter;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>  protected static org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl.ImplData p_implData)<a name="line.33"></a>
 <span class="sourceLineNo">034</span>  {<a name="line.34"></a>
-<span class="sourceLineNo">035</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.35"></a>
+<span class="sourceLineNo">035</span>    if(! p_implData.getBcv__IsNotDefault())<a name="line.35"></a>
 <span class="sourceLineNo">036</span>    {<a name="line.36"></a>
-<span class="sourceLineNo">037</span>      p_implData.setFormat("html");<a name="line.37"></a>
+<span class="sourceLineNo">037</span>      p_implData.setBcv("");<a name="line.37"></a>
 <span class="sourceLineNo">038</span>    }<a name="line.38"></a>
-<span class="sourceLineNo">039</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.39"></a>
+<span class="sourceLineNo">039</span>    if(! p_implData.getBcn__IsNotDefault())<a name="line.39"></a>
 <span class="sourceLineNo">040</span>    {<a name="line.40"></a>
-<span class="sourceLineNo">041</span>      p_implData.setFilter("general");<a name="line.41"></a>
+<span class="sourceLineNo">041</span>      p_implData.setBcn("");<a name="line.41"></a>
 <span class="sourceLineNo">042</span>    }<a name="line.42"></a>
-<span class="sourceLineNo">043</span>    if(! p_implData.getBcv__IsNotDefault())<a name="line.43"></a>
+<span class="sourceLineNo">043</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.43"></a>
 <span class="sourceLineNo">044</span>    {<a name="line.44"></a>
-<span class="sourceLineNo">045</span>      p_implData.setBcv("");<a name="line.45"></a>
+<span class="sourceLineNo">045</span>      p_implData.setFormat("html");<a name="line.45"></a>
 <span class="sourceLineNo">046</span>    }<a name="line.46"></a>
-<span class="sourceLineNo">047</span>    if(! p_implData.getBcn__IsNotDefault())<a name="line.47"></a>
+<span class="sourceLineNo">047</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.47"></a>
 <span class="sourceLineNo">048</span>    {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>      p_implData.setBcn("");<a name="line.49"></a>
+<span class="sourceLineNo">049</span>      p_implData.setFilter("general");<a name="line.49"></a>
 <span class="sourceLineNo">050</span>    }<a name="line.50"></a>
 <span class="sourceLineNo">051</span>    return p_implData;<a name="line.51"></a>
 <span class="sourceLineNo">052</span>  }<a name="line.52"></a>
@@ -62,10 +62,10 @@
 <span class="sourceLineNo">054</span>  {<a name="line.54"></a>
 <span class="sourceLineNo">055</span>    super(p_templateManager, __jamon_setOptionalArguments(p_implData));<a name="line.55"></a>
 <span class="sourceLineNo">056</span>    regionServer = p_implData.getRegionServer();<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    format = p_implData.getFormat();<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    filter = p_implData.getFilter();<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    bcv = p_implData.getBcv();<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    bcn = p_implData.getBcn();<a name="line.60"></a>
+<span class="sourceLineNo">057</span>    bcv = p_implData.getBcv();<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    bcn = p_implData.getBcn();<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    format = p_implData.getFormat();<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    filter = p_implData.getFilter();<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>  @Override public void renderNoFlush(final java.io.Writer jamonWriter)<a name="line.63"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/distribution-management.html
----------------------------------------------------------------------
diff --git a/distribution-management.html b/distribution-management.html
index 0f3be3b..11f9ec6 100644
--- a/distribution-management.html
+++ b/distribution-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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Distribution Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -290,7 +290,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 3a68b48..189801b 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="20160223" />
+    <meta name="Date-Revision-yyyymmdd" content="20160224" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -330,7 +330,7 @@ for more details.</p>
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-24</li>
             </p>
                 </div>
 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


[28/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/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 d513b63..270312a 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html
@@ -98,12 +98,17 @@
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">ConfigurationObserver</a></dd>
+</dl>
 <hr>
 <br>
 <pre><a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.LimitedPrivate.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.LimitedPrivate</a>(<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.LimitedPrivate.html#value()">value</a>={"Coprocesssor","Phoenix"})
 <a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Evolving.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceStability.Evolving</a>
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.39">SimpleRpcScheduler</a>
-extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">RpcScheduler</a></pre>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.40">SimpleRpcScheduler</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">RpcScheduler</a>
+implements <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">ConfigurationObserver</a></pre>
 <div class="block">A scheduler that maintains isolated handler pools for general,
  high-priority, and replication requests.</div>
 </li>
@@ -302,11 +307,17 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#onConfigurationChange(org.apache.hadoop.conf.Configuration)">onConfigurationChange</a></strong>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
+<div class="block">Resize call queues;</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#start()">start</a></strong>()</code>
 <div class="block">Prepares for request serving.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#stop()">stop</a></strong>()</code>
 <div class="block">Stops serving new requests.</div>
@@ -340,7 +351,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.40">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.41">LOG</a></pre>
 </li>
 </ul>
 <a name="CALL_QUEUE_READ_SHARE_CONF_KEY">
@@ -349,7 +360,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>CALL_QUEUE_READ_SHARE_CONF_KEY</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/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/SimpleRpcScheduler.html#line.42">CALL_QUEUE_READ_SHARE_CONF_KEY</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/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/SimpleRpcScheduler.html#line.43">CALL_QUEUE_READ_SHARE_CONF_KEY</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.CALL_QUEUE_READ_SHARE_CONF_KEY">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -359,7 +370,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>CALL_QUEUE_SCAN_SHARE_CONF_KEY</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/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/SimpleRpcScheduler.html#line.44">CALL_QUEUE_SCAN_SHARE_CONF_KEY</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/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/SimpleRpcScheduler.html#line.45">CALL_QUEUE_SCAN_SHARE_CONF_KEY</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.CALL_QUEUE_SCAN_SHARE_CONF_KEY">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -369,7 +380,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>CALL_QUEUE_HANDLER_FACTOR_CONF_KEY</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/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/SimpleRpcScheduler.html#line.46">CALL_QUEUE_HANDLER_FACTOR_CONF_KEY</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/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/SimpleRpcScheduler.html#line.47">CALL_QUEUE_HANDLER_FACTOR_CONF_KEY</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.CALL_QUEUE_HANDLER_FACTOR_CONF_KEY">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -379,7 +390,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>CALL_QUEUE_TYPE_CONF_KEY</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/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/SimpleRpcScheduler.html#line.50">CALL_QUEUE_TYPE_CONF_KEY</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/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/SimpleRpcScheduler.html#line.51">CALL_QUEUE_TYPE_CONF_KEY</a></pre>
 <div class="block">If set to 'deadline', uses a priority queue and deprioritize long-running scans</div>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.CALL_QUEUE_TYPE_CONF_KEY">Constant Field Values</a></dd></dl>
 </li>
@@ -390,7 +401,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/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/SimpleRpcScheduler.html#line.51">CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/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/SimpleRpcScheduler.html#line.52">CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -400,7 +411,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>CALL_QUEUE_TYPE_FIFO_CONF_VALUE</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/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/SimpleRpcScheduler.html#line.52">CALL_QUEUE_TYPE_FIFO_CONF_VALUE</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/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/SimpleRpcScheduler.html#line.53">CALL_QUEUE_TYPE_FIFO_CONF_VALUE</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.CALL_QUEUE_TYPE_FIFO_CONF_VALUE">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -410,7 +421,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>QUEUE_MAX_CALL_DELAY_CONF_KEY</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/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/SimpleRpcScheduler.html#line.55">QUEUE_MAX_CALL_DELAY_CONF_KEY</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/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/SimpleRpcScheduler.html#line.56">QUEUE_MAX_CALL_DELAY_CONF_KEY</a></pre>
 <div class="block">max delay in msec used to bound the deprioritized requests</div>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.QUEUE_MAX_CALL_DELAY_CONF_KEY">Constant Field Values</a></dd></dl>
 </li>
@@ -421,7 +432,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>port</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.88">port</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.104">port</a></pre>
 </li>
 </ul>
 <a name="priority">
@@ -430,7 +441,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>priority</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/PriorityFunction.html" title="interface in org.apache.hadoop.hbase.ipc">PriorityFunction</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.89">priority</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/PriorityFunction.html" title="interface in org.apache.hadoop.hbase.ipc">PriorityFunction</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.105">priority</a></pre>
 </li>
 </ul>
 <a name="callExecutor">
@@ -439,7 +450,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>callExecutor</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.90">callExecutor</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.106">callExecutor</a></pre>
 </li>
 </ul>
 <a name="priorityExecutor">
@@ -448,7 +459,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>priorityExecutor</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.91">priorityExecutor</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.107">priorityExecutor</a></pre>
 </li>
 </ul>
 <a name="replicationExecutor">
@@ -457,7 +468,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationExecutor</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.92">replicationExecutor</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcExecutor.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.108">replicationExecutor</a></pre>
 </li>
 </ul>
 <a name="highPriorityLevel">
@@ -466,7 +477,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>highPriorityLevel</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.95">highPriorityLevel</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.111">highPriorityLevel</a></pre>
 <div class="block">What level a high priority call is at.</div>
 </li>
 </ul>
@@ -476,7 +487,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockListLast">
 <li class="blockList">
 <h4>abortable</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.97">abortable</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.113">abortable</a></pre>
 </li>
 </ul>
 </li>
@@ -493,7 +504,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>SimpleRpcScheduler</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.107">SimpleRpcScheduler</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.123">SimpleRpcScheduler</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                   int&nbsp;handlerCount,
                   int&nbsp;priorityHandlerCount,
                   int&nbsp;replicationHandlerCount,
@@ -509,7 +520,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SimpleRpcScheduler</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.162">SimpleRpcScheduler</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.178">SimpleRpcScheduler</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                   int&nbsp;handlerCount,
                   int&nbsp;priorityHandlerCount,
                   int&nbsp;replicationHandlerCount,
@@ -525,13 +536,27 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <!--   -->
 </a>
 <h3>Method Detail</h3>
+<a name="onConfigurationChange(org.apache.hadoop.conf.Configuration)">
+<!--   -->
+</a>
+<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.64">onConfigurationChange</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<div class="block">Resize call queues;</div>
+<dl>
+<dt><strong>Specified by:</strong></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html#onConfigurationChange(org.apache.hadoop.conf.Configuration)">onConfigurationChange</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">ConfigurationObserver</a></code></dd>
+<dt><span class="strong">Parameters:</span></dt><dd><code>conf</code> - new configuration</dd></dl>
+</li>
+</ul>
 <a name="init(org.apache.hadoop.hbase.ipc.RpcScheduler.Context)">
 <!--   -->
 </a>
 <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.174">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.190">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"><strong>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></strong></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>
@@ -547,7 +572,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <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.179">start</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.195">start</a>()</pre>
 <div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#start()">RpcScheduler</a></code></strong></div>
 <div class="block">Prepares for request serving. An implementation may start some handler threads here.</div>
 <dl>
@@ -562,7 +587,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <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.186">stop</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.202">stop</a>()</pre>
 <div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#stop()">RpcScheduler</a></code></strong></div>
 <div class="block">Stops serving new requests.</div>
 <dl>
@@ -577,7 +602,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <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.193">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.209">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="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block"><strong>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></strong></div>
 <div class="block">Dispatches an RPC request asynchronously. An implementation is free to choose to process the
@@ -596,7 +621,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <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.206">getGeneralQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.222">getGeneralQueueLength</a>()</pre>
 <div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getGeneralQueueLength()">RpcScheduler</a></code></strong></div>
 <div class="block">Retrieves length of the general queue for metrics.</div>
 <dl>
@@ -611,7 +636,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <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.211">getPriorityQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.227">getPriorityQueueLength</a>()</pre>
 <div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getPriorityQueueLength()">RpcScheduler</a></code></strong></div>
 <div class="block">Retrieves length of the priority queue for metrics.</div>
 <dl>
@@ -626,7 +651,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <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.216">getReplicationQueueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.232">getReplicationQueueLength</a>()</pre>
 <div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getReplicationQueueLength()">RpcScheduler</a></code></strong></div>
 <div class="block">Retrieves length of the replication queue for metrics.</div>
 <dl>
@@ -641,7 +666,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" t
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getActiveRpcHandlerCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.221">getActiveRpcHandlerCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html#line.237">getActiveRpcHandlerCount</a>()</pre>
 <div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html#getActiveRpcHandlerCount()">RpcScheduler</a></code></strong></div>
 <div class="block">Retrieves the number of active handler.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/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 4306cd7..e657135 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -144,7 +144,7 @@
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc"><span class="strong">RpcScheduler</span></a>
 <ul>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/FifoRpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc"><span class="strong">FifoRpcScheduler</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc"><span class="strong">SimpleRpcScheduler</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc"><span class="strong">SimpleRpcScheduler</span></a> (implements org.apache.hadoop.hbase.conf.<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">ConfigurationObserver</a>)</li>
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.Context.html" title="class in org.apache.hadoop.hbase.ipc"><span class="strong">RpcScheduler.Context</span></a>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
index 9548d85..3a094f9 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
@@ -176,8 +176,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="strong">BaseLoadBalancer.Cluster.Action.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/FavoredNodesPlan.Position.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="strong">FavoredNodesPlan.Position</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="strong">BaseLoadBalancer.Cluster.Action.Type</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/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 982d772..33770c8 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -361,14 +361,14 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/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/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="strong">HConstants.OperationStatusCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.Modify.html" title="enum in org.apache.hadoop.hbase"><span class="strong">HConstants.Modify</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="strong">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="strong">KeyValue.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="strong">MetaTableAccessor.QueryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="strong">KeepDeletedCells</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.Modify.html" title="enum in org.apache.hadoop.hbase"><span class="strong">HConstants.Modify</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="strong">HealthChecker.HealthCheckerExitStatus</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="strong">CompatibilitySingletonFactory.SingletonStorage</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="strong">HConstants.OperationStatusCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="strong">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="strong">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="strong">MetaTableAccessor.QueryType</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/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 7e08554..93b250a 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -173,9 +173,9 @@
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/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/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">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="strong">ThrottleType</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="strong">QuotaScope</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="strong">ThrottlingException.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">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="strong">QuotaType</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/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 3d37b20..7db4033 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -629,24 +629,24 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/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/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">ScanType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionOpeningState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">RegionOpeningState</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="strong">DefaultHeapMemoryTuner.StepDirection</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="strong">ScannerContext.NextState</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="strong">Region.Operation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DeleteTracker.DeleteCompare.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">DeleteTracker.DeleteCompare</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">Region.FlushResult.Result</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">ScanQueryMatcher.MatchCode</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="strong">ScannerContext.LimitScope</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreScanner.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">MemStoreScanner.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">DeleteTracker.DeleteResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.StoreScannerCompactionRace.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">StoreScanner.StoreScannerCompactionRace</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="strong">FlushType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreScanner.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">MemStoreScanner.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitTransaction.SplitTransactionPhase.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">SplitTransaction.SplitTransactionPhase</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="strong">SplitLogWorker.TaskExecutor.Status</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionOpeningState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">RegionOpeningState</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="strong">ScannerContext.LimitScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">Region.FlushResult.Result</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">ScanQueryMatcher.MatchCode</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="strong">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitTransaction.SplitTransactionPhase.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">SplitTransaction.SplitTransactionPhase</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="strong">BloomType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionMergeTransaction.RegionMergeTransactionPhase.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">RegionMergeTransaction.RegionMergeTransactionPhase</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="strong">Region.Operation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">DeleteTracker.DeleteResult</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="strong">DefaultHeapMemoryTuner.StepDirection</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="strong">ScannerContext.NextState</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="strong">ScanType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">FlushType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
index 86e9213..6b02ffe 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -140,8 +140,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="strong">AccessController.OpType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="strong">Permission.Action</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="strong">AccessController.OpType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="strong">AccessControlFilter.Strategy</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
index 86f4d59..63a2b08 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -152,9 +152,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="strong">AuthMethod</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslStatus.html" title="enum in org.apache.hadoop.hbase.security"><span class="strong">SaslStatus</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security"><span class="strong">SaslUtil.QualityOfProtection</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslStatus.html" title="enum in org.apache.hadoop.hbase.security"><span class="strong">SaslStatus</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="strong">AuthMethod</span></a></li>
 </ul>
 </li>
 </ul>


[24/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.BlockingServiceAndInterface.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.BlockingServiceAndInterface.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.BlockingServiceAndInterface.html
index e5d9af6..ea9ea4d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.BlockingServiceAndInterface.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.BlockingServiceAndInterface.html
@@ -2107,556 +2107,559 @@
 <span class="sourceLineNo">2099</span>  @Override<a name="line.2099"></a>
 <span class="sourceLineNo">2100</span>  public void onConfigurationChange(Configuration newConf) {<a name="line.2100"></a>
 <span class="sourceLineNo">2101</span>    initReconfigurable(newConf);<a name="line.2101"></a>
-<span class="sourceLineNo">2102</span>  }<a name="line.2102"></a>
-<span class="sourceLineNo">2103</span><a name="line.2103"></a>
-<span class="sourceLineNo">2104</span>  private void initReconfigurable(Configuration confToLoad) {<a name="line.2104"></a>
-<span class="sourceLineNo">2105</span>    this.allowFallbackToSimpleAuth = confToLoad.getBoolean(FALLBACK_TO_INSECURE_CLIENT_AUTH, false);<a name="line.2105"></a>
-<span class="sourceLineNo">2106</span>    if (isSecurityEnabled &amp;&amp; allowFallbackToSimpleAuth) {<a name="line.2106"></a>
-<span class="sourceLineNo">2107</span>      LOG.warn("********* WARNING! *********");<a name="line.2107"></a>
-<span class="sourceLineNo">2108</span>      LOG.warn("This server is configured to allow connections from INSECURE clients");<a name="line.2108"></a>
-<span class="sourceLineNo">2109</span>      LOG.warn("(" + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = true).");<a name="line.2109"></a>
-<span class="sourceLineNo">2110</span>      LOG.warn("While this option is enabled, client identities cannot be secured, and user");<a name="line.2110"></a>
-<span class="sourceLineNo">2111</span>      LOG.warn("impersonation is possible!");<a name="line.2111"></a>
-<span class="sourceLineNo">2112</span>      LOG.warn("For secure operation, please disable SIMPLE authentication as soon as possible,");<a name="line.2112"></a>
-<span class="sourceLineNo">2113</span>      LOG.warn("by setting " + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = false in hbase-site.xml");<a name="line.2113"></a>
-<span class="sourceLineNo">2114</span>      LOG.warn("****************************");<a name="line.2114"></a>
-<span class="sourceLineNo">2115</span>    }<a name="line.2115"></a>
-<span class="sourceLineNo">2116</span>  }<a name="line.2116"></a>
-<span class="sourceLineNo">2117</span><a name="line.2117"></a>
-<span class="sourceLineNo">2118</span>  /**<a name="line.2118"></a>
-<span class="sourceLineNo">2119</span>   * Subclasses of HBaseServer can override this to provide their own<a name="line.2119"></a>
-<span class="sourceLineNo">2120</span>   * Connection implementations.<a name="line.2120"></a>
-<span class="sourceLineNo">2121</span>   */<a name="line.2121"></a>
-<span class="sourceLineNo">2122</span>  protected Connection getConnection(SocketChannel channel, long time) {<a name="line.2122"></a>
-<span class="sourceLineNo">2123</span>    return new Connection(channel, time);<a name="line.2123"></a>
-<span class="sourceLineNo">2124</span>  }<a name="line.2124"></a>
-<span class="sourceLineNo">2125</span><a name="line.2125"></a>
-<span class="sourceLineNo">2126</span>  /**<a name="line.2126"></a>
-<span class="sourceLineNo">2127</span>   * Setup response for the RPC Call.<a name="line.2127"></a>
-<span class="sourceLineNo">2128</span>   *<a name="line.2128"></a>
-<span class="sourceLineNo">2129</span>   * @param response buffer to serialize the response into<a name="line.2129"></a>
-<span class="sourceLineNo">2130</span>   * @param call {@link Call} to which we are setting up the response<a name="line.2130"></a>
-<span class="sourceLineNo">2131</span>   * @param error error message, if the call failed<a name="line.2131"></a>
-<span class="sourceLineNo">2132</span>   * @throws IOException<a name="line.2132"></a>
-<span class="sourceLineNo">2133</span>   */<a name="line.2133"></a>
-<span class="sourceLineNo">2134</span>  private void setupResponse(ByteArrayOutputStream response, Call call, Throwable t, String error)<a name="line.2134"></a>
-<span class="sourceLineNo">2135</span>  throws IOException {<a name="line.2135"></a>
-<span class="sourceLineNo">2136</span>    if (response != null) response.reset();<a name="line.2136"></a>
-<span class="sourceLineNo">2137</span>    call.setResponse(null, null, t, error);<a name="line.2137"></a>
-<span class="sourceLineNo">2138</span>  }<a name="line.2138"></a>
-<span class="sourceLineNo">2139</span><a name="line.2139"></a>
-<span class="sourceLineNo">2140</span>  protected void closeConnection(Connection connection) {<a name="line.2140"></a>
-<span class="sourceLineNo">2141</span>    synchronized (connectionList) {<a name="line.2141"></a>
-<span class="sourceLineNo">2142</span>      if (connectionList.remove(connection)) {<a name="line.2142"></a>
-<span class="sourceLineNo">2143</span>        numConnections--;<a name="line.2143"></a>
-<span class="sourceLineNo">2144</span>      }<a name="line.2144"></a>
-<span class="sourceLineNo">2145</span>    }<a name="line.2145"></a>
-<span class="sourceLineNo">2146</span>    connection.close();<a name="line.2146"></a>
-<span class="sourceLineNo">2147</span>  }<a name="line.2147"></a>
-<span class="sourceLineNo">2148</span><a name="line.2148"></a>
-<span class="sourceLineNo">2149</span>  Configuration getConf() {<a name="line.2149"></a>
-<span class="sourceLineNo">2150</span>    return conf;<a name="line.2150"></a>
-<span class="sourceLineNo">2151</span>  }<a name="line.2151"></a>
-<span class="sourceLineNo">2152</span><a name="line.2152"></a>
-<span class="sourceLineNo">2153</span>  /** Sets the socket buffer size used for responding to RPCs.<a name="line.2153"></a>
-<span class="sourceLineNo">2154</span>   * @param size send size<a name="line.2154"></a>
-<span class="sourceLineNo">2155</span>   */<a name="line.2155"></a>
-<span class="sourceLineNo">2156</span>  @Override<a name="line.2156"></a>
-<span class="sourceLineNo">2157</span>  public void setSocketSendBufSize(int size) { this.socketSendBufferSize = size; }<a name="line.2157"></a>
-<span class="sourceLineNo">2158</span><a name="line.2158"></a>
+<span class="sourceLineNo">2102</span>    if (scheduler instanceof ConfigurationObserver) {<a name="line.2102"></a>
+<span class="sourceLineNo">2103</span>      ((ConfigurationObserver)scheduler).onConfigurationChange(newConf);<a name="line.2103"></a>
+<span class="sourceLineNo">2104</span>    }<a name="line.2104"></a>
+<span class="sourceLineNo">2105</span>  }<a name="line.2105"></a>
+<span class="sourceLineNo">2106</span><a name="line.2106"></a>
+<span class="sourceLineNo">2107</span>  private void initReconfigurable(Configuration confToLoad) {<a name="line.2107"></a>
+<span class="sourceLineNo">2108</span>    this.allowFallbackToSimpleAuth = confToLoad.getBoolean(FALLBACK_TO_INSECURE_CLIENT_AUTH, false);<a name="line.2108"></a>
+<span class="sourceLineNo">2109</span>    if (isSecurityEnabled &amp;&amp; allowFallbackToSimpleAuth) {<a name="line.2109"></a>
+<span class="sourceLineNo">2110</span>      LOG.warn("********* WARNING! *********");<a name="line.2110"></a>
+<span class="sourceLineNo">2111</span>      LOG.warn("This server is configured to allow connections from INSECURE clients");<a name="line.2111"></a>
+<span class="sourceLineNo">2112</span>      LOG.warn("(" + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = true).");<a name="line.2112"></a>
+<span class="sourceLineNo">2113</span>      LOG.warn("While this option is enabled, client identities cannot be secured, and user");<a name="line.2113"></a>
+<span class="sourceLineNo">2114</span>      LOG.warn("impersonation is possible!");<a name="line.2114"></a>
+<span class="sourceLineNo">2115</span>      LOG.warn("For secure operation, please disable SIMPLE authentication as soon as possible,");<a name="line.2115"></a>
+<span class="sourceLineNo">2116</span>      LOG.warn("by setting " + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = false in hbase-site.xml");<a name="line.2116"></a>
+<span class="sourceLineNo">2117</span>      LOG.warn("****************************");<a name="line.2117"></a>
+<span class="sourceLineNo">2118</span>    }<a name="line.2118"></a>
+<span class="sourceLineNo">2119</span>  }<a name="line.2119"></a>
+<span class="sourceLineNo">2120</span><a name="line.2120"></a>
+<span class="sourceLineNo">2121</span>  /**<a name="line.2121"></a>
+<span class="sourceLineNo">2122</span>   * Subclasses of HBaseServer can override this to provide their own<a name="line.2122"></a>
+<span class="sourceLineNo">2123</span>   * Connection implementations.<a name="line.2123"></a>
+<span class="sourceLineNo">2124</span>   */<a name="line.2124"></a>
+<span class="sourceLineNo">2125</span>  protected Connection getConnection(SocketChannel channel, long time) {<a name="line.2125"></a>
+<span class="sourceLineNo">2126</span>    return new Connection(channel, time);<a name="line.2126"></a>
+<span class="sourceLineNo">2127</span>  }<a name="line.2127"></a>
+<span class="sourceLineNo">2128</span><a name="line.2128"></a>
+<span class="sourceLineNo">2129</span>  /**<a name="line.2129"></a>
+<span class="sourceLineNo">2130</span>   * Setup response for the RPC Call.<a name="line.2130"></a>
+<span class="sourceLineNo">2131</span>   *<a name="line.2131"></a>
+<span class="sourceLineNo">2132</span>   * @param response buffer to serialize the response into<a name="line.2132"></a>
+<span class="sourceLineNo">2133</span>   * @param call {@link Call} to which we are setting up the response<a name="line.2133"></a>
+<span class="sourceLineNo">2134</span>   * @param error error message, if the call failed<a name="line.2134"></a>
+<span class="sourceLineNo">2135</span>   * @throws IOException<a name="line.2135"></a>
+<span class="sourceLineNo">2136</span>   */<a name="line.2136"></a>
+<span class="sourceLineNo">2137</span>  private void setupResponse(ByteArrayOutputStream response, Call call, Throwable t, String error)<a name="line.2137"></a>
+<span class="sourceLineNo">2138</span>  throws IOException {<a name="line.2138"></a>
+<span class="sourceLineNo">2139</span>    if (response != null) response.reset();<a name="line.2139"></a>
+<span class="sourceLineNo">2140</span>    call.setResponse(null, null, t, error);<a name="line.2140"></a>
+<span class="sourceLineNo">2141</span>  }<a name="line.2141"></a>
+<span class="sourceLineNo">2142</span><a name="line.2142"></a>
+<span class="sourceLineNo">2143</span>  protected void closeConnection(Connection connection) {<a name="line.2143"></a>
+<span class="sourceLineNo">2144</span>    synchronized (connectionList) {<a name="line.2144"></a>
+<span class="sourceLineNo">2145</span>      if (connectionList.remove(connection)) {<a name="line.2145"></a>
+<span class="sourceLineNo">2146</span>        numConnections--;<a name="line.2146"></a>
+<span class="sourceLineNo">2147</span>      }<a name="line.2147"></a>
+<span class="sourceLineNo">2148</span>    }<a name="line.2148"></a>
+<span class="sourceLineNo">2149</span>    connection.close();<a name="line.2149"></a>
+<span class="sourceLineNo">2150</span>  }<a name="line.2150"></a>
+<span class="sourceLineNo">2151</span><a name="line.2151"></a>
+<span class="sourceLineNo">2152</span>  Configuration getConf() {<a name="line.2152"></a>
+<span class="sourceLineNo">2153</span>    return conf;<a name="line.2153"></a>
+<span class="sourceLineNo">2154</span>  }<a name="line.2154"></a>
+<span class="sourceLineNo">2155</span><a name="line.2155"></a>
+<span class="sourceLineNo">2156</span>  /** Sets the socket buffer size used for responding to RPCs.<a name="line.2156"></a>
+<span class="sourceLineNo">2157</span>   * @param size send size<a name="line.2157"></a>
+<span class="sourceLineNo">2158</span>   */<a name="line.2158"></a>
 <span class="sourceLineNo">2159</span>  @Override<a name="line.2159"></a>
-<span class="sourceLineNo">2160</span>  public boolean isStarted() {<a name="line.2160"></a>
-<span class="sourceLineNo">2161</span>    return this.started;<a name="line.2161"></a>
-<span class="sourceLineNo">2162</span>  }<a name="line.2162"></a>
-<span class="sourceLineNo">2163</span><a name="line.2163"></a>
-<span class="sourceLineNo">2164</span>  /** Starts the service.  Must be called before any calls will be handled. */<a name="line.2164"></a>
-<span class="sourceLineNo">2165</span>  @Override<a name="line.2165"></a>
-<span class="sourceLineNo">2166</span>  public synchronized void start() {<a name="line.2166"></a>
-<span class="sourceLineNo">2167</span>    if (started) return;<a name="line.2167"></a>
-<span class="sourceLineNo">2168</span>    authTokenSecretMgr = createSecretManager();<a name="line.2168"></a>
-<span class="sourceLineNo">2169</span>    if (authTokenSecretMgr != null) {<a name="line.2169"></a>
-<span class="sourceLineNo">2170</span>      setSecretManager(authTokenSecretMgr);<a name="line.2170"></a>
-<span class="sourceLineNo">2171</span>      authTokenSecretMgr.start();<a name="line.2171"></a>
-<span class="sourceLineNo">2172</span>    }<a name="line.2172"></a>
-<span class="sourceLineNo">2173</span>    this.authManager = new ServiceAuthorizationManager();<a name="line.2173"></a>
-<span class="sourceLineNo">2174</span>    HBasePolicyProvider.init(conf, authManager);<a name="line.2174"></a>
-<span class="sourceLineNo">2175</span>    responder.start();<a name="line.2175"></a>
-<span class="sourceLineNo">2176</span>    listener.start();<a name="line.2176"></a>
-<span class="sourceLineNo">2177</span>    scheduler.start();<a name="line.2177"></a>
-<span class="sourceLineNo">2178</span>    started = true;<a name="line.2178"></a>
-<span class="sourceLineNo">2179</span>  }<a name="line.2179"></a>
-<span class="sourceLineNo">2180</span><a name="line.2180"></a>
-<span class="sourceLineNo">2181</span>  @Override<a name="line.2181"></a>
-<span class="sourceLineNo">2182</span>  public synchronized void refreshAuthManager(PolicyProvider pp) {<a name="line.2182"></a>
-<span class="sourceLineNo">2183</span>    // Ignore warnings that this should be accessed in a static way instead of via an instance;<a name="line.2183"></a>
-<span class="sourceLineNo">2184</span>    // it'll break if you go via static route.<a name="line.2184"></a>
-<span class="sourceLineNo">2185</span>    this.authManager.refresh(this.conf, pp);<a name="line.2185"></a>
-<span class="sourceLineNo">2186</span>  }<a name="line.2186"></a>
-<span class="sourceLineNo">2187</span><a name="line.2187"></a>
-<span class="sourceLineNo">2188</span>  private AuthenticationTokenSecretManager createSecretManager() {<a name="line.2188"></a>
-<span class="sourceLineNo">2189</span>    if (!isSecurityEnabled) return null;<a name="line.2189"></a>
-<span class="sourceLineNo">2190</span>    if (server == null) return null;<a name="line.2190"></a>
-<span class="sourceLineNo">2191</span>    Configuration conf = server.getConfiguration();<a name="line.2191"></a>
-<span class="sourceLineNo">2192</span>    long keyUpdateInterval =<a name="line.2192"></a>
-<span class="sourceLineNo">2193</span>        conf.getLong("hbase.auth.key.update.interval", 24*60*60*1000);<a name="line.2193"></a>
-<span class="sourceLineNo">2194</span>    long maxAge =<a name="line.2194"></a>
-<span class="sourceLineNo">2195</span>        conf.getLong("hbase.auth.token.max.lifetime", 7*24*60*60*1000);<a name="line.2195"></a>
-<span class="sourceLineNo">2196</span>    return new AuthenticationTokenSecretManager(conf, server.getZooKeeper(),<a name="line.2196"></a>
-<span class="sourceLineNo">2197</span>        server.getServerName().toString(), keyUpdateInterval, maxAge);<a name="line.2197"></a>
-<span class="sourceLineNo">2198</span>  }<a name="line.2198"></a>
-<span class="sourceLineNo">2199</span><a name="line.2199"></a>
-<span class="sourceLineNo">2200</span>  public SecretManager&lt;? extends TokenIdentifier&gt; getSecretManager() {<a name="line.2200"></a>
-<span class="sourceLineNo">2201</span>    return this.secretManager;<a name="line.2201"></a>
-<span class="sourceLineNo">2202</span>  }<a name="line.2202"></a>
-<span class="sourceLineNo">2203</span><a name="line.2203"></a>
-<span class="sourceLineNo">2204</span>  @SuppressWarnings("unchecked")<a name="line.2204"></a>
-<span class="sourceLineNo">2205</span>  public void setSecretManager(SecretManager&lt;? extends TokenIdentifier&gt; secretManager) {<a name="line.2205"></a>
-<span class="sourceLineNo">2206</span>    this.secretManager = (SecretManager&lt;TokenIdentifier&gt;) secretManager;<a name="line.2206"></a>
-<span class="sourceLineNo">2207</span>  }<a name="line.2207"></a>
-<span class="sourceLineNo">2208</span><a name="line.2208"></a>
-<span class="sourceLineNo">2209</span>  /**<a name="line.2209"></a>
-<span class="sourceLineNo">2210</span>   * This is a server side method, which is invoked over RPC. On success<a name="line.2210"></a>
-<span class="sourceLineNo">2211</span>   * the return response has protobuf response payload. On failure, the<a name="line.2211"></a>
-<span class="sourceLineNo">2212</span>   * exception name and the stack trace are returned in the protobuf response.<a name="line.2212"></a>
-<span class="sourceLineNo">2213</span>   */<a name="line.2213"></a>
-<span class="sourceLineNo">2214</span>  @Override<a name="line.2214"></a>
-<span class="sourceLineNo">2215</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,<a name="line.2215"></a>
-<span class="sourceLineNo">2216</span>      Message param, CellScanner cellScanner, long receiveTime, MonitoredRPCHandler status)<a name="line.2216"></a>
-<span class="sourceLineNo">2217</span>  throws IOException {<a name="line.2217"></a>
-<span class="sourceLineNo">2218</span>    try {<a name="line.2218"></a>
-<span class="sourceLineNo">2219</span>      status.setRPC(md.getName(), new Object[]{param}, receiveTime);<a name="line.2219"></a>
-<span class="sourceLineNo">2220</span>      // TODO: Review after we add in encoded data blocks.<a name="line.2220"></a>
-<span class="sourceLineNo">2221</span>      status.setRPCPacket(param);<a name="line.2221"></a>
-<span class="sourceLineNo">2222</span>      status.resume("Servicing call");<a name="line.2222"></a>
-<span class="sourceLineNo">2223</span>      //get an instance of the method arg type<a name="line.2223"></a>
-<span class="sourceLineNo">2224</span>      long startTime = System.currentTimeMillis();<a name="line.2224"></a>
-<span class="sourceLineNo">2225</span>      PayloadCarryingRpcController controller = new PayloadCarryingRpcController(cellScanner);<a name="line.2225"></a>
-<span class="sourceLineNo">2226</span>      Message result = service.callBlockingMethod(md, controller, param);<a name="line.2226"></a>
-<span class="sourceLineNo">2227</span>      long endTime = System.currentTimeMillis();<a name="line.2227"></a>
-<span class="sourceLineNo">2228</span>      int processingTime = (int) (endTime - startTime);<a name="line.2228"></a>
-<span class="sourceLineNo">2229</span>      int qTime = (int) (startTime - receiveTime);<a name="line.2229"></a>
-<span class="sourceLineNo">2230</span>      int totalTime = (int) (endTime - receiveTime);<a name="line.2230"></a>
-<span class="sourceLineNo">2231</span>      if (LOG.isTraceEnabled()) {<a name="line.2231"></a>
-<span class="sourceLineNo">2232</span>        LOG.trace(CurCall.get().toString() +<a name="line.2232"></a>
-<span class="sourceLineNo">2233</span>            ", response " + TextFormat.shortDebugString(result) +<a name="line.2233"></a>
-<span class="sourceLineNo">2234</span>            " queueTime: " + qTime +<a name="line.2234"></a>
-<span class="sourceLineNo">2235</span>            " processingTime: " + processingTime +<a name="line.2235"></a>
-<span class="sourceLineNo">2236</span>            " totalTime: " + totalTime);<a name="line.2236"></a>
-<span class="sourceLineNo">2237</span>      }<a name="line.2237"></a>
-<span class="sourceLineNo">2238</span>      long requestSize = param.getSerializedSize();<a name="line.2238"></a>
-<span class="sourceLineNo">2239</span>      long responseSize = result.getSerializedSize();<a name="line.2239"></a>
-<span class="sourceLineNo">2240</span>      metrics.dequeuedCall(qTime);<a name="line.2240"></a>
-<span class="sourceLineNo">2241</span>      metrics.processedCall(processingTime);<a name="line.2241"></a>
-<span class="sourceLineNo">2242</span>      metrics.totalCall(totalTime);<a name="line.2242"></a>
-<span class="sourceLineNo">2243</span>      metrics.receivedRequest(requestSize);<a name="line.2243"></a>
-<span class="sourceLineNo">2244</span>      metrics.sentResponse(responseSize);<a name="line.2244"></a>
-<span class="sourceLineNo">2245</span>      // log any RPC responses that are slower than the configured warn<a name="line.2245"></a>
-<span class="sourceLineNo">2246</span>      // response time or larger than configured warning size<a name="line.2246"></a>
-<span class="sourceLineNo">2247</span>      boolean tooSlow = (processingTime &gt; warnResponseTime &amp;&amp; warnResponseTime &gt; -1);<a name="line.2247"></a>
-<span class="sourceLineNo">2248</span>      boolean tooLarge = (responseSize &gt; warnResponseSize &amp;&amp; warnResponseSize &gt; -1);<a name="line.2248"></a>
-<span class="sourceLineNo">2249</span>      if (tooSlow || tooLarge) {<a name="line.2249"></a>
-<span class="sourceLineNo">2250</span>        // when tagging, we let TooLarge trump TooSmall to keep output simple<a name="line.2250"></a>
-<span class="sourceLineNo">2251</span>        // note that large responses will often also be slow.<a name="line.2251"></a>
-<span class="sourceLineNo">2252</span>        logResponse(new Object[]{param},<a name="line.2252"></a>
-<span class="sourceLineNo">2253</span>            md.getName(), md.getName() + "(" + param.getClass().getName() + ")",<a name="line.2253"></a>
-<span class="sourceLineNo">2254</span>            (tooLarge ? "TooLarge" : "TooSlow"),<a name="line.2254"></a>
-<span class="sourceLineNo">2255</span>            status.getClient(), startTime, processingTime, qTime,<a name="line.2255"></a>
-<span class="sourceLineNo">2256</span>            responseSize);<a name="line.2256"></a>
-<span class="sourceLineNo">2257</span>      }<a name="line.2257"></a>
-<span class="sourceLineNo">2258</span>      return new Pair&lt;Message, CellScanner&gt;(result, controller.cellScanner());<a name="line.2258"></a>
-<span class="sourceLineNo">2259</span>    } catch (Throwable e) {<a name="line.2259"></a>
-<span class="sourceLineNo">2260</span>      // The above callBlockingMethod will always return a SE.  Strip the SE wrapper before<a name="line.2260"></a>
-<span class="sourceLineNo">2261</span>      // putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't<a name="line.2261"></a>
-<span class="sourceLineNo">2262</span>      // need to pass it over the wire.<a name="line.2262"></a>
-<span class="sourceLineNo">2263</span>      if (e instanceof ServiceException) e = e.getCause();<a name="line.2263"></a>
-<span class="sourceLineNo">2264</span><a name="line.2264"></a>
-<span class="sourceLineNo">2265</span>      // increment the number of requests that were exceptions.<a name="line.2265"></a>
-<span class="sourceLineNo">2266</span>      metrics.exception(e);<a name="line.2266"></a>
+<span class="sourceLineNo">2160</span>  public void setSocketSendBufSize(int size) { this.socketSendBufferSize = size; }<a name="line.2160"></a>
+<span class="sourceLineNo">2161</span><a name="line.2161"></a>
+<span class="sourceLineNo">2162</span>  @Override<a name="line.2162"></a>
+<span class="sourceLineNo">2163</span>  public boolean isStarted() {<a name="line.2163"></a>
+<span class="sourceLineNo">2164</span>    return this.started;<a name="line.2164"></a>
+<span class="sourceLineNo">2165</span>  }<a name="line.2165"></a>
+<span class="sourceLineNo">2166</span><a name="line.2166"></a>
+<span class="sourceLineNo">2167</span>  /** Starts the service.  Must be called before any calls will be handled. */<a name="line.2167"></a>
+<span class="sourceLineNo">2168</span>  @Override<a name="line.2168"></a>
+<span class="sourceLineNo">2169</span>  public synchronized void start() {<a name="line.2169"></a>
+<span class="sourceLineNo">2170</span>    if (started) return;<a name="line.2170"></a>
+<span class="sourceLineNo">2171</span>    authTokenSecretMgr = createSecretManager();<a name="line.2171"></a>
+<span class="sourceLineNo">2172</span>    if (authTokenSecretMgr != null) {<a name="line.2172"></a>
+<span class="sourceLineNo">2173</span>      setSecretManager(authTokenSecretMgr);<a name="line.2173"></a>
+<span class="sourceLineNo">2174</span>      authTokenSecretMgr.start();<a name="line.2174"></a>
+<span class="sourceLineNo">2175</span>    }<a name="line.2175"></a>
+<span class="sourceLineNo">2176</span>    this.authManager = new ServiceAuthorizationManager();<a name="line.2176"></a>
+<span class="sourceLineNo">2177</span>    HBasePolicyProvider.init(conf, authManager);<a name="line.2177"></a>
+<span class="sourceLineNo">2178</span>    responder.start();<a name="line.2178"></a>
+<span class="sourceLineNo">2179</span>    listener.start();<a name="line.2179"></a>
+<span class="sourceLineNo">2180</span>    scheduler.start();<a name="line.2180"></a>
+<span class="sourceLineNo">2181</span>    started = true;<a name="line.2181"></a>
+<span class="sourceLineNo">2182</span>  }<a name="line.2182"></a>
+<span class="sourceLineNo">2183</span><a name="line.2183"></a>
+<span class="sourceLineNo">2184</span>  @Override<a name="line.2184"></a>
+<span class="sourceLineNo">2185</span>  public synchronized void refreshAuthManager(PolicyProvider pp) {<a name="line.2185"></a>
+<span class="sourceLineNo">2186</span>    // Ignore warnings that this should be accessed in a static way instead of via an instance;<a name="line.2186"></a>
+<span class="sourceLineNo">2187</span>    // it'll break if you go via static route.<a name="line.2187"></a>
+<span class="sourceLineNo">2188</span>    this.authManager.refresh(this.conf, pp);<a name="line.2188"></a>
+<span class="sourceLineNo">2189</span>  }<a name="line.2189"></a>
+<span class="sourceLineNo">2190</span><a name="line.2190"></a>
+<span class="sourceLineNo">2191</span>  private AuthenticationTokenSecretManager createSecretManager() {<a name="line.2191"></a>
+<span class="sourceLineNo">2192</span>    if (!isSecurityEnabled) return null;<a name="line.2192"></a>
+<span class="sourceLineNo">2193</span>    if (server == null) return null;<a name="line.2193"></a>
+<span class="sourceLineNo">2194</span>    Configuration conf = server.getConfiguration();<a name="line.2194"></a>
+<span class="sourceLineNo">2195</span>    long keyUpdateInterval =<a name="line.2195"></a>
+<span class="sourceLineNo">2196</span>        conf.getLong("hbase.auth.key.update.interval", 24*60*60*1000);<a name="line.2196"></a>
+<span class="sourceLineNo">2197</span>    long maxAge =<a name="line.2197"></a>
+<span class="sourceLineNo">2198</span>        conf.getLong("hbase.auth.token.max.lifetime", 7*24*60*60*1000);<a name="line.2198"></a>
+<span class="sourceLineNo">2199</span>    return new AuthenticationTokenSecretManager(conf, server.getZooKeeper(),<a name="line.2199"></a>
+<span class="sourceLineNo">2200</span>        server.getServerName().toString(), keyUpdateInterval, maxAge);<a name="line.2200"></a>
+<span class="sourceLineNo">2201</span>  }<a name="line.2201"></a>
+<span class="sourceLineNo">2202</span><a name="line.2202"></a>
+<span class="sourceLineNo">2203</span>  public SecretManager&lt;? extends TokenIdentifier&gt; getSecretManager() {<a name="line.2203"></a>
+<span class="sourceLineNo">2204</span>    return this.secretManager;<a name="line.2204"></a>
+<span class="sourceLineNo">2205</span>  }<a name="line.2205"></a>
+<span class="sourceLineNo">2206</span><a name="line.2206"></a>
+<span class="sourceLineNo">2207</span>  @SuppressWarnings("unchecked")<a name="line.2207"></a>
+<span class="sourceLineNo">2208</span>  public void setSecretManager(SecretManager&lt;? extends TokenIdentifier&gt; secretManager) {<a name="line.2208"></a>
+<span class="sourceLineNo">2209</span>    this.secretManager = (SecretManager&lt;TokenIdentifier&gt;) secretManager;<a name="line.2209"></a>
+<span class="sourceLineNo">2210</span>  }<a name="line.2210"></a>
+<span class="sourceLineNo">2211</span><a name="line.2211"></a>
+<span class="sourceLineNo">2212</span>  /**<a name="line.2212"></a>
+<span class="sourceLineNo">2213</span>   * This is a server side method, which is invoked over RPC. On success<a name="line.2213"></a>
+<span class="sourceLineNo">2214</span>   * the return response has protobuf response payload. On failure, the<a name="line.2214"></a>
+<span class="sourceLineNo">2215</span>   * exception name and the stack trace are returned in the protobuf response.<a name="line.2215"></a>
+<span class="sourceLineNo">2216</span>   */<a name="line.2216"></a>
+<span class="sourceLineNo">2217</span>  @Override<a name="line.2217"></a>
+<span class="sourceLineNo">2218</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,<a name="line.2218"></a>
+<span class="sourceLineNo">2219</span>      Message param, CellScanner cellScanner, long receiveTime, MonitoredRPCHandler status)<a name="line.2219"></a>
+<span class="sourceLineNo">2220</span>  throws IOException {<a name="line.2220"></a>
+<span class="sourceLineNo">2221</span>    try {<a name="line.2221"></a>
+<span class="sourceLineNo">2222</span>      status.setRPC(md.getName(), new Object[]{param}, receiveTime);<a name="line.2222"></a>
+<span class="sourceLineNo">2223</span>      // TODO: Review after we add in encoded data blocks.<a name="line.2223"></a>
+<span class="sourceLineNo">2224</span>      status.setRPCPacket(param);<a name="line.2224"></a>
+<span class="sourceLineNo">2225</span>      status.resume("Servicing call");<a name="line.2225"></a>
+<span class="sourceLineNo">2226</span>      //get an instance of the method arg type<a name="line.2226"></a>
+<span class="sourceLineNo">2227</span>      long startTime = System.currentTimeMillis();<a name="line.2227"></a>
+<span class="sourceLineNo">2228</span>      PayloadCarryingRpcController controller = new PayloadCarryingRpcController(cellScanner);<a name="line.2228"></a>
+<span class="sourceLineNo">2229</span>      Message result = service.callBlockingMethod(md, controller, param);<a name="line.2229"></a>
+<span class="sourceLineNo">2230</span>      long endTime = System.currentTimeMillis();<a name="line.2230"></a>
+<span class="sourceLineNo">2231</span>      int processingTime = (int) (endTime - startTime);<a name="line.2231"></a>
+<span class="sourceLineNo">2232</span>      int qTime = (int) (startTime - receiveTime);<a name="line.2232"></a>
+<span class="sourceLineNo">2233</span>      int totalTime = (int) (endTime - receiveTime);<a name="line.2233"></a>
+<span class="sourceLineNo">2234</span>      if (LOG.isTraceEnabled()) {<a name="line.2234"></a>
+<span class="sourceLineNo">2235</span>        LOG.trace(CurCall.get().toString() +<a name="line.2235"></a>
+<span class="sourceLineNo">2236</span>            ", response " + TextFormat.shortDebugString(result) +<a name="line.2236"></a>
+<span class="sourceLineNo">2237</span>            " queueTime: " + qTime +<a name="line.2237"></a>
+<span class="sourceLineNo">2238</span>            " processingTime: " + processingTime +<a name="line.2238"></a>
+<span class="sourceLineNo">2239</span>            " totalTime: " + totalTime);<a name="line.2239"></a>
+<span class="sourceLineNo">2240</span>      }<a name="line.2240"></a>
+<span class="sourceLineNo">2241</span>      long requestSize = param.getSerializedSize();<a name="line.2241"></a>
+<span class="sourceLineNo">2242</span>      long responseSize = result.getSerializedSize();<a name="line.2242"></a>
+<span class="sourceLineNo">2243</span>      metrics.dequeuedCall(qTime);<a name="line.2243"></a>
+<span class="sourceLineNo">2244</span>      metrics.processedCall(processingTime);<a name="line.2244"></a>
+<span class="sourceLineNo">2245</span>      metrics.totalCall(totalTime);<a name="line.2245"></a>
+<span class="sourceLineNo">2246</span>      metrics.receivedRequest(requestSize);<a name="line.2246"></a>
+<span class="sourceLineNo">2247</span>      metrics.sentResponse(responseSize);<a name="line.2247"></a>
+<span class="sourceLineNo">2248</span>      // log any RPC responses that are slower than the configured warn<a name="line.2248"></a>
+<span class="sourceLineNo">2249</span>      // response time or larger than configured warning size<a name="line.2249"></a>
+<span class="sourceLineNo">2250</span>      boolean tooSlow = (processingTime &gt; warnResponseTime &amp;&amp; warnResponseTime &gt; -1);<a name="line.2250"></a>
+<span class="sourceLineNo">2251</span>      boolean tooLarge = (responseSize &gt; warnResponseSize &amp;&amp; warnResponseSize &gt; -1);<a name="line.2251"></a>
+<span class="sourceLineNo">2252</span>      if (tooSlow || tooLarge) {<a name="line.2252"></a>
+<span class="sourceLineNo">2253</span>        // when tagging, we let TooLarge trump TooSmall to keep output simple<a name="line.2253"></a>
+<span class="sourceLineNo">2254</span>        // note that large responses will often also be slow.<a name="line.2254"></a>
+<span class="sourceLineNo">2255</span>        logResponse(new Object[]{param},<a name="line.2255"></a>
+<span class="sourceLineNo">2256</span>            md.getName(), md.getName() + "(" + param.getClass().getName() + ")",<a name="line.2256"></a>
+<span class="sourceLineNo">2257</span>            (tooLarge ? "TooLarge" : "TooSlow"),<a name="line.2257"></a>
+<span class="sourceLineNo">2258</span>            status.getClient(), startTime, processingTime, qTime,<a name="line.2258"></a>
+<span class="sourceLineNo">2259</span>            responseSize);<a name="line.2259"></a>
+<span class="sourceLineNo">2260</span>      }<a name="line.2260"></a>
+<span class="sourceLineNo">2261</span>      return new Pair&lt;Message, CellScanner&gt;(result, controller.cellScanner());<a name="line.2261"></a>
+<span class="sourceLineNo">2262</span>    } catch (Throwable e) {<a name="line.2262"></a>
+<span class="sourceLineNo">2263</span>      // The above callBlockingMethod will always return a SE.  Strip the SE wrapper before<a name="line.2263"></a>
+<span class="sourceLineNo">2264</span>      // putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't<a name="line.2264"></a>
+<span class="sourceLineNo">2265</span>      // need to pass it over the wire.<a name="line.2265"></a>
+<span class="sourceLineNo">2266</span>      if (e instanceof ServiceException) e = e.getCause();<a name="line.2266"></a>
 <span class="sourceLineNo">2267</span><a name="line.2267"></a>
-<span class="sourceLineNo">2268</span>      if (e instanceof LinkageError) throw new DoNotRetryIOException(e);<a name="line.2268"></a>
-<span class="sourceLineNo">2269</span>      if (e instanceof IOException) throw (IOException)e;<a name="line.2269"></a>
-<span class="sourceLineNo">2270</span>      LOG.error("Unexpected throwable object ", e);<a name="line.2270"></a>
-<span class="sourceLineNo">2271</span>      throw new IOException(e.getMessage(), e);<a name="line.2271"></a>
-<span class="sourceLineNo">2272</span>    }<a name="line.2272"></a>
-<span class="sourceLineNo">2273</span>  }<a name="line.2273"></a>
-<span class="sourceLineNo">2274</span><a name="line.2274"></a>
-<span class="sourceLineNo">2275</span>  /**<a name="line.2275"></a>
-<span class="sourceLineNo">2276</span>   * Logs an RPC response to the LOG file, producing valid JSON objects for<a name="line.2276"></a>
-<span class="sourceLineNo">2277</span>   * client Operations.<a name="line.2277"></a>
-<span class="sourceLineNo">2278</span>   * @param params The parameters received in the call.<a name="line.2278"></a>
-<span class="sourceLineNo">2279</span>   * @param methodName The name of the method invoked<a name="line.2279"></a>
-<span class="sourceLineNo">2280</span>   * @param call The string representation of the call<a name="line.2280"></a>
-<span class="sourceLineNo">2281</span>   * @param tag  The tag that will be used to indicate this event in the log.<a name="line.2281"></a>
-<span class="sourceLineNo">2282</span>   * @param clientAddress   The address of the client who made this call.<a name="line.2282"></a>
-<span class="sourceLineNo">2283</span>   * @param startTime       The time that the call was initiated, in ms.<a name="line.2283"></a>
-<span class="sourceLineNo">2284</span>   * @param processingTime  The duration that the call took to run, in ms.<a name="line.2284"></a>
-<span class="sourceLineNo">2285</span>   * @param qTime           The duration that the call spent on the queue<a name="line.2285"></a>
-<span class="sourceLineNo">2286</span>   *                        prior to being initiated, in ms.<a name="line.2286"></a>
-<span class="sourceLineNo">2287</span>   * @param responseSize    The size in bytes of the response buffer.<a name="line.2287"></a>
-<span class="sourceLineNo">2288</span>   */<a name="line.2288"></a>
-<span class="sourceLineNo">2289</span>  void logResponse(Object[] params, String methodName, String call, String tag,<a name="line.2289"></a>
-<span class="sourceLineNo">2290</span>      String clientAddress, long startTime, int processingTime, int qTime,<a name="line.2290"></a>
-<span class="sourceLineNo">2291</span>      long responseSize)<a name="line.2291"></a>
-<span class="sourceLineNo">2292</span>          throws IOException {<a name="line.2292"></a>
-<span class="sourceLineNo">2293</span>    // base information that is reported regardless of type of call<a name="line.2293"></a>
-<span class="sourceLineNo">2294</span>    Map&lt;String, Object&gt; responseInfo = new HashMap&lt;String, Object&gt;();<a name="line.2294"></a>
-<span class="sourceLineNo">2295</span>    responseInfo.put("starttimems", startTime);<a name="line.2295"></a>
-<span class="sourceLineNo">2296</span>    responseInfo.put("processingtimems", processingTime);<a name="line.2296"></a>
-<span class="sourceLineNo">2297</span>    responseInfo.put("queuetimems", qTime);<a name="line.2297"></a>
-<span class="sourceLineNo">2298</span>    responseInfo.put("responsesize", responseSize);<a name="line.2298"></a>
-<span class="sourceLineNo">2299</span>    responseInfo.put("client", clientAddress);<a name="line.2299"></a>
-<span class="sourceLineNo">2300</span>    responseInfo.put("class", server == null? "": server.getClass().getSimpleName());<a name="line.2300"></a>
-<span class="sourceLineNo">2301</span>    responseInfo.put("method", methodName);<a name="line.2301"></a>
-<span class="sourceLineNo">2302</span>    if (params.length == 2 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2302"></a>
-<span class="sourceLineNo">2303</span>        params[0] instanceof byte[] &amp;&amp;<a name="line.2303"></a>
-<span class="sourceLineNo">2304</span>        params[1] instanceof Operation) {<a name="line.2304"></a>
-<span class="sourceLineNo">2305</span>      // if the slow process is a query, we want to log its table as well<a name="line.2305"></a>
-<span class="sourceLineNo">2306</span>      // as its own fingerprint<a name="line.2306"></a>
-<span class="sourceLineNo">2307</span>      TableName tableName = TableName.valueOf(<a name="line.2307"></a>
-<span class="sourceLineNo">2308</span>          HRegionInfo.parseRegionName((byte[]) params[0])[0]);<a name="line.2308"></a>
-<span class="sourceLineNo">2309</span>      responseInfo.put("table", tableName.getNameAsString());<a name="line.2309"></a>
-<span class="sourceLineNo">2310</span>      // annotate the response map with operation details<a name="line.2310"></a>
-<span class="sourceLineNo">2311</span>      responseInfo.putAll(((Operation) params[1]).toMap());<a name="line.2311"></a>
-<span class="sourceLineNo">2312</span>      // report to the log file<a name="line.2312"></a>
-<span class="sourceLineNo">2313</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2313"></a>
-<span class="sourceLineNo">2314</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2314"></a>
-<span class="sourceLineNo">2315</span>    } else if (params.length == 1 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2315"></a>
-<span class="sourceLineNo">2316</span>        params[0] instanceof Operation) {<a name="line.2316"></a>
-<span class="sourceLineNo">2317</span>      // annotate the response map with operation details<a name="line.2317"></a>
-<span class="sourceLineNo">2318</span>      responseInfo.putAll(((Operation) params[0]).toMap());<a name="line.2318"></a>
-<span class="sourceLineNo">2319</span>      // report to the log file<a name="line.2319"></a>
-<span class="sourceLineNo">2320</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2320"></a>
-<span class="sourceLineNo">2321</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2321"></a>
-<span class="sourceLineNo">2322</span>    } else {<a name="line.2322"></a>
-<span class="sourceLineNo">2323</span>      // can't get JSON details, so just report call.toString() along with<a name="line.2323"></a>
-<span class="sourceLineNo">2324</span>      // a more generic tag.<a name="line.2324"></a>
-<span class="sourceLineNo">2325</span>      responseInfo.put("call", call);<a name="line.2325"></a>
-<span class="sourceLineNo">2326</span>      LOG.warn("(response" + tag + "): " + MAPPER.writeValueAsString(responseInfo));<a name="line.2326"></a>
-<span class="sourceLineNo">2327</span>    }<a name="line.2327"></a>
-<span class="sourceLineNo">2328</span>  }<a name="line.2328"></a>
-<span class="sourceLineNo">2329</span><a name="line.2329"></a>
-<span class="sourceLineNo">2330</span>  /** Stops the service.  No new calls will be handled after this is called. */<a name="line.2330"></a>
-<span class="sourceLineNo">2331</span>  @Override<a name="line.2331"></a>
-<span class="sourceLineNo">2332</span>  public synchronized void stop() {<a name="line.2332"></a>
-<span class="sourceLineNo">2333</span>    LOG.info("Stopping server on " + port);<a name="line.2333"></a>
-<span class="sourceLineNo">2334</span>    running = false;<a name="line.2334"></a>
-<span class="sourceLineNo">2335</span>    if (authTokenSecretMgr != null) {<a name="line.2335"></a>
-<span class="sourceLineNo">2336</span>      authTokenSecretMgr.stop();<a name="line.2336"></a>
-<span class="sourceLineNo">2337</span>      authTokenSecretMgr = null;<a name="line.2337"></a>
-<span class="sourceLineNo">2338</span>    }<a name="line.2338"></a>
-<span class="sourceLineNo">2339</span>    listener.interrupt();<a name="line.2339"></a>
-<span class="sourceLineNo">2340</span>    listener.doStop();<a name="line.2340"></a>
-<span class="sourceLineNo">2341</span>    responder.interrupt();<a name="line.2341"></a>
-<span class="sourceLineNo">2342</span>    scheduler.stop();<a name="line.2342"></a>
-<span class="sourceLineNo">2343</span>    notifyAll();<a name="line.2343"></a>
-<span class="sourceLineNo">2344</span>  }<a name="line.2344"></a>
-<span class="sourceLineNo">2345</span><a name="line.2345"></a>
-<span class="sourceLineNo">2346</span>  /** Wait for the server to be stopped.<a name="line.2346"></a>
-<span class="sourceLineNo">2347</span>   * Does not wait for all subthreads to finish.<a name="line.2347"></a>
-<span class="sourceLineNo">2348</span>   *  See {@link #stop()}.<a name="line.2348"></a>
-<span class="sourceLineNo">2349</span>   * @throws InterruptedException e<a name="line.2349"></a>
-<span class="sourceLineNo">2350</span>   */<a name="line.2350"></a>
-<span class="sourceLineNo">2351</span>  @Override<a name="line.2351"></a>
-<span class="sourceLineNo">2352</span>  public synchronized void join() throws InterruptedException {<a name="line.2352"></a>
-<span class="sourceLineNo">2353</span>    while (running) {<a name="line.2353"></a>
-<span class="sourceLineNo">2354</span>      wait();<a name="line.2354"></a>
-<span class="sourceLineNo">2355</span>    }<a name="line.2355"></a>
-<span class="sourceLineNo">2356</span>  }<a name="line.2356"></a>
-<span class="sourceLineNo">2357</span><a name="line.2357"></a>
-<span class="sourceLineNo">2358</span>  /**<a name="line.2358"></a>
-<span class="sourceLineNo">2359</span>   * Return the socket (ip+port) on which the RPC server is listening to. May return null if<a name="line.2359"></a>
-<span class="sourceLineNo">2360</span>   * the listener channel is closed.<a name="line.2360"></a>
-<span class="sourceLineNo">2361</span>   * @return the socket (ip+port) on which the RPC server is listening to, or null if this<a name="line.2361"></a>
-<span class="sourceLineNo">2362</span>   * information cannot be determined<a name="line.2362"></a>
-<span class="sourceLineNo">2363</span>   */<a name="line.2363"></a>
-<span class="sourceLineNo">2364</span>  @Override<a name="line.2364"></a>
-<span class="sourceLineNo">2365</span>  public synchronized InetSocketAddress getListenerAddress() {<a name="line.2365"></a>
-<span class="sourceLineNo">2366</span>    if (listener == null) {<a name="line.2366"></a>
-<span class="sourceLineNo">2367</span>      return null;<a name="line.2367"></a>
-<span class="sourceLineNo">2368</span>    }<a name="line.2368"></a>
-<span class="sourceLineNo">2369</span>    return listener.getAddress();<a name="line.2369"></a>
-<span class="sourceLineNo">2370</span>  }<a name="line.2370"></a>
-<span class="sourceLineNo">2371</span><a name="line.2371"></a>
-<span class="sourceLineNo">2372</span>  /**<a name="line.2372"></a>
-<span class="sourceLineNo">2373</span>   * Set the handler for calling out of RPC for error conditions.<a name="line.2373"></a>
-<span class="sourceLineNo">2374</span>   * @param handler the handler implementation<a name="line.2374"></a>
-<span class="sourceLineNo">2375</span>   */<a name="line.2375"></a>
-<span class="sourceLineNo">2376</span>  @Override<a name="line.2376"></a>
-<span class="sourceLineNo">2377</span>  public void setErrorHandler(HBaseRPCErrorHandler handler) {<a name="line.2377"></a>
-<span class="sourceLineNo">2378</span>    this.errorHandler = handler;<a name="line.2378"></a>
-<span class="sourceLineNo">2379</span>  }<a name="line.2379"></a>
-<span class="sourceLineNo">2380</span><a name="line.2380"></a>
-<span class="sourceLineNo">2381</span>  @Override<a name="line.2381"></a>
-<span class="sourceLineNo">2382</span>  public HBaseRPCErrorHandler getErrorHandler() {<a name="line.2382"></a>
-<span class="sourceLineNo">2383</span>    return this.errorHandler;<a name="line.2383"></a>
-<span class="sourceLineNo">2384</span>  }<a name="line.2384"></a>
-<span class="sourceLineNo">2385</span><a name="line.2385"></a>
-<span class="sourceLineNo">2386</span>  /**<a name="line.2386"></a>
-<span class="sourceLineNo">2387</span>   * Returns the metrics instance for reporting RPC call statistics<a name="line.2387"></a>
-<span class="sourceLineNo">2388</span>   */<a name="line.2388"></a>
-<span class="sourceLineNo">2389</span>  @Override<a name="line.2389"></a>
-<span class="sourceLineNo">2390</span>  public MetricsHBaseServer getMetrics() {<a name="line.2390"></a>
-<span class="sourceLineNo">2391</span>    return metrics;<a name="line.2391"></a>
-<span class="sourceLineNo">2392</span>  }<a name="line.2392"></a>
-<span class="sourceLineNo">2393</span><a name="line.2393"></a>
-<span class="sourceLineNo">2394</span>  @Override<a name="line.2394"></a>
-<span class="sourceLineNo">2395</span>  public void addCallSize(final long diff) {<a name="line.2395"></a>
-<span class="sourceLineNo">2396</span>    this.callQueueSize.add(diff);<a name="line.2396"></a>
-<span class="sourceLineNo">2397</span>  }<a name="line.2397"></a>
-<span class="sourceLineNo">2398</span><a name="line.2398"></a>
-<span class="sourceLineNo">2399</span>  /**<a name="line.2399"></a>
-<span class="sourceLineNo">2400</span>   * Authorize the incoming client connection.<a name="line.2400"></a>
-<span class="sourceLineNo">2401</span>   *<a name="line.2401"></a>
-<span class="sourceLineNo">2402</span>   * @param user client user<a name="line.2402"></a>
-<span class="sourceLineNo">2403</span>   * @param connection incoming connection<a name="line.2403"></a>
-<span class="sourceLineNo">2404</span>   * @param addr InetAddress of incoming connection<a name="line.2404"></a>
-<span class="sourceLineNo">2405</span>   * @throws org.apache.hadoop.security.authorize.AuthorizationException<a name="line.2405"></a>
-<span class="sourceLineNo">2406</span>   *         when the client isn't authorized to talk the protocol<a name="line.2406"></a>
-<span class="sourceLineNo">2407</span>   */<a name="line.2407"></a>
-<span class="sourceLineNo">2408</span>  public synchronized void authorize(UserGroupInformation user, ConnectionHeader connection,<a name="line.2408"></a>
-<span class="sourceLineNo">2409</span>      InetAddress addr)<a name="line.2409"></a>
-<span class="sourceLineNo">2410</span>  throws AuthorizationException {<a name="line.2410"></a>
-<span class="sourceLineNo">2411</span>    if (authorize) {<a name="line.2411"></a>
-<span class="sourceLineNo">2412</span>      Class&lt;?&gt; c = getServiceInterface(services, connection.getServiceName());<a name="line.2412"></a>
-<span class="sourceLineNo">2413</span>      this.authManager.authorize(user != null ? user : null, c, getConf(), addr);<a name="line.2413"></a>
-<span class="sourceLineNo">2414</span>    }<a name="line.2414"></a>
-<span class="sourceLineNo">2415</span>  }<a name="line.2415"></a>
-<span class="sourceLineNo">2416</span><a name="line.2416"></a>
-<span class="sourceLineNo">2417</span>  /**<a name="line.2417"></a>
-<span class="sourceLineNo">2418</span>   * When the read or write buffer size is larger than this limit, i/o will be<a name="line.2418"></a>
-<span class="sourceLineNo">2419</span>   * done in chunks of this size. Most RPC requests and responses would be<a name="line.2419"></a>
-<span class="sourceLineNo">2420</span>   * be smaller.<a name="line.2420"></a>
-<span class="sourceLineNo">2421</span>   */<a name="line.2421"></a>
-<span class="sourceLineNo">2422</span>  private static int NIO_BUFFER_LIMIT = 64 * 1024; //should not be more than 64KB.<a name="line.2422"></a>
-<span class="sourceLineNo">2423</span><a name="line.2423"></a>
-<span class="sourceLineNo">2424</span>  /**<a name="line.2424"></a>
-<span class="sourceLineNo">2425</span>   * This is a wrapper around {@link java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)}.<a name="line.2425"></a>
-<span class="sourceLineNo">2426</span>   * If the amount of data is large, it writes to channel in smaller chunks.<a name="line.2426"></a>
-<span class="sourceLineNo">2427</span>   * This is to avoid jdk from creating many direct buffers as the size of<a name="line.2427"></a>
-<span class="sourceLineNo">2428</span>   * buffer increases. This also minimizes extra copies in NIO layer<a name="line.2428"></a>
-<span class="sourceLineNo">2429</span>   * as a result of multiple write operations required to write a large<a name="line.2429"></a>
-<span class="sourceLineNo">2430</span>   * buffer.<a name="line.2430"></a>
-<span class="sourceLineNo">2431</span>   *<a name="line.2431"></a>
-<span class="sourceLineNo">2432</span>   * @param channel writable byte channel to write to<a name="line.2432"></a>
-<span class="sourceLineNo">2433</span>   * @param bufferChain Chain of buffers to write<a name="line.2433"></a>
-<span class="sourceLineNo">2434</span>   * @return number of bytes written<a name="line.2434"></a>
-<span class="sourceLineNo">2435</span>   * @throws java.io.IOException e<a name="line.2435"></a>
-<span class="sourceLineNo">2436</span>   * @see java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)<a name="line.2436"></a>
-<span class="sourceLineNo">2437</span>   */<a name="line.2437"></a>
-<span class="sourceLineNo">2438</span>  protected long channelWrite(GatheringByteChannel channel, BufferChain bufferChain)<a name="line.2438"></a>
-<span class="sourceLineNo">2439</span>  throws IOException {<a name="line.2439"></a>
-<span class="sourceLineNo">2440</span>    long count =  bufferChain.write(channel, NIO_BUFFER_LIMIT);<a name="line.2440"></a>
-<span class="sourceLineNo">2441</span>    if (count &gt; 0) this.metrics.sentBytes(count);<a name="line.2441"></a>
-<span class="sourceLineNo">2442</span>    return count;<a name="line.2442"></a>
-<span class="sourceLineNo">2443</span>  }<a name="line.2443"></a>
-<span class="sourceLineNo">2444</span><a name="line.2444"></a>
-<span class="sourceLineNo">2445</span>  /**<a name="line.2445"></a>
-<span class="sourceLineNo">2446</span>   * This is a wrapper around {@link java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer)}.<a name="line.2446"></a>
-<span class="sourceLineNo">2447</span>   * If the amount of data is large, it writes to channel in smaller chunks.<a name="line.2447"></a>
-<span class="sourceLineNo">2448</span>   * This is to avoid jdk from creating many direct buffers as the size of<a name="line.2448"></a>
-<span class="sourceLineNo">2449</span>   * ByteBuffer increases. There should not be any performance degredation.<a name="line.2449"></a>
-<span class="sourceLineNo">2450</span>   *<a name="line.2450"></a>
-<span class="sourceLineNo">2451</span>   * @param channel writable byte channel to write on<a name="line.2451"></a>
-<span class="sourceLineNo">2452</span>   * @param buffer buffer to write<a name="line.2452"></a>
-<span class="sourceLineNo">2453</span>   * @return number of bytes written<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>   * @throws java.io.IOException e<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>   * @see java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer)<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>   */<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>  protected int channelRead(ReadableByteChannel channel,<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>                                   ByteBuffer buffer) throws IOException {<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span><a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>    int count = (buffer.remaining() &lt;= NIO_BUFFER_LIMIT) ?<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>           channel.read(buffer) : channelIO(channel, null, buffer);<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span>    if (count &gt; 0) {<a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      metrics.receivedBytes(count);<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>    }<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>    return count;<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>  }<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span><a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>  /**<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>   * Helper for {@link #channelRead(java.nio.channels.ReadableByteChannel, java.nio.ByteBuffer)}<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>   * and {@link #channelWrite(GatheringByteChannel, BufferChain)}. Only<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span>   * one of readCh or writeCh should be non-null.<a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>   *<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>   * @param readCh read channel<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>   * @param writeCh write channel<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>   * @param buf buffer to read or write into/out of<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>   * @return bytes written<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>   * @throws java.io.IOException e<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>   * @see #channelRead(java.nio.channels.ReadableByteChannel, java.nio.ByteBuffer)<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>   * @see #channelWrite(GatheringByteChannel, BufferChain)<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>   */<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>  private static int channelIO(ReadableByteChannel readCh,<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>                               WritableByteChannel writeCh,<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>                               ByteBuffer buf) throws IOException {<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span><a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    int originalLimit = buf.limit();<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    int initialRemaining = buf.remaining();<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>    int ret = 0;<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span><a name="line.2488"></a>
-<span class="sourceLineNo">2489</span>    while (buf.remaining() &gt; 0) {<a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>      try {<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>        int ioSize = Math.min(buf.remaining(), NIO_BUFFER_LIMIT);<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>        buf.limit(buf.position() + ioSize);<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span><a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>        ret = (readCh == null) ? writeCh.write(buf) : readCh.read(buf);<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span><a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>        if (ret &lt; ioSize) {<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>          break;<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>        }<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span><a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      } finally {<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>        buf.limit(originalLimit);<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>      }<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>    }<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span><a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>    int nBytes = initialRemaining - buf.remaining();<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    return (nBytes &gt; 0) ? nBytes : ret;<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>  }<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span><a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>  /**<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>   * Needed for features such as delayed calls.  We need to be able to store the current call<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>   * so that we can complete it later or ask questions of what is supported by the current ongoing<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span>   * call.<a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>   * @return An RpcCallContext backed by the currently ongoing call (gotten from a thread local)<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>   */<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>  public static RpcCallContext getCurrentCall() {<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    return CurCall.get();<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>  }<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span><a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>  public static boolean isInRpcCallContext() {<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>    return CurCall.get() != null;<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>  }<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span><a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>  /**<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>   * Returns the user credentials associated with the current RPC request or<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>   * &lt;code&gt;null&lt;/code&gt; if no credentials were provided.<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>   * @return A User<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>   */<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  public static User getRequestUser() {<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span>    RpcCallContext ctx = getCurrentCall();<a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>    return ctx == null? null: ctx.getRequestUser();<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>  }<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span><a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  /**<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>   * Returns the username for any user associated with the current RPC<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>   * request or &lt;code&gt;null&lt;/code&gt; if no user is set.<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>   */<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>  public static String getRequestUserName() {<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    User user = getRequestUser();<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>    return user == null? null: user.getShortName();<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>  }<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span><a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>  /**<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>   * @return Address of remote client if a request is ongoing, else null<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>   */<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span>  public static InetAddress getRemoteAddress() {<a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>    RpcCallContext ctx = getCurrentCall();<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>    return ctx == null? null: ctx.getRemoteAddress();<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>  }<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span><a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>  /**<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span>   * @param services Available service instances<a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>   * @return Matching BlockingServiceAndInterface pair<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   */<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>  static BlockingServiceAndInterface getServiceAndInterface(<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>      final List&lt;BlockingServiceAndInterface&gt; services, final String serviceName) {<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>    for (BlockingServiceAndInterface bs : services) {<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>      if (bs.getBlockingService().getDescriptorForType().getName().equals(serviceName)) {<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>        return bs;<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>      }<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>    }<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>    return null;<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>  }<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span><a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>  /**<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>   * @param services Available services and their service interfaces.<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>   * @return Service interface class for &lt;code&gt;serviceName&lt;/code&gt;<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>   */<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>  static Class&lt;?&gt; getServiceInterface(<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>      final List&lt;BlockingServiceAndInterface&gt; services,<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>      final String serviceName) {<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>    BlockingServiceAndInterface bsasi =<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span>        getServiceAndInterface(services, serviceName);<a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>    return bsasi == null? null: bsasi.getServiceInterface();<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>  }<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span><a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>  /**<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>   * @param services Available services and their service interfaces.<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>   * @return BlockingService that goes with the passed &lt;code&gt;serviceName&lt;/code&gt;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>   */<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>  static BlockingService getService(<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>      final List&lt;BlockingServiceAndInterface&gt; services,<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span>      final String serviceName) {<a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    BlockingServiceAndInterface bsasi =<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>        getServiceAndInterface(services, serviceName);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    return bsasi == null? null: bsasi.getBlockingService();<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span>  }<a name="line.2589"></a>
-<span class="sourceLineNo">2590</span><a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>  static MonitoredRPCHandler getStatus() {<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // It is ugly the way we park status up in RpcServer.  Let it be for now.  TODO.<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    MonitoredRPCHandler status = RpcServer.MONITORED_RPC.get();<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    if (status != null) {<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>      return status;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    }<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>    status = TaskMonitor.get().createRPCStatus(Thread.currentThread().getName());<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>    status.pause("Waiting for a call");<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>    RpcServer.MONITORED_RPC.set(status);<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>    return status;<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span>  }<a name="line.2601"></a>
-<span class="sourceLineNo">2602</span><a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>  /** Returns the remote side ip address when invoked inside an RPC<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>   *  Returns null incase of an error.<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span>   *  @return InetAddress<a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>   */<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>  public static InetAddress getRemoteIp() {<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>    Call call = CurCall.get();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>    if (call != null &amp;&amp; call.connection != null &amp;&amp; call.connection.socket != null) {<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      return call.connection.socket.getInetAddress();<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>    }<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>    return null;<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>  }<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span><a name="line.2614"></a>
-<span class="sourceLineNo">2615</span><a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>  /**<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>   * A convenience method to bind to a given address and report<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>   * better exceptions if the address is not a valid host.<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>   * @param socket the socket to bind<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>   * @param address the address to bind to<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>   * @param backlog the number of connections allowed in the queue<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>   * @throws BindException if the address can't be bound<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>   * @throws UnknownHostException if the address isn't a valid host name<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>   * @throws IOException other random errors from bind<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>   */<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span>  public static void bind(ServerSocket socket, InetSocketAddress address,<a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>                          int backlog) throws IOException {<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>    try {<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span>      socket.bind(address, backlog);<a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>    } catch (BindException e) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>      BindException bindException =<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        new BindException("Problem binding to " + address + " : " +<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>            e.getMessage());<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>      bindException.initCause(e);<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>      throw bindException;<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>    } catch (SocketException e) {<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>      // If they try to bind to a different host's address, give a better<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // error message.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      if ("Unresolved address".equals(e.getMessage())) {<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>        throw new UnknownHostException("Invalid hostname for server: " +<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>                                       address.getHostName());<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      }<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      throw e;<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>    }<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>  }<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span><a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>  @Override<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>  public RpcScheduler getScheduler() {<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>    return scheduler;<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>  }<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>}<a name="line.2651"></a>
+<span class="sourceLineNo">2268</span>      // increment the number of requests that were exceptions.<a name="line.2268"></a>
+<span class="sourceLineNo">2269</span>      metrics.exception(e);<a name="line.2269"></a>
+<span class="sourceLineNo">2270</span><a name="line.2270"></a>
+<span class="sourceLineNo">2271</span>      if (e instanceof LinkageError) throw new DoNotRetryIOException(e);<a name="line.2271"></a>
+<span class="sourceLineNo">2272</span>      if (e instanceof IOException) throw (IOException)e;<a name="line.2272"></a>
+<span class="sourceLineNo">2273</span>      LOG.error("Unexpected throwable object ", e);<a name="line.2273"></a>
+<span class="sourceLineNo">2274</span>      throw new IOException(e.getMessage(), e);<a name="line.2274"></a>
+<span class="sourceLineNo">2275</span>    }<a name="line.2275"></a>
+<span class="sourceLineNo">2276</span>  }<a name="line.2276"></a>
+<span class="sourceLineNo">2277</span><a name="line.2277"></a>
+<span class="sourceLineNo">2278</span>  /**<a name="line.2278"></a>
+<span class="sourceLineNo">2279</span>   * Logs an RPC response to the LOG file, producing valid JSON objects for<a name="line.2279"></a>
+<span class="sourceLineNo">2280</span>   * client Operations.<a name="line.2280"></a>
+<span class="sourceLineNo">2281</span>   * @param params The parameters received in the call.<a name="line.2281"></a>
+<span class="sourceLineNo">2282</span>   * @param methodName The name of the method invoked<a name="line.2282"></a>
+<span class="sourceLineNo">2283</span>   * @param call The string representation of the call<a name="line.2283"></a>
+<span class="sourceLineNo">2284</span>   * @param tag  The tag that will be used to indicate this event in the log.<a name="line.2284"></a>
+<span class="sourceLineNo">2285</span>   * @param clientAddress   The address of the client who made this call.<a name="line.2285"></a>
+<span class="sourceLineNo">2286</span>   * @param startTime       The time that the call was initiated, in ms.<a name="line.2286"></a>
+<span class="sourceLineNo">2287</span>   * @param processingTime  The duration that the call took to run, in ms.<a name="line.2287"></a>
+<span class="sourceLineNo">2288</span>   * @param qTime           The duration that the call spent on the queue<a name="line.2288"></a>
+<span class="sourceLineNo">2289</span>   *                        prior to being initiated, in ms.<a name="line.2289"></a>
+<span class="sourceLineNo">2290</span>   * @param responseSize    The size in bytes of the response buffer.<a name="line.2290"></a>
+<span class="sourceLineNo">2291</span>   */<a name="line.2291"></a>
+<span class="sourceLineNo">2292</span>  void logResponse(Object[] params, String methodName, String call, String tag,<a name="line.2292"></a>
+<span class="sourceLineNo">2293</span>      String clientAddress, long startTime, int processingTime, int qTime,<a name="line.2293"></a>
+<span class="sourceLineNo">2294</span>      long responseSize)<a name="line.2294"></a>
+<span class="sourceLineNo">2295</span>          throws IOException {<a name="line.2295"></a>
+<span class="sourceLineNo">2296</span>    // base information that is reported regardless of type of call<a name="line.2296"></a>
+<span class="sourceLineNo">2297</span>    Map&lt;String, Object&gt; responseInfo = new HashMap&lt;String, Object&gt;();<a name="line.2297"></a>
+<span class="sourceLineNo">2298</span>    responseInfo.put("starttimems", startTime);<a name="line.2298"></a>
+<span class="sourceLineNo">2299</span>    responseInfo.put("processingtimems", processingTime);<a name="line.2299"></a>
+<span class="sourceLineNo">2300</span>    responseInfo.put("queuetimems", qTime);<a name="line.2300"></a>
+<span class="sourceLineNo">2301</span>    responseInfo.put("responsesize", responseSize);<a name="line.2301"></a>
+<span class="sourceLineNo">2302</span>    responseInfo.put("client", clientAddress);<a name="line.2302"></a>
+<span class="sourceLineNo">2303</span>    responseInfo.put("class", server == null? "": server.getClass().getSimpleName());<a name="line.2303"></a>
+<span class="sourceLineNo">2304</span>    responseInfo.put("method", methodName);<a name="line.2304"></a>
+<span class="sourceLineNo">2305</span>    if (params.length == 2 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2305"></a>
+<span class="sourceLineNo">2306</span>        params[0] instanceof byte[] &amp;&amp;<a name="line.2306"></a>
+<span class="sourceLineNo">2307</span>        params[1] instanceof Operation) {<a name="line.2307"></a>
+<span class="sourceLineNo">2308</span>      // if the slow process is a query, we want to log its table as well<a name="line.2308"></a>
+<span class="sourceLineNo">2309</span>      // as its own fingerprint<a name="line.2309"></a>
+<span class="sourceLineNo">2310</span>      TableName tableName = TableName.valueOf(<a name="line.2310"></a>
+<span class="sourceLineNo">2311</span>          HRegionInfo.parseRegionName((byte[]) params[0])[0]);<a name="line.2311"></a>
+<span class="sourceLineNo">2312</span>      responseInfo.put("table", tableName.getNameAsString());<a name="line.2312"></a>
+<span class="sourceLineNo">2313</span>      // annotate the response map with operation details<a name="line.2313"></a>
+<span class="sourceLineNo">2314</span>      responseInfo.putAll(((Operation) params[1]).toMap());<a name="line.2314"></a>
+<span class="sourceLineNo">2315</span>      // report to the log file<a name="line.2315"></a>
+<span class="sourceLineNo">2316</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2316"></a>
+<span class="sourceLineNo">2317</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2317"></a>
+<span class="sourceLineNo">2318</span>    } else if (params.length == 1 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2318"></a>
+<span class="sourceLineNo">2319</span>        params[0] instanceof Operation) {<a name="line.2319"></a>
+<span class="sourceLineNo">2320</span>      // annotate the response map with operation details<a name="line.2320"></a>
+<span class="sourceLineNo">2321</span>      responseInfo.putAll(((Operation) params[0]).toMap());<a name="line.2321"></a>
+<span class="sourceLineNo">2322</span>      // report to the log file<a name="line.2322"></a>
+<span class="sourceLineNo">2323</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2323"></a>
+<span class="sourceLineNo">2324</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2324"></a>
+<span class="sourceLineNo">2325</span>    } else {<a name="line.2325"></a>
+<span class="sourceLineNo">2326</span>      // can't get JSON details, so just report call.toString() along with<a name="line.2326"></a>
+<span class="sourceLineNo">2327</span>      // a more generic tag.<a name="line.2327"></a>
+<span class="sourceLineNo">2328</span>      responseInfo.put("call", call);<a name="line.2328"></a>
+<span class="sourceLineNo">2329</span>      LOG.warn("(response" + tag + "): " + MAPPER.writeValueAsString(responseInfo));<a name="line.2329"></a>
+<span class="sourceLineNo">2330</span>    }<a name="line.2330"></a>
+<span class="sourceLineNo">2331</span>  }<a name="line.2331"></a>
+<span class="sourceLineNo">2332</span><a name="line.2332"></a>
+<span class="sourceLineNo">2333</span>  /** Stops the service.  No new calls will be handled after this is called. */<a name="line.2333"></a>
+<span class="sourceLineNo">2334</span>  @Override<a name="line.2334"></a>
+<span class="sourceLineNo">2335</span>  public synchronized void stop() {<a name="line.2335"></a>
+<span class="sourceLineNo">2336</span>    LOG.info("Stopping server on " + port);<a name="line.2336"></a>
+<span class="sourceLineNo">2337</span>    running = false;<a name="line.2337"></a>
+<span class="sourceLineNo">2338</span>    if (authTokenSecretMgr != null) {<a name="line.2338"></a>
+<span class="sourceLineNo">2339</span>      authTokenSecretMgr.stop();<a name="line.2339"></a>
+<span class="sourceLineNo">2340</span>      authTokenSecretMgr = null;<a name="line.2340"></a>
+<span class="sourceLineNo">2341</span>    }<a name="line.2341"></a>
+<span class="sourceLineNo">2342</span>    listener.interrupt();<a name="line.2342"></a>
+<span class="sourceLineNo">2343</span>    listener.doStop();<a name="line.2343"></a>
+<span class="sourceLineNo">2344</span>    responder.interrupt();<a name="line.2344"></a>
+<span class="sourceLineNo">2345</span>    scheduler.stop();<a name="line.2345"></a>
+<span class="sourceLineNo">2346</span>    notifyAll();<a name="line.2346"></a>
+<span class="sourceLineNo">2347</span>  }<a name="line.2347"></a>
+<span class="sourceLineNo">2348</span><a name="line.2348"></a>
+<span class="sourceLineNo">2349</span>  /** Wait for the server to be stopped.<a name="line.2349"></a>
+<span class="sourceLineNo">2350</span>   * Does not wait for all subthreads to finish.<a name="line.2350"></a>
+<span class="sourceLineNo">2351</span>   *  See {@link #stop()}.<a name="line.2351"></a>
+<span class="sourceLineNo">2352</span>   * @throws InterruptedException e<a name="line.2352"></a>
+<span class="sourceLineNo">2353</span>   */<a name="line.2353"></a>
+<span class="sourceLineNo">2354</span>  @Override<a name="line.2354"></a>
+<span class="sourceLineNo">2355</span>  public synchronized void join() throws InterruptedException {<a name="line.2355"></a>
+<span class="sourceLineNo">2356</span>    while (running) {<a name="line.2356"></a>
+<span class="sourceLineNo">2357</span>      wait();<a name="line.2357"></a>
+<span class="sourceLineNo">2358</span>    }<a name="line.2358"></a>
+<span class="sourceLineNo">2359</span>  }<a name="line.2359"></a>
+<span class="sourceLineNo">2360</span><a name="line.2360"></a>
+<span class="sourceLineNo">2361</span>  /**<a name="line.2361"></a>
+<span class="sourceLineNo">2362</span>   * Return the socket (ip+port) on which the RPC server is listening to. May return null if<a name="line.2362"></a>
+<span class="sourceLineNo">2363</span>   * the listener channel is closed.<a name="line.2363"></a>
+<span class="sourceLineNo">2364</span>   * @return the socket (ip+port) on which the RPC server is listening to, or null if this<a name="line.2364"></a>
+<span class="sourceLineNo">2365</span>   * information cannot be determined<a name="line.2365"></a>
+<span class="sourceLineNo">2366</span>   */<a name="line.2366"></a>
+<span class="sourceLineNo">2367</span>  @Override<a name="line.2367"></a>
+<span class="sourceLineNo">2368</span>  public synchronized InetSocketAddress getListenerAddress() {<a name="line.2368"></a>
+<span class="sourceLineNo">2369</span>    if (listener == null) {<a name="line.2369"></a>
+<span class="sourceLineNo">2370</span>      return null;<a name="line.2370"></a>
+<span class="sourceLineNo">2371</span>    }<a name="line.2371"></a>
+<span class="sourceLineNo">2372</span>    return listener.getAddress();<a name="line.2372"></a>
+<span class="sourceLineNo">2373</span>  }<a name="line.2373"></a>
+<span class="sourceLineNo">2374</span><a name="line.2374"></a>
+<span class="sourceLineNo">2375</span>  /**<a name="line.2375"></a>
+<span class="sourceLineNo">2376</span>   * Set the handler for calling out of RPC for error conditions.<a name="line.2376"></a>
+<span class="sourceLineNo">2377</span>   * @param handler the handler implementation<a name="line.2377"></a>
+<span class="sourceLineNo">2378</span>   */<a name="line.2378"></a>
+<span class="sourceLineNo">2379</span>  @Override<a name="line.2379"></a>
+<span class="sourceLineNo">2380</span>  public void setErrorHandler(HBaseRPCErrorHandler handler) {<a name="line.2380"></a>
+<span class="sourceLineNo">2381</span>    this.errorHandler = handler;<a name="line.2381"></a>
+<span class="sourceLineNo">2382</span>  }<a name="line.2382"></a>
+<span class="sourceLineNo">2383</span><a name="line.2383"></a>
+<span class="sourceLineNo">2384</span>  @Override<a name="line.2384"></a>
+<span class="sourceLineNo">2385</span>  public HBaseRPCErrorHandler getErrorHandler() {<a name="line.2385"></a>
+<span class="sourceLineNo">2386</span>    return this.errorHandler;<a name="line.2386"></a>
+<span class="sourceLineNo">2387</span>  }<a name="line.2387"></a>
+<span class="sourceLineNo">2388</span><a name="line.2388"></a>
+<span class="sourceLineNo">2389</span>  /**<a name="line.2389"></a>
+<span class="sourceLineNo">2390</span>   * Returns the metrics instance for reporting RPC call statistics<a name="line.2390"></a>
+<span class="sourceLineNo">2391</span>   */<a name="line.2391"></a>
+<span class="sourceLineNo">2392</span>  @Override<a name="line.2392"></a>
+<span class="sourceLineNo">2393</span>  public MetricsHBaseServer getMetrics() {<a name="line.2393"></a>
+<span class="sourceLineNo">2394</span>    return metrics;<a name="line.2394"></a>
+<span class="sourceLineNo">2395</span>  }<a name="line.2395"></a>
+<span class="sourceLineNo">2396</span><a name="line.2396"></a>
+<span class="sourceLineNo">2397</span>  @Override<a name="line.2397"></a>
+<span class="sourceLineNo">2398</span>  public void addCallSize(final long diff) {<a name="line.2398"></a>
+<span class="sourceLineNo">2399</span>    this.callQueueSize.add(diff);<a name="line.2399"></a>
+<span class="sourceLineNo">2400</span>  }<a name="line.2400"></a>
+<span class="sourceLineNo">2401</span><a name="line.2401"></a>
+<span class="sourceLineNo">2402</span>  /**<a name="line.2402"></a>
+<span class="sourceLineNo">2403</span>   * Authorize the incoming client connection.<a name="line.2403"></a>
+<span class="sourceLineNo">2404</span>   *<a name="line.2404"></a>
+<span class="sourceLineNo">2405</span>   * @param user client user<a name="line.2405"></a>
+<span class="sourceLineNo">2406</span>   * @param connection incoming connection<a name="line.2406"></a>
+<span class="sourceLineNo">2407</span>   * @param addr InetAddress of incoming connection<a name="line.2407"></a>
+<span class="sourceLineNo">2408</span>   * @throws org.apache.hadoop.security.authorize.AuthorizationException<a name="line.2408"></a>
+<span class="sourceLineNo">2409</span>   *         when the client isn't authorized to talk the protocol<a name="line.2409"></a>
+<span class="sourceLineNo">2410</span>   */<a name="line.2410"></a>
+<span class="sourceLineNo">2411</span>  public synchronized void authorize(UserGroupInformation user, ConnectionHeader connection,<a name="line.2411"></a>
+<span class="sourceLineNo">2412</span>      InetAddress addr)<a name="line.2412"></a>
+<span class="sourceLineNo">2413</span>  throws AuthorizationException {<a name="line.2413"></a>
+<span class="sourceLineNo">2414</span>    if (authorize) {<a name="line.2414"></a>
+<span class="sourceLineNo">2415</span>      Class&lt;?&gt; c = getServiceInterface(services, connection.getServiceName());<a name="line.2415"></a>
+<span class="sourceLineNo">2416</span>      this.authManager.authorize(user != null ? user : null, c, getConf(), addr);<a name="line.2416"></a>
+<span class="sourceLineNo">2417</span>    }<a name="line.2417"></a>
+<span class="sourceLineNo">2418</span>  }<a name="line.2418"></a>
+<span class="sourceLineNo">2419</span><a name="line.2419"></a>
+<span class="sourceLineNo">2420</span>  /**<a name="line.2420"></a>
+<span class="sourceLineNo">2421</span>   * When the read or write buffer size is larger than this limit, i/o will be<a name="line.2421"></a>
+<span class="sourceLineNo">2422</span>   * done in chunks of this size. Most RPC requests and responses would be<a name="line.2422"></a>
+<span class="sourceLineNo">2423</span>   * be smaller.<a name="line.2423"></a>
+<span class="sourceLineNo">2424</span>   */<a name="line.2424"></a>
+<span class="sourceLineNo">2425</span>  private static int NIO_BUFFER_LIMIT = 64 * 1024; //should not be more than 64KB.<a name="line.2425"></a>
+<span class="sourceLineNo">2426</span><a name="line.2426"></a>
+<span class="sourceLineNo">2427</span>  /**<a name="line.2427"></a>
+<span class="sourceLineNo">2428</span>   * This is a wrapper aro

<TRUNCATED>

[06/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/xref-test/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html b/xref-test/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html
index fb03c1b..ad3a0be 100644
--- a/xref-test/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html
+++ b/xref-test/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html
@@ -88,478 +88,483 @@
 <a class="jxr_linenumber" name="78" href="#78">78</a>  <strong class="jxr_keyword">import</strong> org.junit.Rule;
 <a class="jxr_linenumber" name="79" href="#79">79</a>  <strong class="jxr_keyword">import</strong> org.junit.Test;
 <a class="jxr_linenumber" name="80" href="#80">80</a>  <strong class="jxr_keyword">import</strong> org.junit.experimental.categories.Category;
-<a class="jxr_linenumber" name="81" href="#81">81</a>  <strong class="jxr_keyword">import</strong> org.junit.rules.TestRule;
-<a class="jxr_linenumber" name="82" href="#82">82</a>  
-<a class="jxr_linenumber" name="83" href="#83">83</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Joiner;
-<a class="jxr_linenumber" name="84" href="#84">84</a>  <strong class="jxr_keyword">import</strong> com.google.protobuf.RpcController;
-<a class="jxr_linenumber" name="85" href="#85">85</a>  <strong class="jxr_keyword">import</strong> com.google.protobuf.ServiceException;
-<a class="jxr_linenumber" name="86" href="#86">86</a>  
-<a class="jxr_linenumber" name="87" href="#87">87</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="88" href="#88">88</a>  <em class="jxr_javadoccomment"> * Like {@link TestRegionMergeTransaction} in that we're testing</em>
-<a class="jxr_linenumber" name="89" href="#89">89</a>  <em class="jxr_javadoccomment"> * {@link RegionMergeTransactionImpl} only the below tests are against a running</em>
-<a class="jxr_linenumber" name="90" href="#90">90</a>  <em class="jxr_javadoccomment"> * cluster where {@link TestRegionMergeTransaction} is tests against bare</em>
-<a class="jxr_linenumber" name="91" href="#91">91</a>  <em class="jxr_javadoccomment"> * {@link HRegion}.</em>
-<a class="jxr_linenumber" name="92" href="#92">92</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="93" href="#93">93</a>  @Category({RegionServerTests.<strong class="jxr_keyword">class</strong>, LargeTests.<strong class="jxr_keyword">class</strong>})
-<a class="jxr_linenumber" name="94" href="#94">94</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html">TestRegionMergeTransactionOnCluster</a> {
-<a class="jxr_linenumber" name="95" href="#95">95</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory
-<a class="jxr_linenumber" name="96" href="#96">96</a>        .getLog(TestRegionMergeTransactionOnCluster.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="97" href="#97">97</a>    @Rule <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> TestRule timeout = CategoryBasedTimeout.builder().withTimeout(<strong class="jxr_keyword">this</strong>.getClass()).
-<a class="jxr_linenumber" name="98" href="#98">98</a>        withLookingForStuckThread(<strong class="jxr_keyword">true</strong>).build();
-<a class="jxr_linenumber" name="99" href="#99">99</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> NB_SERVERS = 3;
-<a class="jxr_linenumber" name="100" href="#100">100</a> 
-<a class="jxr_linenumber" name="101" href="#101">101</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] FAMILYNAME = Bytes.toBytes(<span class="jxr_string">"fam"</span>);
-<a class="jxr_linenumber" name="102" href="#102">102</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] QUALIFIER = Bytes.toBytes(<span class="jxr_string">"q"</span>);
-<a class="jxr_linenumber" name="103" href="#103">103</a> 
-<a class="jxr_linenumber" name="104" href="#104">104</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> byte[] ROW = Bytes.toBytes(<span class="jxr_string">"testRow"</span>);
-<a class="jxr_linenumber" name="105" href="#105">105</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> INITIAL_REGION_NUM = 10;
-<a class="jxr_linenumber" name="106" href="#106">106</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> ROWSIZE = 200;
-<a class="jxr_linenumber" name="107" href="#107">107</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> byte[][] ROWS = makeN(ROW, ROWSIZE);
-<a class="jxr_linenumber" name="108" href="#108">108</a> 
-<a class="jxr_linenumber" name="109" href="#109">109</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> waitTime = 60 * 1000;
+<a class="jxr_linenumber" name="81" href="#81">81</a>  <strong class="jxr_keyword">import</strong> org.junit.rules.TestName;
+<a class="jxr_linenumber" name="82" href="#82">82</a>  <strong class="jxr_keyword">import</strong> org.junit.rules.TestRule;
+<a class="jxr_linenumber" name="83" href="#83">83</a>  
+<a class="jxr_linenumber" name="84" href="#84">84</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Joiner;
+<a class="jxr_linenumber" name="85" href="#85">85</a>  <strong class="jxr_keyword">import</strong> com.google.protobuf.RpcController;
+<a class="jxr_linenumber" name="86" href="#86">86</a>  <strong class="jxr_keyword">import</strong> com.google.protobuf.ServiceException;
+<a class="jxr_linenumber" name="87" href="#87">87</a>  
+<a class="jxr_linenumber" name="88" href="#88">88</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="89" href="#89">89</a>  <em class="jxr_javadoccomment"> * Like {@link TestRegionMergeTransaction} in that we're testing</em>
+<a class="jxr_linenumber" name="90" href="#90">90</a>  <em class="jxr_javadoccomment"> * {@link RegionMergeTransactionImpl} only the below tests are against a running</em>
+<a class="jxr_linenumber" name="91" href="#91">91</a>  <em class="jxr_javadoccomment"> * cluster where {@link TestRegionMergeTransaction} is tests against bare</em>
+<a class="jxr_linenumber" name="92" href="#92">92</a>  <em class="jxr_javadoccomment"> * {@link HRegion}.</em>
+<a class="jxr_linenumber" name="93" href="#93">93</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="94" href="#94">94</a>  @Category({RegionServerTests.<strong class="jxr_keyword">class</strong>, LargeTests.<strong class="jxr_keyword">class</strong>})
+<a class="jxr_linenumber" name="95" href="#95">95</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html">TestRegionMergeTransactionOnCluster</a> {
+<a class="jxr_linenumber" name="96" href="#96">96</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory
+<a class="jxr_linenumber" name="97" href="#97">97</a>        .getLog(TestRegionMergeTransactionOnCluster.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="98" href="#98">98</a>    @Rule <strong class="jxr_keyword">public</strong> TestName name = <strong class="jxr_keyword">new</strong> TestName();
+<a class="jxr_linenumber" name="99" href="#99">99</a>    @Rule <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> TestRule timeout = CategoryBasedTimeout.builder().withTimeout(<strong class="jxr_keyword">this</strong>.getClass()).
+<a class="jxr_linenumber" name="100" href="#100">100</a>       withLookingForStuckThread(<strong class="jxr_keyword">true</strong>).build();
+<a class="jxr_linenumber" name="101" href="#101">101</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> NB_SERVERS = 3;
+<a class="jxr_linenumber" name="102" href="#102">102</a> 
+<a class="jxr_linenumber" name="103" href="#103">103</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] FAMILYNAME = Bytes.toBytes(<span class="jxr_string">"fam"</span>);
+<a class="jxr_linenumber" name="104" href="#104">104</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] QUALIFIER = Bytes.toBytes(<span class="jxr_string">"q"</span>);
+<a class="jxr_linenumber" name="105" href="#105">105</a> 
+<a class="jxr_linenumber" name="106" href="#106">106</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> byte[] ROW = Bytes.toBytes(<span class="jxr_string">"testRow"</span>);
+<a class="jxr_linenumber" name="107" href="#107">107</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> INITIAL_REGION_NUM = 10;
+<a class="jxr_linenumber" name="108" href="#108">108</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> ROWSIZE = 200;
+<a class="jxr_linenumber" name="109" href="#109">109</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> byte[][] ROWS = makeN(ROW, ROWSIZE);
 <a class="jxr_linenumber" name="110" href="#110">110</a> 
-<a class="jxr_linenumber" name="111" href="#111">111</a>   <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html">HBaseTestingUtility</a> TEST_UTIL = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html">HBaseTestingUtility</a>();
+<a class="jxr_linenumber" name="111" href="#111">111</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> waitTime = 60 * 1000;
 <a class="jxr_linenumber" name="112" href="#112">112</a> 
-<a class="jxr_linenumber" name="113" href="#113">113</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> HMaster MASTER;
-<a class="jxr_linenumber" name="114" href="#114">114</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Admin ADMIN;
-<a class="jxr_linenumber" name="115" href="#115">115</a> 
-<a class="jxr_linenumber" name="116" href="#116">116</a>   @BeforeClass
-<a class="jxr_linenumber" name="117" href="#117">117</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> beforeAllTests() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="118" href="#118">118</a>     <em class="jxr_comment">// Start a cluster</em>
-<a class="jxr_linenumber" name="119" href="#119">119</a>     TEST_UTIL.startMiniCluster(1, NB_SERVERS, <strong class="jxr_keyword">null</strong>, MyMaster.<strong class="jxr_keyword">class</strong>, <strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="120" href="#120">120</a>     <a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html">MiniHBaseCluster</a> cluster = TEST_UTIL.getHBaseCluster();
-<a class="jxr_linenumber" name="121" href="#121">121</a>     MASTER = cluster.getMaster();
-<a class="jxr_linenumber" name="122" href="#122">122</a>     MASTER.balanceSwitch(false);
-<a class="jxr_linenumber" name="123" href="#123">123</a>     ADMIN = TEST_UTIL.getConnection().getAdmin();
-<a class="jxr_linenumber" name="124" href="#124">124</a>   }
-<a class="jxr_linenumber" name="125" href="#125">125</a> 
-<a class="jxr_linenumber" name="126" href="#126">126</a>   @AfterClass
-<a class="jxr_linenumber" name="127" href="#127">127</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> afterAllTests() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="128" href="#128">128</a>     TEST_UTIL.shutdownMiniCluster();
-<a class="jxr_linenumber" name="129" href="#129">129</a>     <strong class="jxr_keyword">if</strong> (ADMIN != <strong class="jxr_keyword">null</strong>) ADMIN.close();
-<a class="jxr_linenumber" name="130" href="#130">130</a>   }
-<a class="jxr_linenumber" name="131" href="#131">131</a> 
-<a class="jxr_linenumber" name="132" href="#132">132</a>   @Test
-<a class="jxr_linenumber" name="133" href="#133">133</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testWholesomeMerge() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="134" href="#134">134</a>     LOG.info(<span class="jxr_string">"Starting testWholesomeMerge"</span>);
-<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">final</strong> TableName tableName =
-<a class="jxr_linenumber" name="136" href="#136">136</a>         TableName.valueOf(<span class="jxr_string">"testWholesomeMerge"</span>);
-<a class="jxr_linenumber" name="137" href="#137">137</a> 
-<a class="jxr_linenumber" name="138" href="#138">138</a>     <em class="jxr_comment">// Create table and load data.</em>
-<a class="jxr_linenumber" name="139" href="#139">139</a>     Table table = createTableAndLoadData(MASTER, tableName);
-<a class="jxr_linenumber" name="140" href="#140">140</a>     <em class="jxr_comment">// Merge 1st and 2nd region</em>
-<a class="jxr_linenumber" name="141" href="#141">141</a>     mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1,
-<a class="jxr_linenumber" name="142" href="#142">142</a>         INITIAL_REGION_NUM - 1);
-<a class="jxr_linenumber" name="143" href="#143">143</a> 
-<a class="jxr_linenumber" name="144" href="#144">144</a>     <em class="jxr_comment">// Merge 2nd and 3th region</em>
-<a class="jxr_linenumber" name="145" href="#145">145</a>     PairOfSameType&lt;HRegionInfo&gt; mergedRegions =
-<a class="jxr_linenumber" name="146" href="#146">146</a>       mergeRegionsAndVerifyRegionNum(MASTER, tableName, 1, 2,
-<a class="jxr_linenumber" name="147" href="#147">147</a>         INITIAL_REGION_NUM - 2);
-<a class="jxr_linenumber" name="148" href="#148">148</a> 
-<a class="jxr_linenumber" name="149" href="#149">149</a>     verifyRowCount(table, ROWSIZE);
+<a class="jxr_linenumber" name="113" href="#113">113</a>   <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html">HBaseTestingUtility</a> TEST_UTIL = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html">HBaseTestingUtility</a>();
+<a class="jxr_linenumber" name="114" href="#114">114</a> 
+<a class="jxr_linenumber" name="115" href="#115">115</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> HMaster MASTER;
+<a class="jxr_linenumber" name="116" href="#116">116</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Admin ADMIN;
+<a class="jxr_linenumber" name="117" href="#117">117</a> 
+<a class="jxr_linenumber" name="118" href="#118">118</a>   @BeforeClass
+<a class="jxr_linenumber" name="119" href="#119">119</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> beforeAllTests() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="120" href="#120">120</a>     <em class="jxr_comment">// Start a cluster</em>
+<a class="jxr_linenumber" name="121" href="#121">121</a>     TEST_UTIL.startMiniCluster(1, NB_SERVERS, <strong class="jxr_keyword">null</strong>, MyMaster.<strong class="jxr_keyword">class</strong>, <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="122" href="#122">122</a>     <a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html">MiniHBaseCluster</a> cluster = TEST_UTIL.getHBaseCluster();
+<a class="jxr_linenumber" name="123" href="#123">123</a>     MASTER = cluster.getMaster();
+<a class="jxr_linenumber" name="124" href="#124">124</a>     MASTER.balanceSwitch(false);
+<a class="jxr_linenumber" name="125" href="#125">125</a>     ADMIN = TEST_UTIL.getConnection().getAdmin();
+<a class="jxr_linenumber" name="126" href="#126">126</a>   }
+<a class="jxr_linenumber" name="127" href="#127">127</a> 
+<a class="jxr_linenumber" name="128" href="#128">128</a>   @AfterClass
+<a class="jxr_linenumber" name="129" href="#129">129</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> afterAllTests() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="130" href="#130">130</a>     TEST_UTIL.shutdownMiniCluster();
+<a class="jxr_linenumber" name="131" href="#131">131</a>     <strong class="jxr_keyword">if</strong> (ADMIN != <strong class="jxr_keyword">null</strong>) ADMIN.close();
+<a class="jxr_linenumber" name="132" href="#132">132</a>   }
+<a class="jxr_linenumber" name="133" href="#133">133</a> 
+<a class="jxr_linenumber" name="134" href="#134">134</a>   @Test
+<a class="jxr_linenumber" name="135" href="#135">135</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testWholesomeMerge() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="136" href="#136">136</a>     LOG.info(<span class="jxr_string">"Starting testWholesomeMerge"</span>);
+<a class="jxr_linenumber" name="137" href="#137">137</a>     <strong class="jxr_keyword">final</strong> TableName tableName =
+<a class="jxr_linenumber" name="138" href="#138">138</a>         TableName.valueOf(<span class="jxr_string">"testWholesomeMerge"</span>);
+<a class="jxr_linenumber" name="139" href="#139">139</a> 
+<a class="jxr_linenumber" name="140" href="#140">140</a>     <em class="jxr_comment">// Create table and load data.</em>
+<a class="jxr_linenumber" name="141" href="#141">141</a>     Table table = createTableAndLoadData(MASTER, tableName);
+<a class="jxr_linenumber" name="142" href="#142">142</a>     <em class="jxr_comment">// Merge 1st and 2nd region</em>
+<a class="jxr_linenumber" name="143" href="#143">143</a>     mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1,
+<a class="jxr_linenumber" name="144" href="#144">144</a>         INITIAL_REGION_NUM - 1);
+<a class="jxr_linenumber" name="145" href="#145">145</a> 
+<a class="jxr_linenumber" name="146" href="#146">146</a>     <em class="jxr_comment">// Merge 2nd and 3th region</em>
+<a class="jxr_linenumber" name="147" href="#147">147</a>     PairOfSameType&lt;HRegionInfo&gt; mergedRegions =
+<a class="jxr_linenumber" name="148" href="#148">148</a>       mergeRegionsAndVerifyRegionNum(MASTER, tableName, 1, 2,
+<a class="jxr_linenumber" name="149" href="#149">149</a>         INITIAL_REGION_NUM - 2);
 <a class="jxr_linenumber" name="150" href="#150">150</a> 
-<a class="jxr_linenumber" name="151" href="#151">151</a>     <em class="jxr_comment">// Randomly choose one of the two merged regions</em>
-<a class="jxr_linenumber" name="152" href="#152">152</a>     HRegionInfo hri = RandomUtils.nextBoolean() ?
-<a class="jxr_linenumber" name="153" href="#153">153</a>       mergedRegions.getFirst() : mergedRegions.getSecond();
-<a class="jxr_linenumber" name="154" href="#154">154</a>     <a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html">MiniHBaseCluster</a> cluster = TEST_UTIL.getHBaseCluster();
-<a class="jxr_linenumber" name="155" href="#155">155</a>     AssignmentManager am = cluster.getMaster().getAssignmentManager();
-<a class="jxr_linenumber" name="156" href="#156">156</a>     RegionStates regionStates = am.getRegionStates();
-<a class="jxr_linenumber" name="157" href="#157">157</a>     <strong class="jxr_keyword">long</strong> start = EnvironmentEdgeManager.currentTime();
-<a class="jxr_linenumber" name="158" href="#158">158</a>     <strong class="jxr_keyword">while</strong> (!regionStates.isRegionInState(hri, State.MERGED)) {
-<a class="jxr_linenumber" name="159" href="#159">159</a>       assertFalse(<span class="jxr_string">"Timed out in waiting one merged region to be in state MERGED"</span>,
-<a class="jxr_linenumber" name="160" href="#160">160</a>         EnvironmentEdgeManager.currentTime() - start &gt; 60000);
-<a class="jxr_linenumber" name="161" href="#161">161</a>       Thread.sleep(500);
-<a class="jxr_linenumber" name="162" href="#162">162</a>     }
-<a class="jxr_linenumber" name="163" href="#163">163</a> 
-<a class="jxr_linenumber" name="164" href="#164">164</a>     <em class="jxr_comment">// We should not be able to assign it again</em>
-<a class="jxr_linenumber" name="165" href="#165">165</a>     am.assign(hri, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="166" href="#166">166</a>     assertFalse(<span class="jxr_string">"Merged region can't be assigned"</span>,
-<a class="jxr_linenumber" name="167" href="#167">167</a>       regionStates.isRegionInTransition(hri));
-<a class="jxr_linenumber" name="168" href="#168">168</a>     assertTrue(regionStates.isRegionInState(hri, State.MERGED));
-<a class="jxr_linenumber" name="169" href="#169">169</a> 
-<a class="jxr_linenumber" name="170" href="#170">170</a>     <em class="jxr_comment">// We should not be able to unassign it either</em>
-<a class="jxr_linenumber" name="171" href="#171">171</a>     am.unassign(hri, <strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="172" href="#172">172</a>     assertFalse(<span class="jxr_string">"Merged region can't be unassigned"</span>,
-<a class="jxr_linenumber" name="173" href="#173">173</a>       regionStates.isRegionInTransition(hri));
-<a class="jxr_linenumber" name="174" href="#174">174</a>     assertTrue(regionStates.isRegionInState(hri, State.MERGED));
-<a class="jxr_linenumber" name="175" href="#175">175</a> 
-<a class="jxr_linenumber" name="176" href="#176">176</a>     table.close();
-<a class="jxr_linenumber" name="177" href="#177">177</a>   }
-<a class="jxr_linenumber" name="178" href="#178">178</a> 
-<a class="jxr_linenumber" name="179" href="#179">179</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="180" href="#180">180</a> <em class="jxr_javadoccomment">   * Not really restarting the master. Simulate it by clear of new region</em>
-<a class="jxr_linenumber" name="181" href="#181">181</a> <em class="jxr_javadoccomment">   * state since it is not persisted, will be lost after master restarts.</em>
-<a class="jxr_linenumber" name="182" href="#182">182</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="183" href="#183">183</a>   @Test
-<a class="jxr_linenumber" name="184" href="#184">184</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMergeAndRestartingMaster() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="185" href="#185">185</a>     LOG.info(<span class="jxr_string">"Starting testMergeAndRestartingMaster"</span>);
-<a class="jxr_linenumber" name="186" href="#186">186</a>     <strong class="jxr_keyword">final</strong> TableName tableName = TableName.valueOf(<span class="jxr_string">"testMergeAndRestartingMaster"</span>);
-<a class="jxr_linenumber" name="187" href="#187">187</a> 
-<a class="jxr_linenumber" name="188" href="#188">188</a>     <em class="jxr_comment">// Create table and load data.</em>
-<a class="jxr_linenumber" name="189" href="#189">189</a>     Table table = createTableAndLoadData(MASTER, tableName);
-<a class="jxr_linenumber" name="190" href="#190">190</a> 
-<a class="jxr_linenumber" name="191" href="#191">191</a>     <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="192" href="#192">192</a>       MyMasterRpcServices.enabled.set(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="193" href="#193">193</a> 
-<a class="jxr_linenumber" name="194" href="#194">194</a>       <em class="jxr_comment">// Merge 1st and 2nd region</em>
-<a class="jxr_linenumber" name="195" href="#195">195</a>       mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1, INITIAL_REGION_NUM - 1);
-<a class="jxr_linenumber" name="196" href="#196">196</a>     } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="197" href="#197">197</a>       MyMasterRpcServices.enabled.set(false);
-<a class="jxr_linenumber" name="198" href="#198">198</a>     }
-<a class="jxr_linenumber" name="199" href="#199">199</a> 
-<a class="jxr_linenumber" name="200" href="#200">200</a>     table.close();
-<a class="jxr_linenumber" name="201" href="#201">201</a>   }
-<a class="jxr_linenumber" name="202" href="#202">202</a> 
-<a class="jxr_linenumber" name="203" href="#203">203</a>   @Test
-<a class="jxr_linenumber" name="204" href="#204">204</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCleanMergeReference() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="205" href="#205">205</a>     LOG.info(<span class="jxr_string">"Starting testCleanMergeReference"</span>);
-<a class="jxr_linenumber" name="206" href="#206">206</a>     ADMIN.enableCatalogJanitor(false);
-<a class="jxr_linenumber" name="207" href="#207">207</a>     <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="208" href="#208">208</a>       <strong class="jxr_keyword">final</strong> TableName tableName =
-<a class="jxr_linenumber" name="209" href="#209">209</a>           TableName.valueOf(<span class="jxr_string">"testCleanMergeReference"</span>);
-<a class="jxr_linenumber" name="210" href="#210">210</a>       <em class="jxr_comment">// Create table and load data.</em>
-<a class="jxr_linenumber" name="211" href="#211">211</a>       Table table = createTableAndLoadData(MASTER, tableName);
-<a class="jxr_linenumber" name="212" href="#212">212</a>       <em class="jxr_comment">// Merge 1st and 2nd region</em>
-<a class="jxr_linenumber" name="213" href="#213">213</a>       mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1,
-<a class="jxr_linenumber" name="214" href="#214">214</a>           INITIAL_REGION_NUM - 1);
-<a class="jxr_linenumber" name="215" href="#215">215</a>       verifyRowCount(table, ROWSIZE);
-<a class="jxr_linenumber" name="216" href="#216">216</a>       table.close();
-<a class="jxr_linenumber" name="217" href="#217">217</a> 
-<a class="jxr_linenumber" name="218" href="#218">218</a>       List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions = MetaTableAccessor
-<a class="jxr_linenumber" name="219" href="#219">219</a>           .getTableRegionsAndLocations(MASTER.getConnection(), tableName);
-<a class="jxr_linenumber" name="220" href="#220">220</a>       HRegionInfo mergedRegionInfo = tableRegions.get(0).getFirst();
-<a class="jxr_linenumber" name="221" href="#221">221</a>       HTableDescriptor tableDescriptor = MASTER.getTableDescriptors().get(
-<a class="jxr_linenumber" name="222" href="#222">222</a>           tableName);
-<a class="jxr_linenumber" name="223" href="#223">223</a>       Result mergedRegionResult = MetaTableAccessor.getRegionResult(
-<a class="jxr_linenumber" name="224" href="#224">224</a>         MASTER.getConnection(), mergedRegionInfo.getRegionName());
-<a class="jxr_linenumber" name="225" href="#225">225</a> 
-<a class="jxr_linenumber" name="226" href="#226">226</a>       <em class="jxr_comment">// contains merge reference in META</em>
-<a class="jxr_linenumber" name="227" href="#227">227</a>       assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,
-<a class="jxr_linenumber" name="228" href="#228">228</a>           HConstants.MERGEA_QUALIFIER) != <strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="229" href="#229">229</a>       assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,
-<a class="jxr_linenumber" name="230" href="#230">230</a>           HConstants.MERGEB_QUALIFIER) != <strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="231" href="#231">231</a> 
-<a class="jxr_linenumber" name="232" href="#232">232</a>       <em class="jxr_comment">// merging regions' directory are in the file system all the same</em>
-<a class="jxr_linenumber" name="233" href="#233">233</a>       PairOfSameType&lt;HRegionInfo&gt; p = MetaTableAccessor.getMergeRegions(mergedRegionResult);
-<a class="jxr_linenumber" name="234" href="#234">234</a>       HRegionInfo regionA = p.getFirst();
-<a class="jxr_linenumber" name="235" href="#235">235</a>       HRegionInfo regionB = p.getSecond();
-<a class="jxr_linenumber" name="236" href="#236">236</a>       FileSystem fs = MASTER.getMasterFileSystem().getFileSystem();
-<a class="jxr_linenumber" name="237" href="#237">237</a>       Path rootDir = MASTER.getMasterFileSystem().getRootDir();
-<a class="jxr_linenumber" name="238" href="#238">238</a> 
-<a class="jxr_linenumber" name="239" href="#239">239</a>       Path tabledir = FSUtils.getTableDir(rootDir, mergedRegionInfo.getTable());
-<a class="jxr_linenumber" name="240" href="#240">240</a>       Path regionAdir = <strong class="jxr_keyword">new</strong> Path(tabledir, regionA.getEncodedName());
-<a class="jxr_linenumber" name="241" href="#241">241</a>       Path regionBdir = <strong class="jxr_keyword">new</strong> Path(tabledir, regionB.getEncodedName());
-<a class="jxr_linenumber" name="242" href="#242">242</a>       assertTrue(fs.exists(regionAdir));
-<a class="jxr_linenumber" name="243" href="#243">243</a>       assertTrue(fs.exists(regionBdir));
-<a class="jxr_linenumber" name="244" href="#244">244</a> 
-<a class="jxr_linenumber" name="245" href="#245">245</a>       HColumnDescriptor[] columnFamilies = tableDescriptor.getColumnFamilies();
-<a class="jxr_linenumber" name="246" href="#246">246</a>       HRegionFileSystem hrfs = <strong class="jxr_keyword">new</strong> HRegionFileSystem(
-<a class="jxr_linenumber" name="247" href="#247">247</a>         TEST_UTIL.getConfiguration(), fs, tabledir, mergedRegionInfo);
-<a class="jxr_linenumber" name="248" href="#248">248</a>       <strong class="jxr_keyword">int</strong> count = 0;
-<a class="jxr_linenumber" name="249" href="#249">249</a>       <strong class="jxr_keyword">for</strong>(HColumnDescriptor colFamily : columnFamilies) {
-<a class="jxr_linenumber" name="250" href="#250">250</a>         count += hrfs.getStoreFiles(colFamily.getName()).size();
-<a class="jxr_linenumber" name="251" href="#251">251</a>       }
-<a class="jxr_linenumber" name="252" href="#252">252</a>       ADMIN.compactRegion(mergedRegionInfo.getRegionName());
-<a class="jxr_linenumber" name="253" href="#253">253</a>       <em class="jxr_comment">// clean up the merged region store files</em>
-<a class="jxr_linenumber" name="254" href="#254">254</a>       <em class="jxr_comment">// wait until merged region have reference file</em>
-<a class="jxr_linenumber" name="255" href="#255">255</a>       <strong class="jxr_keyword">long</strong> timeout = System.currentTimeMillis() + waitTime;
-<a class="jxr_linenumber" name="256" href="#256">256</a>       <strong class="jxr_keyword">int</strong> newcount = 0;
-<a class="jxr_linenumber" name="257" href="#257">257</a>       <strong class="jxr_keyword">while</strong> (System.currentTimeMillis() &lt; timeout) {
-<a class="jxr_linenumber" name="258" href="#258">258</a>         <strong class="jxr_keyword">for</strong>(HColumnDescriptor colFamily : columnFamilies) {
-<a class="jxr_linenumber" name="259" href="#259">259</a>           newcount += hrfs.getStoreFiles(colFamily.getName()).size();
-<a class="jxr_linenumber" name="260" href="#260">260</a>         }
-<a class="jxr_linenumber" name="261" href="#261">261</a>         <strong class="jxr_keyword">if</strong>(newcount &gt; count) {
-<a class="jxr_linenumber" name="262" href="#262">262</a>           <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="263" href="#263">263</a>         }
-<a class="jxr_linenumber" name="264" href="#264">264</a>         Thread.sleep(50);
-<a class="jxr_linenumber" name="265" href="#265">265</a>       }
-<a class="jxr_linenumber" name="266" href="#266">266</a>       assertTrue(newcount &gt; count);
-<a class="jxr_linenumber" name="267" href="#267">267</a>       List&lt;RegionServerThread&gt; regionServerThreads = TEST_UTIL.getHBaseCluster()
-<a class="jxr_linenumber" name="268" href="#268">268</a>           .getRegionServerThreads();
-<a class="jxr_linenumber" name="269" href="#269">269</a>       <strong class="jxr_keyword">for</strong> (RegionServerThread rs : regionServerThreads) {
-<a class="jxr_linenumber" name="270" href="#270">270</a>         CompactedHFilesDischarger cleaner = <strong class="jxr_keyword">new</strong> CompactedHFilesDischarger(100, <strong class="jxr_keyword">null</strong>,
-<a class="jxr_linenumber" name="271" href="#271">271</a>             rs.getRegionServer(), false);
-<a class="jxr_linenumber" name="272" href="#272">272</a>         cleaner.chore();
-<a class="jxr_linenumber" name="273" href="#273">273</a>         Thread.sleep(1000);
-<a class="jxr_linenumber" name="274" href="#274">274</a>       }
-<a class="jxr_linenumber" name="275" href="#275">275</a>       <strong class="jxr_keyword">while</strong> (System.currentTimeMillis() &lt; timeout) {
-<a class="jxr_linenumber" name="276" href="#276">276</a>         <strong class="jxr_keyword">int</strong> newcount1 = 0;
-<a class="jxr_linenumber" name="277" href="#277">277</a>         <strong class="jxr_keyword">for</strong>(HColumnDescriptor colFamily : columnFamilies) {
-<a class="jxr_linenumber" name="278" href="#278">278</a>           newcount1 += hrfs.getStoreFiles(colFamily.getName()).size();
-<a class="jxr_linenumber" name="279" href="#279">279</a>         }
-<a class="jxr_linenumber" name="280" href="#280">280</a>         <strong class="jxr_keyword">if</strong>(newcount1 &lt;= 1) {
-<a class="jxr_linenumber" name="281" href="#281">281</a>           <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="282" href="#282">282</a>         }
-<a class="jxr_linenumber" name="283" href="#283">283</a>         Thread.sleep(50);
-<a class="jxr_linenumber" name="284" href="#284">284</a>       }
-<a class="jxr_linenumber" name="285" href="#285">285</a>       <em class="jxr_comment">// run CatalogJanitor to clean merge references in hbase:meta and archive the</em>
-<a class="jxr_linenumber" name="286" href="#286">286</a>       <em class="jxr_comment">// files of merging regions</em>
-<a class="jxr_linenumber" name="287" href="#287">287</a>       <strong class="jxr_keyword">int</strong> cleaned = 0;
-<a class="jxr_linenumber" name="288" href="#288">288</a>       <strong class="jxr_keyword">while</strong> (cleaned == 0) {
-<a class="jxr_linenumber" name="289" href="#289">289</a>         cleaned = ADMIN.runCatalogScan();
-<a class="jxr_linenumber" name="290" href="#290">290</a>         LOG.debug(<span class="jxr_string">"catalog janitor returned "</span> + cleaned);
-<a class="jxr_linenumber" name="291" href="#291">291</a>         Thread.sleep(50);
-<a class="jxr_linenumber" name="292" href="#292">292</a>       }
-<a class="jxr_linenumber" name="293" href="#293">293</a>       assertFalse(regionAdir.toString(), fs.exists(regionAdir));
-<a class="jxr_linenumber" name="294" href="#294">294</a>       assertFalse(regionBdir.toString(), fs.exists(regionBdir));
-<a class="jxr_linenumber" name="295" href="#295">295</a>       assertTrue(cleaned &gt; 0);
-<a class="jxr_linenumber" name="296" href="#296">296</a> 
-<a class="jxr_linenumber" name="297" href="#297">297</a>       mergedRegionResult = MetaTableAccessor.getRegionResult(
-<a class="jxr_linenumber" name="298" href="#298">298</a>         TEST_UTIL.getConnection(), mergedRegionInfo.getRegionName());
-<a class="jxr_linenumber" name="299" href="#299">299</a>       assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,
-<a class="jxr_linenumber" name="300" href="#300">300</a>           HConstants.MERGEA_QUALIFIER) != <strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="301" href="#301">301</a>       assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,
-<a class="jxr_linenumber" name="302" href="#302">302</a>           HConstants.MERGEB_QUALIFIER) != <strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="303" href="#303">303</a> 
-<a class="jxr_linenumber" name="304" href="#304">304</a>     } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="305" href="#305">305</a>       ADMIN.enableCatalogJanitor(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="306" href="#306">306</a>     }
-<a class="jxr_linenumber" name="307" href="#307">307</a>   }
-<a class="jxr_linenumber" name="308" href="#308">308</a> 
-<a class="jxr_linenumber" name="309" href="#309">309</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="310" href="#310">310</a> <em class="jxr_javadoccomment">   * This test tests 1, merging region not online;</em>
-<a class="jxr_linenumber" name="311" href="#311">311</a> <em class="jxr_javadoccomment">   * 2, merging same two regions; 3, merging unknown regions.</em>
-<a class="jxr_linenumber" name="312" href="#312">312</a> <em class="jxr_javadoccomment">   * They are in one test case so that we don't have to create</em>
-<a class="jxr_linenumber" name="313" href="#313">313</a> <em class="jxr_javadoccomment">   * many tables, and these tests are simple.</em>
-<a class="jxr_linenumber" name="314" href="#314">314</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="315" href="#315">315</a>   @Test
-<a class="jxr_linenumber" name="316" href="#316">316</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMerge() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="317" href="#317">317</a>     LOG.info(<span class="jxr_string">"Starting testMerge"</span>);
-<a class="jxr_linenumber" name="318" href="#318">318</a>     <strong class="jxr_keyword">final</strong> TableName tableName = TableName.valueOf(<span class="jxr_string">"testMerge"</span>);
-<a class="jxr_linenumber" name="319" href="#319">319</a> 
-<a class="jxr_linenumber" name="320" href="#320">320</a>     <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="321" href="#321">321</a>       <em class="jxr_comment">// Create table and load data.</em>
-<a class="jxr_linenumber" name="322" href="#322">322</a>       Table table = createTableAndLoadData(MASTER, tableName);
-<a class="jxr_linenumber" name="323" href="#323">323</a>       RegionStates regionStates = MASTER.getAssignmentManager().getRegionStates();
-<a class="jxr_linenumber" name="324" href="#324">324</a>       List&lt;HRegionInfo&gt; regions = regionStates.getRegionsOfTable(tableName);
-<a class="jxr_linenumber" name="325" href="#325">325</a>       <em class="jxr_comment">// Fake offline one region</em>
-<a class="jxr_linenumber" name="326" href="#326">326</a>       HRegionInfo a = regions.get(0);
-<a class="jxr_linenumber" name="327" href="#327">327</a>       HRegionInfo b = regions.get(1);
-<a class="jxr_linenumber" name="328" href="#328">328</a>       regionStates.regionOffline(a);
-<a class="jxr_linenumber" name="329" href="#329">329</a>       <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="330" href="#330">330</a>         <em class="jxr_comment">// Merge offline region. Region a is offline here</em>
-<a class="jxr_linenumber" name="331" href="#331">331</a>         ADMIN.mergeRegions(a.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), false);
-<a class="jxr_linenumber" name="332" href="#332">332</a>         fail(<span class="jxr_string">"Offline regions should not be able to merge"</span>);
-<a class="jxr_linenumber" name="333" href="#333">333</a>       } <strong class="jxr_keyword">catch</strong> (IOException ie) {
-<a class="jxr_linenumber" name="334" href="#334">334</a>         System.out.println(ie);
-<a class="jxr_linenumber" name="335" href="#335">335</a>         assertTrue(<span class="jxr_string">"Exception should mention regions not online"</span>,
-<a class="jxr_linenumber" name="336" href="#336">336</a>           StringUtils.stringifyException(ie).contains(<span class="jxr_string">"regions not online"</span>)
-<a class="jxr_linenumber" name="337" href="#337">337</a>             &amp;&amp; ie instanceof MergeRegionException);
-<a class="jxr_linenumber" name="338" href="#338">338</a>       }
-<a class="jxr_linenumber" name="339" href="#339">339</a>       <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="340" href="#340">340</a>         <em class="jxr_comment">// Merge the same region: b and b.</em>
-<a class="jxr_linenumber" name="341" href="#341">341</a>         ADMIN.mergeRegions(b.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="342" href="#342">342</a>         fail(<span class="jxr_string">"A region should not be able to merge with itself, even forcifully"</span>);
-<a class="jxr_linenumber" name="343" href="#343">343</a>       } <strong class="jxr_keyword">catch</strong> (IOException ie) {
-<a class="jxr_linenumber" name="344" href="#344">344</a>         assertTrue(<span class="jxr_string">"Exception should mention regions not online"</span>,
-<a class="jxr_linenumber" name="345" href="#345">345</a>           StringUtils.stringifyException(ie).contains(<span class="jxr_string">"region to itself"</span>)
-<a class="jxr_linenumber" name="346" href="#346">346</a>             &amp;&amp; ie instanceof MergeRegionException);
-<a class="jxr_linenumber" name="347" href="#347">347</a>       }
-<a class="jxr_linenumber" name="348" href="#348">348</a>       <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="349" href="#349">349</a>         <em class="jxr_comment">// Merge unknown regions</em>
-<a class="jxr_linenumber" name="350" href="#350">350</a>         ADMIN.mergeRegions(Bytes.toBytes(<span class="jxr_string">"-f1"</span>), Bytes.toBytes(<span class="jxr_string">"-f2"</span>), <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="351" href="#351">351</a>         fail(<span class="jxr_string">"Unknown region could not be merged"</span>);
-<a class="jxr_linenumber" name="352" href="#352">352</a>       } <strong class="jxr_keyword">catch</strong> (IOException ie) {
-<a class="jxr_linenumber" name="353" href="#353">353</a>         assertTrue(<span class="jxr_string">"UnknownRegionException should be thrown"</span>,
-<a class="jxr_linenumber" name="354" href="#354">354</a>           ie instanceof UnknownRegionException);
-<a class="jxr_linenumber" name="355" href="#355">355</a>       }
-<a class="jxr_linenumber" name="356" href="#356">356</a>       table.close();
-<a class="jxr_linenumber" name="357" href="#357">357</a>     } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="358" href="#358">358</a>       TEST_UTIL.deleteTable(tableName);
-<a class="jxr_linenumber" name="359" href="#359">359</a>     }
-<a class="jxr_linenumber" name="360" href="#360">360</a>   }
-<a class="jxr_linenumber" name="361" href="#361">361</a> 
-<a class="jxr_linenumber" name="362" href="#362">362</a>   @Test
-<a class="jxr_linenumber" name="363" href="#363">363</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMergeWithReplicas() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="364" href="#364">364</a>     <strong class="jxr_keyword">final</strong> TableName tableName = TableName.valueOf(<span class="jxr_string">"testMergeWithReplicas"</span>);
-<a class="jxr_linenumber" name="365" href="#365">365</a>     <em class="jxr_comment">// Create table and load data.</em>
-<a class="jxr_linenumber" name="366" href="#366">366</a>     createTableAndLoadData(MASTER, tableName, 5, 2);
-<a class="jxr_linenumber" name="367" href="#367">367</a>     List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; initialRegionToServers =
-<a class="jxr_linenumber" name="368" href="#368">368</a>         MetaTableAccessor.getTableRegionsAndLocations(
-<a class="jxr_linenumber" name="369" href="#369">369</a>             TEST_UTIL.getConnection(), tableName);
-<a class="jxr_linenumber" name="370" href="#370">370</a>     <em class="jxr_comment">// Merge 1st and 2nd region</em>
-<a class="jxr_linenumber" name="371" href="#371">371</a>     PairOfSameType&lt;HRegionInfo&gt; mergedRegions = mergeRegionsAndVerifyRegionNum(MASTER, tableName,
-<a class="jxr_linenumber" name="372" href="#372">372</a>         0, 2, 5 * 2 - 2);
-<a class="jxr_linenumber" name="373" href="#373">373</a>     List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; currentRegionToServers =
-<a class="jxr_linenumber" name="374" href="#374">374</a>         MetaTableAccessor.getTableRegionsAndLocations(
-<a class="jxr_linenumber" name="375" href="#375">375</a>             TEST_UTIL.getConnection(), tableName);
-<a class="jxr_linenumber" name="376" href="#376">376</a>     List&lt;HRegionInfo&gt; initialRegions = <strong class="jxr_keyword">new</strong> ArrayList&lt;HRegionInfo&gt;();
-<a class="jxr_linenumber" name="377" href="#377">377</a>     <strong class="jxr_keyword">for</strong> (Pair&lt;HRegionInfo, ServerName&gt; p : initialRegionToServers) {
-<a class="jxr_linenumber" name="378" href="#378">378</a>       initialRegions.add(p.getFirst());
-<a class="jxr_linenumber" name="379" href="#379">379</a>     }
-<a class="jxr_linenumber" name="380" href="#380">380</a>     List&lt;HRegionInfo&gt; currentRegions = <strong class="jxr_keyword">new</strong> ArrayList&lt;HRegionInfo&gt;();
-<a class="jxr_linenumber" name="381" href="#381">381</a>     <strong class="jxr_keyword">for</strong> (Pair&lt;HRegionInfo, ServerName&gt; p : currentRegionToServers) {
-<a class="jxr_linenumber" name="382" href="#382">382</a>       currentRegions.add(p.getFirst());
-<a class="jxr_linenumber" name="383" href="#383">383</a>     }
-<a class="jxr_linenumber" name="384" href="#384">384</a>     assertTrue(initialRegions.contains(mergedRegions.getFirst())); <em class="jxr_comment">//this is the first region</em>
-<a class="jxr_linenumber" name="385" href="#385">385</a>     assertTrue(initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(
-<a class="jxr_linenumber" name="386" href="#386">386</a>         mergedRegions.getFirst(), 1))); <em class="jxr_comment">//this is the replica of the first region</em>
-<a class="jxr_linenumber" name="387" href="#387">387</a>     assertTrue(initialRegions.contains(mergedRegions.getSecond())); <em class="jxr_comment">//this is the second region</em>
-<a class="jxr_linenumber" name="388" href="#388">388</a>     assertTrue(initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(
-<a class="jxr_linenumber" name="389" href="#389">389</a>         mergedRegions.getSecond(), 1))); <em class="jxr_comment">//this is the replica of the second region</em>
-<a class="jxr_linenumber" name="390" href="#390">390</a>     assertTrue(!initialRegions.contains(currentRegions.get(0))); <em class="jxr_comment">//this is the new region</em>
-<a class="jxr_linenumber" name="391" href="#391">391</a>     assertTrue(!initialRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(
-<a class="jxr_linenumber" name="392" href="#392">392</a>         currentRegions.get(0), 1))); <em class="jxr_comment">//replica of the new region</em>
-<a class="jxr_linenumber" name="393" href="#393">393</a>     assertTrue(currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(
-<a class="jxr_linenumber" name="394" href="#394">394</a>         currentRegions.get(0), 1))); <em class="jxr_comment">//replica of the new region</em>
-<a class="jxr_linenumber" name="395" href="#395">395</a>     assertTrue(!currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(
-<a class="jxr_linenumber" name="396" href="#396">396</a>         mergedRegions.getFirst(), 1))); <em class="jxr_comment">//replica of the merged region</em>
-<a class="jxr_linenumber" name="397" href="#397">397</a>     assertTrue(!currentRegions.contains(RegionReplicaUtil.getRegionInfoForReplica(
-<a class="jxr_linenumber" name="398" href="#398">398</a>         mergedRegions.getSecond(), 1))); <em class="jxr_comment">//replica of the merged region</em>
-<a class="jxr_linenumber" name="399" href="#399">399</a>   }
-<a class="jxr_linenumber" name="400" href="#400">400</a> 
-<a class="jxr_linenumber" name="401" href="#401">401</a>   <strong class="jxr_keyword">private</strong> PairOfSameType&lt;HRegionInfo&gt; mergeRegionsAndVerifyRegionNum(
-<a class="jxr_linenumber" name="402" href="#402">402</a>       HMaster master, TableName tablename,
-<a class="jxr_linenumber" name="403" href="#403">403</a>       <strong class="jxr_keyword">int</strong> regionAnum, <strong class="jxr_keyword">int</strong> regionBnum, <strong class="jxr_keyword">int</strong> expectedRegionNum) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="404" href="#404">404</a>     PairOfSameType&lt;HRegionInfo&gt; mergedRegions =
-<a class="jxr_linenumber" name="405" href="#405">405</a>       requestMergeRegion(master, tablename, regionAnum, regionBnum);
-<a class="jxr_linenumber" name="406" href="#406">406</a>     waitAndVerifyRegionNum(master, tablename, expectedRegionNum);
-<a class="jxr_linenumber" name="407" href="#407">407</a>     <strong class="jxr_keyword">return</strong> mergedRegions;
-<a class="jxr_linenumber" name="408" href="#408">408</a>   }
-<a class="jxr_linenumber" name="409" href="#409">409</a> 
-<a class="jxr_linenumber" name="410" href="#410">410</a>   <strong class="jxr_keyword">private</strong> PairOfSameType&lt;HRegionInfo&gt; requestMergeRegion(
-<a class="jxr_linenumber" name="411" href="#411">411</a>       HMaster master, TableName tablename,
-<a class="jxr_linenumber" name="412" href="#412">412</a>       <strong class="jxr_keyword">int</strong> regionAnum, <strong class="jxr_keyword">int</strong> regionBnum) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="413" href="#413">413</a>     List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions = MetaTableAccessor
-<a class="jxr_linenumber" name="414" href="#414">414</a>         .getTableRegionsAndLocations(
-<a class="jxr_linenumber" name="415" href="#415">415</a>             TEST_UTIL.getConnection(), tablename);
-<a class="jxr_linenumber" name="416" href="#416">416</a>     HRegionInfo regionA = tableRegions.get(regionAnum).getFirst();
-<a class="jxr_linenumber" name="417" href="#417">417</a>     HRegionInfo regionB = tableRegions.get(regionBnum).getFirst();
-<a class="jxr_linenumber" name="418" href="#418">418</a>     ADMIN.mergeRegions(
-<a class="jxr_linenumber" name="419" href="#419">419</a>       regionA.getEncodedNameAsBytes(),
-<a class="jxr_linenumber" name="420" href="#420">420</a>       regionB.getEncodedNameAsBytes(), false);
-<a class="jxr_linenumber" name="421" href="#421">421</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> PairOfSameType&lt;HRegionInfo&gt;(regionA, regionB);
-<a class="jxr_linenumber" name="422" href="#422">422</a>   }
-<a class="jxr_linenumber" name="423" href="#423">423</a> 
-<a class="jxr_linenumber" name="424" href="#424">424</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> waitAndVerifyRegionNum(HMaster master, TableName tablename,
-<a class="jxr_linenumber" name="425" href="#425">425</a>       <strong class="jxr_keyword">int</strong> expectedRegionNum) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="426" href="#426">426</a>     List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegionsInMeta;
-<a class="jxr_linenumber" name="427" href="#427">427</a>     List&lt;HRegionInfo&gt; tableRegionsInMaster;
-<a class="jxr_linenumber" name="428" href="#428">428</a>     <strong class="jxr_keyword">long</strong> timeout = System.currentTimeMillis() + waitTime;
-<a class="jxr_linenumber" name="429" href="#429">429</a>     <strong class="jxr_keyword">while</strong> (System.currentTimeMillis() &lt; timeout) {
-<a class="jxr_linenumber" name="430" href="#430">430</a>       tableRegionsInMeta = MetaTableAccessor.getTableRegionsAndLocations(
-<a class="jxr_linenumber" name="431" href="#431">431</a>         TEST_UTIL.getConnection(), tablename);
-<a class="jxr_linenumber" name="432" href="#432">432</a>       tableRegionsInMaster = master.getAssignmentManager().getRegionStates()
-<a class="jxr_linenumber" name="433" href="#433">433</a>           .getRegionsOfTable(tablename);
-<a class="jxr_linenumber" name="434" href="#434">434</a>       <strong class="jxr_keyword">if</strong> (tableRegionsInMeta.size() == expectedRegionNum
-<a class="jxr_linenumber" name="435" href="#435">435</a>           &amp;&amp; tableRegionsInMaster.size() == expectedRegionNum) {
-<a class="jxr_linenumber" name="436" href="#436">436</a>         <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="437" href="#437">437</a>       }
-<a class="jxr_linenumber" name="438" href="#438">438</a>       Thread.sleep(250);
-<a class="jxr_linenumber" name="439" href="#439">439</a>     }
-<a class="jxr_linenumber" name="440" href="#440">440</a> 
-<a class="jxr_linenumber" name="441" href="#441">441</a>     tableRegionsInMeta = MetaTableAccessor.getTableRegionsAndLocations(
-<a class="jxr_linenumber" name="442" href="#442">442</a>         TEST_UTIL.getConnection(), tablename);
-<a class="jxr_linenumber" name="443" href="#443">443</a>     LOG.info(<span class="jxr_string">"Regions after merge:"</span> + Joiner.on(',').join(tableRegionsInMeta));
-<a class="jxr_linenumber" name="444" href="#444">444</a>     assertEquals(expectedRegionNum, tableRegionsInMeta.size());
-<a class="jxr_linenumber" name="445" href="#445">445</a>   }
-<a class="jxr_linenumber" name="446" href="#446">446</a> 
-<a class="jxr_linenumber" name="447" href="#447">447</a>   <strong class="jxr_keyword">private</strong> Table createTableAndLoadData(HMaster master, TableName tablename)
-<a class="jxr_linenumber" name="448" href="#448">448</a>       <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="449" href="#449">449</a>     <strong class="jxr_keyword">return</strong> createTableAndLoadData(master, tablename, INITIAL_REGION_NUM, 1);
-<a class="jxr_linenumber" name="450" href="#450">450</a>   }
-<a class="jxr_linenumber" name="451" href="#451">451</a> 
-<a class="jxr_linenumber" name="452" href="#452">452</a>   <strong class="jxr_keyword">private</strong> Table createTableAndLoadData(HMaster master, TableName tablename,
-<a class="jxr_linenumber" name="453" href="#453">453</a>       <strong class="jxr_keyword">int</strong> numRegions, <strong class="jxr_keyword">int</strong> replication) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="454" href="#454">454</a>     assertTrue(<span class="jxr_string">"ROWSIZE must &gt; numregions:"</span> + numRegions, ROWSIZE &gt; numRegions);
-<a class="jxr_linenumber" name="455" href="#455">455</a>     byte[][] splitRows = <strong class="jxr_keyword">new</strong> byte[numRegions - 1][];
-<a class="jxr_linenumber" name="456" href="#456">456</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; splitRows.length; i++) {
-<a class="jxr_linenumber" name="457" href="#457">457</a>       splitRows[i] = ROWS[(i + 1) * ROWSIZE / numRegions];
-<a class="jxr_linenumber" name="458" href="#458">458</a>     }
-<a class="jxr_linenumber" name="459" href="#459">459</a> 
-<a class="jxr_linenumber" name="460" href="#460">460</a>     Table table = TEST_UTIL.createTable(tablename, FAMILYNAME, splitRows);
-<a class="jxr_linenumber" name="461" href="#461">461</a>     <strong class="jxr_keyword">if</strong> (replication &gt; 1) {
-<a class="jxr_linenumber" name="462" href="#462">462</a>       HBaseTestingUtility.setReplicas(ADMIN, tablename, replication);
-<a class="jxr_linenumber" name="463" href="#463">463</a>     }
-<a class="jxr_linenumber" name="464" href="#464">464</a>     loadData(table);
-<a class="jxr_linenumber" name="465" href="#465">465</a>     verifyRowCount(table, ROWSIZE);
-<a class="jxr_linenumber" name="466" href="#466">466</a> 
-<a class="jxr_linenumber" name="467" href="#467">467</a>     <em class="jxr_comment">// sleep here is an ugly hack to allow region transitions to finish</em>
-<a class="jxr_linenumber" name="468" href="#468">468</a>     <strong class="jxr_keyword">long</strong> timeout = System.currentTimeMillis() + waitTime;
-<a class="jxr_linenumber" name="469" href="#469">469</a>     List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions;
-<a class="jxr_linenumber" name="470" href="#470">470</a>     <strong class="jxr_keyword">while</strong> (System.currentTimeMillis() &lt; timeout) {
-<a class="jxr_linenumber" name="471" href="#471">471</a>       tableRegions = MetaTableAccessor.getTableRegionsAndLocations(
-<a class="jxr_linenumber" name="472" href="#472">472</a>           TEST_UTIL.getConnection(), tablename);
-<a class="jxr_linenumber" name="473" href="#473">473</a>       <strong class="jxr_keyword">if</strong> (tableRegions.size() == numRegions * replication)
-<a class="jxr_linenumber" name="474" href="#474">474</a>         <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="475" href="#475">475</a>       Thread.sleep(250);
-<a class="jxr_linenumber" name="476" href="#476">476</a>     }
-<a class="jxr_linenumber" name="477" href="#477">477</a> 
-<a class="jxr_linenumber" name="478" href="#478">478</a>     tableRegions = MetaTableAccessor.getTableRegionsAndLocations(
-<a class="jxr_linenumber" name="479" href="#479">479</a>         TEST_UTIL.getConnection(), tablename);
-<a class="jxr_linenumber" name="480" href="#480">480</a>     LOG.info(<span class="jxr_string">"Regions after load: "</span> + Joiner.on(',').join(tableRegions));
-<a class="jxr_linenumber" name="481" href="#481">481</a>     assertEquals(numRegions * replication, tableRegions.size());
-<a class="jxr_linenumber" name="482" href="#482">482</a>     <strong class="jxr_keyword">return</strong> table;
-<a class="jxr_linenumber" name="483" href="#483">483</a>   }
-<a class="jxr_linenumber" name="484" href="#484">484</a> 
-<a class="jxr_linenumber" name="485" href="#485">485</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> byte[][] makeN(byte[] base, <strong class="jxr_keyword">int</strong> n) {
-<a class="jxr_linenumber" name="486" href="#486">486</a>     byte[][] ret = <strong class="jxr_keyword">new</strong> byte[n][];
-<a class="jxr_linenumber" name="487" href="#487">487</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; n; i++) {
-<a class="jxr_linenumber" name="488" href="#488">488</a>       ret[i] = Bytes.add(base, Bytes.toBytes(String.format(<span class="jxr_string">"%04d"</span>, i)));
-<a class="jxr_linenumber" name="489" href="#489">489</a>     }
-<a class="jxr_linenumber" name="490" href="#490">490</a>     <strong class="jxr_keyword">return</strong> ret;
-<a class="jxr_linenumber" name="491" href="#491">491</a>   }
-<a class="jxr_linenumber" name="492" href="#492">492</a> 
-<a class="jxr_linenumber" name="493" href="#493">493</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> loadData(Table table) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="494" href="#494">494</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; ROWSIZE; i++) {
-<a class="jxr_linenumber" name="495" href="#495">495</a>       Put put = <strong class="jxr_keyword">new</strong> Put(ROWS[i]);
-<a class="jxr_linenumber" name="496" href="#496">496</a>       put.addColumn(FAMILYNAME, QUALIFIER, Bytes.toBytes(i));
-<a class="jxr_linenumber" name="497" href="#497">497</a>       table.put(put);
-<a class="jxr_linenumber" name="498" href="#498">498</a>     }
-<a class="jxr_linenumber" name="499" href="#499">499</a>   }
-<a class="jxr_linenumber" name="500" href="#500">500</a> 
-<a class="jxr_linenumber" name="501" href="#501">501</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> verifyRowCount(Table table, <strong class="jxr_keyword">int</strong> expectedRegionNum)
-<a class="jxr_linenumber" name="502" href="#502">502</a>       <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="503" href="#503">503</a>     ResultScanner scanner = table.getScanner(<strong class="jxr_keyword">new</strong> Scan());
-<a class="jxr_linenumber" name="504" href="#504">504</a>     <strong class="jxr_keyword">int</strong> rowCount = 0;
-<a class="jxr_linenumber" name="505" href="#505">505</a>     <strong class="jxr_keyword">while</strong> (scanner.next() != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="506" href="#506">506</a>       rowCount++;
-<a class="jxr_linenumber" name="507" href="#507">507</a>     }
-<a class="jxr_linenumber" name="508" href="#508">508</a>     assertEquals(expectedRegionNum, rowCount);
-<a class="jxr_linenumber" name="509" href="#509">509</a>     scanner.close();
-<a class="jxr_linenumber" name="510" href="#510">510</a>   }
-<a class="jxr_linenumber" name="511" href="#511">511</a> 
-<a class="jxr_linenumber" name="512" href="#512">512</a>   <em class="jxr_comment">// Make it public so that JVMClusterUtil can access it.</em>
-<a class="jxr_linenumber" name="513" href="#513">513</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/master/TestMasterMetrics.html">MyMaster</a> <strong class="jxr_keyword">extends</strong> HMaster {
-<a class="jxr_linenumber" name="514" href="#514">514</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/master/TestMasterMetrics.html">MyMaster</a>(Configuration conf, CoordinatedStateManager cp)
-<a class="jxr_linenumber" name="515" href="#515">515</a>       <strong class="jxr_keyword">throws</strong> IOException, KeeperException,
-<a class="jxr_linenumber" name="516" href="#516">516</a>         InterruptedException {
-<a class="jxr_linenumber" name="517" href="#517">517</a>       <strong class="jxr_keyword">super</strong>(conf, cp);
-<a class="jxr_linenumber" name="518" href="#518">518</a>     }
-<a class="jxr_linenumber" name="519" href="#519">519</a> 
-<a class="jxr_linenumber" name="520" href="#520">520</a>     @Override
-<a class="jxr_linenumber" name="521" href="#521">521</a>     <strong class="jxr_keyword">protected</strong> RSRpcServices createRpcServices() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="522" href="#522">522</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html">MyMasterRpcServices</a>(<strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="151" href="#151">151</a>     verifyRowCount(table, ROWSIZE);
+<a class="jxr_linenumber" name="152" href="#152">152</a> 
+<a class="jxr_linenumber" name="153" href="#153">153</a>     <em class="jxr_comment">// Randomly choose one of the two merged regions</em>
+<a class="jxr_linenumber" name="154" href="#154">154</a>     HRegionInfo hri = RandomUtils.nextBoolean() ?
+<a class="jxr_linenumber" name="155" href="#155">155</a>       mergedRegions.getFirst() : mergedRegions.getSecond();
+<a class="jxr_linenumber" name="156" href="#156">156</a>     <a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html">MiniHBaseCluster</a> cluster = TEST_UTIL.getHBaseCluster();
+<a class="jxr_linenumber" name="157" href="#157">157</a>     AssignmentManager am = cluster.getMaster().getAssignmentManager();
+<a class="jxr_linenumber" name="158" href="#158">158</a>     RegionStates regionStates = am.getRegionStates();
+<a class="jxr_linenumber" name="159" href="#159">159</a>     <strong class="jxr_keyword">long</strong> start = EnvironmentEdgeManager.currentTime();
+<a class="jxr_linenumber" name="160" href="#160">160</a>     <strong class="jxr_keyword">while</strong> (!regionStates.isRegionInState(hri, State.MERGED)) {
+<a class="jxr_linenumber" name="161" href="#161">161</a>       assertFalse(<span class="jxr_string">"Timed out in waiting one merged region to be in state MERGED"</span>,
+<a class="jxr_linenumber" name="162" href="#162">162</a>         EnvironmentEdgeManager.currentTime() - start &gt; 60000);
+<a class="jxr_linenumber" name="163" href="#163">163</a>       Thread.sleep(500);
+<a class="jxr_linenumber" name="164" href="#164">164</a>     }
+<a class="jxr_linenumber" name="165" href="#165">165</a> 
+<a class="jxr_linenumber" name="166" href="#166">166</a>     <em class="jxr_comment">// We should not be able to assign it again</em>
+<a class="jxr_linenumber" name="167" href="#167">167</a>     am.assign(hri, <strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="168" href="#168">168</a>     assertFalse(<span class="jxr_string">"Merged region can't be assigned"</span>,
+<a class="jxr_linenumber" name="169" href="#169">169</a>       regionStates.isRegionInTransition(hri));
+<a class="jxr_linenumber" name="170" href="#170">170</a>     assertTrue(regionStates.isRegionInState(hri, State.MERGED));
+<a class="jxr_linenumber" name="171" href="#171">171</a> 
+<a class="jxr_linenumber" name="172" href="#172">172</a>     <em class="jxr_comment">// We should not be able to unassign it either</em>
+<a class="jxr_linenumber" name="173" href="#173">173</a>     am.unassign(hri, <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="174" href="#174">174</a>     assertFalse(<span class="jxr_string">"Merged region can't be unassigned"</span>,
+<a class="jxr_linenumber" name="175" href="#175">175</a>       regionStates.isRegionInTransition(hri));
+<a class="jxr_linenumber" name="176" href="#176">176</a>     assertTrue(regionStates.isRegionInState(hri, State.MERGED));
+<a class="jxr_linenumber" name="177" href="#177">177</a> 
+<a class="jxr_linenumber" name="178" href="#178">178</a>     table.close();
+<a class="jxr_linenumber" name="179" href="#179">179</a>   }
+<a class="jxr_linenumber" name="180" href="#180">180</a> 
+<a class="jxr_linenumber" name="181" href="#181">181</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="182" href="#182">182</a> <em class="jxr_javadoccomment">   * Not really restarting the master. Simulate it by clear of new region</em>
+<a class="jxr_linenumber" name="183" href="#183">183</a> <em class="jxr_javadoccomment">   * state since it is not persisted, will be lost after master restarts.</em>
+<a class="jxr_linenumber" name="184" href="#184">184</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="185" href="#185">185</a>   @Test
+<a class="jxr_linenumber" name="186" href="#186">186</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMergeAndRestartingMaster() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="187" href="#187">187</a>     <strong class="jxr_keyword">final</strong> TableName tableName = TableName.valueOf(<span class="jxr_string">"testMergeAndRestartingMaster"</span>);
+<a class="jxr_linenumber" name="188" href="#188">188</a> 
+<a class="jxr_linenumber" name="189" href="#189">189</a>     <em class="jxr_comment">// Create table and load data.</em>
+<a class="jxr_linenumber" name="190" href="#190">190</a>     Table table = createTableAndLoadData(MASTER, tableName);
+<a class="jxr_linenumber" name="191" href="#191">191</a> 
+<a class="jxr_linenumber" name="192" href="#192">192</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="193" href="#193">193</a>       MyMasterRpcServices.enabled.set(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="194" href="#194">194</a> 
+<a class="jxr_linenumber" name="195" href="#195">195</a>       <em class="jxr_comment">// Merge 1st and 2nd region</em>
+<a class="jxr_linenumber" name="196" href="#196">196</a>       mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1, INITIAL_REGION_NUM - 1);
+<a class="jxr_linenumber" name="197" href="#197">197</a>     } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="198" href="#198">198</a>       MyMasterRpcServices.enabled.set(false);
+<a class="jxr_linenumber" name="199" href="#199">199</a>     }
+<a class="jxr_linenumber" name="200" href="#200">200</a> 
+<a class="jxr_linenumber" name="201" href="#201">201</a>     table.close();
+<a class="jxr_linenumber" name="202" href="#202">202</a>   }
+<a class="jxr_linenumber" name="203" href="#203">203</a> 
+<a class="jxr_linenumber" name="204" href="#204">204</a>   @Test
+<a class="jxr_linenumber" name="205" href="#205">205</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCleanMergeReference() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="206" href="#206">206</a>     LOG.info(<span class="jxr_string">"Starting testCleanMergeReference"</span>);
+<a class="jxr_linenumber" name="207" href="#207">207</a>     ADMIN.enableCatalogJanitor(false);
+<a class="jxr_linenumber" name="208" href="#208">208</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="209" href="#209">209</a>       <strong class="jxr_keyword">final</strong> TableName tableName =
+<a class="jxr_linenumber" name="210" href="#210">210</a>           TableName.valueOf(<span class="jxr_string">"testCleanMergeReference"</span>);
+<a class="jxr_linenumber" name="211" href="#211">211</a>       <em class="jxr_comment">// Create table and load data.</em>
+<a class="jxr_linenumber" name="212" href="#212">212</a>       Table table = createTableAndLoadData(MASTER, tableName);
+<a class="jxr_linenumber" name="213" href="#213">213</a>       <em class="jxr_comment">// Merge 1st and 2nd region</em>
+<a class="jxr_linenumber" name="214" href="#214">214</a>       mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1,
+<a class="jxr_linenumber" name="215" href="#215">215</a>           INITIAL_REGION_NUM - 1);
+<a class="jxr_linenumber" name="216" href="#216">216</a>       verifyRowCount(table, ROWSIZE);
+<a class="jxr_linenumber" name="217" href="#217">217</a>       table.close();
+<a class="jxr_linenumber" name="218" href="#218">218</a> 
+<a class="jxr_linenumber" name="219" href="#219">219</a>       List&lt;Pair&lt;HRegionInfo, ServerName&gt;&gt; tableRegions = MetaTableAccessor
+<a class="jxr_linenumber" name="220" href="#220">220</a>           .getTableRegionsAndLocations(MASTER.getConnection(), tableName);
+<a class="jxr_linenumber" name="221" href="#221">221</a>       HRegionInfo mergedRegionInfo = tableRegions.get(0).getFirst();
+<a class="jxr_linenumber" name="222" href="#222">222</a>       HTableDescriptor tableDescriptor = MASTER.getTableDescriptors().get(
+<a class="jxr_linenumber" name="223" href="#223">223</a>           tableName);
+<a class="jxr_linenumber" name="224" href="#224">224</a>       Result mergedRegionResult = MetaTableAccessor.getRegionResult(
+<a class="jxr_linenumber" name="225" href="#225">225</a>         MASTER.getConnection(), mergedRegionInfo.getRegionName());
+<a class="jxr_linenumber" name="226" href="#226">226</a> 
+<a class="jxr_linenumber" name="227" href="#227">227</a>       <em class="jxr_comment">// contains merge reference in META</em>
+<a class="jxr_linenumber" name="228" href="#228">228</a>       assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,
+<a class="jxr_linenumber" name="229" href="#229">229</a>           HConstants.MERGEA_QUALIFIER) != <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="230" href="#230">230</a>       assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,
+<a class="jxr_linenumber" name="231" href="#231">231</a>           HConstants.MERGEB_QUALIFIER) != <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="232" href="#232">232</a> 
+<a class="jxr_linenumber" name="233" href="#233">233</a>       <em class="jxr_comment">// merging regions' directory are in the file system all the same</em>
+<a class="jxr_linenumber" name="234" href="#234">234</a>       PairOfSameType&lt;HRegionInfo&gt; p = MetaTableAccessor.getMergeRegions(mergedRegionResult);
+<a class="jxr_linenumber" name="235" href="#235">235</a>       HRegionInfo regionA = p.getFirst();
+<a class="jxr_linenumber" name="236" href="#236">236</a>       HRegionInfo regionB = p.getSecond();
+<a class="jxr_linenumber" name="237" href="#237">237</a>       FileSystem fs = MASTER.getMasterFileSystem().getFileSystem();
+<a class="jxr_linenumber" name="238" href="#238">238</a>       Path rootDir = MASTER.getMasterFileSystem().getRootDir();
+<a class="jxr_linenumber" name="239" href="#239">239</a> 
+<a class="jxr_linenumber" name="240" href="#240">240</a>       Path tabledir = FSUtils.getTableDir(rootDir, mergedRegionInfo.getTable());
+<a class="jxr_linenumber" name="241" href="#241">241</a>       Path regionAdir = <strong class="jxr_keyword">new</strong> Path(tabledir, regionA.getEncodedName());
+<a class="jxr_linenumber" name="242" href="#242">242</a>       Path regionBdir = <strong class="jxr_keyword">new</strong> Path(tabledir, regionB.getEncodedName());
+<a class="jxr_linenumber" name="243" href="#243">243</a>       assertTrue(fs.exists(regionAdir));
+<a class="jxr_linenumber" name="244" href="#244">244</a>       assertTrue(fs.exists(regionBdir));
+<a class="jxr_linenumber" name="245" href="#245">245</a> 
+<a class="jxr_linenumber" name="246" href="#246">246</a>       HColumnDescriptor[] columnFamilies = tableDescriptor.getColumnFamilies();
+<a class="jxr_linenumber" name="247" href="#247">247</a>       HRegionFileSystem hrfs = <strong class="jxr_keyword">new</strong> HRegionFileSystem(
+<a class="jxr_linenumber" name="248" href="#248">248</a>         TEST_UTIL.getConfiguration(), fs, tabledir, mergedRegionInfo);
+<a class="jxr_linenumber" name="249" href="#249">249</a>       <strong class="jxr_keyword">int</strong> count = 0;
+<a class="jxr_linenumber" name="250" href="#250">250</a>       <strong class="jxr_keyword">for</strong>(HColumnDescriptor colFamily : columnFamilies) {
+<a class="jxr_linenumber" name="251" href="#251">251</a>         count += hrfs.getStoreFiles(colFamily.getName()).size();
+<a class="jxr_linenumber" name="252" href="#252">252</a>       }
+<a class="jxr_linenumber" name="253" href="#253">253</a>       ADMIN.compactRegion(mergedRegionInfo.getRegionName());
+<a class="jxr_linenumber" name="254" href="#254">254</a>       <em class="jxr_comment">// clean up the merged region store files</em>
+<a class="jxr_linenumber" name="255" href="#255">255</a>       <em class="jxr_comment">// wait until merged region have reference file</em>
+<a class="jxr_linenumber" name="256" href="#256">256</a>       <strong class="jxr_keyword">long</strong> timeout = System.currentTimeMillis() + waitTime;
+<a class="jxr_linenumber" name="257" href="#257">257</a>       <strong class="jxr_keyword">int</strong> newcount = 0;
+<a class="jxr_linenumber" name="258" href="#258">258</a>       <strong class="jxr_keyword">while</strong> (System.currentTimeMillis() &lt; timeout) {
+<a class="jxr_linenumber" name="259" href="#259">259</a>         <strong class="jxr_keyword">for</strong>(HColumnDescriptor colFamily : columnFamilies) {
+<a class="jxr_linenumber" name="260" href="#260">260</a>           newcount += hrfs.getStoreFiles(colFamily.getName()).size();
+<a class="jxr_linenumber" name="261" href="#261">261</a>         }
+<a class="jxr_linenumber" name="262" href="#262">262</a>         <strong class="jxr_keyword">if</strong>(newcount &gt; count) {
+<a class="jxr_linenumber" name="263" href="#263">263</a>           <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="264" href="#264">264</a>         }
+<a class="jxr_linenumber" name="265" href="#265">265</a>         Thread.sleep(50);
+<a class="jxr_linenumber" name="266" href="#266">266</a>       }
+<a class="jxr_linenumber" name="267" href="#267">267</a>       assertTrue(newcount &gt; count);
+<a class="jxr_linenumber" name="268" href="#268">268</a>       List&lt;RegionServerThread&gt; regionServerThreads = TEST_UTIL.getHBaseCluster()
+<a class="jxr_linenumber" name="269" href="#269">269</a>           .getRegionServerThreads();
+<a class="jxr_linenumber" name="270" href="#270">270</a>       <strong class="jxr_keyword">for</strong> (RegionServerThread rs : regionServerThreads) {
+<a class="jxr_linenumber" name="271" href="#271">271</a>         CompactedHFilesDischarger cleaner = <strong class="jxr_keyword">new</strong> CompactedHFilesDischarger(100, <strong class="jxr_keyword">null</strong>,
+<a class="jxr_linenumber" name="272" href="#272">272</a>             rs.getRegionServer(), false);
+<a class="jxr_linenumber" name="273" href="#273">273</a>         cleaner.chore();
+<a class="jxr_linenumber" name="274" href="#274">274</a>         Thread.sleep(1000);
+<a class="jxr_linenumber" name="275" href="#275">275</a>       }
+<a class="jxr_linenumber" name="276" href="#276">276</a>       <strong class="jxr_keyword">while</strong> (System.currentTimeMillis() &lt; timeout) {
+<a class="jxr_linenumber" name="277" href="#277">277</a>         <strong class="jxr_keyword">int</strong> newcount1 = 0;
+<a class="jxr_linenumber" name="278" href="#278">278</a>         <strong class="jxr_keyword">for</strong>(HColumnDescriptor colFamily : columnFamilies) {
+<a class="jxr_linenumber" name="279" href="#279">279</a>           newcount1 += hrfs.getStoreFiles(colFamily.getName()).size();
+<a class="jxr_linenumber" name="280" href="#280">280</a>         }
+<a class="jxr_linenumber" name="281" href="#281">281</a>         <strong class="jxr_keyword">if</strong>(newcount1 &lt;= 1) {
+<a class="jxr_linenumber" name="282" href="#282">282</a>           <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="283" href="#283">283</a>         }
+<a class="jxr_linenumber" name="284" href="#284">284</a>         Thread.sleep(50);
+<a class="jxr_linenumber" name="285" href="#285">285</a>       }
+<a class="jxr_linenumber" name="286" href="#286">286</a>       <em class="jxr_comment">// run CatalogJanitor to clean merge references in hbase:meta and archive the</em>
+<a class="jxr_linenumber" name="287" href="#287">287</a>       <em class="jxr_comment">// files of merging regions</em>
+<a class="jxr_linenumber" name="288" href="#288">288</a>       <strong class="jxr_keyword">int</strong> cleaned = 0;
+<a class="jxr_linenumber" name="289" href="#289">289</a>       <strong class="jxr_keyword">while</strong> (cleaned == 0) {
+<a class="jxr_linenumber" name="290" href="#290">290</a>         cleaned = ADMIN.runCatalogScan();
+<a class="jxr_linenumber" name="291" href="#291">291</a>         LOG.debug(<span class="jxr_string">"catalog janitor returned "</span> + cleaned);
+<a class="jxr_linenumber" name="292" href="#292">292</a>         Thread.sleep(50);
+<a class="jxr_linenumber" name="293" href="#293">293</a>       }
+<a class="jxr_linenumber" name="294" href="#294">294</a>       assertFalse(regionAdir.toString(), fs.exists(regionAdir));
+<a class="jxr_linenumber" name="295" href="#295">295</a>       assertFalse(regionBdir.toString(), fs.exists(regionBdir));
+<a class="jxr_linenumber" name="296" href="#296">296</a>       assertTrue(cleaned &gt; 0);
+<a class="jxr_linenumber" name="297" href="#297">297</a> 
+<a class="jxr_linenumber" name="298" href="#298">298</a>       mergedRegionResult = MetaTableAccessor.getRegionResult(
+<a class="jxr_linenumber" name="299" href="#299">299</a>         TEST_UTIL.getConnection(), mergedRegionInfo.getRegionName());
+<a class="jxr_linenumber" name="300" href="#300">300</a>       assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,
+<a class="jxr_linenumber" name="301" href="#301">301</a>           HConstants.MERGEA_QUALIFIER) != <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="302" href="#302">302</a>       assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY,
+<a class="jxr_linenumber" name="303" href="#303">303</a>           HConstants.MERGEB_QUALIFIER) != <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="304" href="#304">304</a> 
+<a class="jxr_linenumber" name="305" href="#305">305</a>     } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="306" href="#306">306</a>       ADMIN.enableCatalogJanitor(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="307" href="#307">307</a>     }
+<a class="jxr_linenumber" name="308" href="#308">308</a>   }
+<a class="jxr_linenumber" name="309" href="#309">309</a> 
+<a class="jxr_linenumber" name="310" href="#310">310</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="311" href="#311">311</a> <em class="jxr_javadoccomment">   * This test tests 1, merging region not online;</em>
+<a class="jxr_linenumber" name="312" href="#312">312</a> <em class="jxr_javadoccomment">   * 2, merging same two regions; 3, merging unknown regions.</em>
+<a class="jxr_linenumber" name="313" href="#313">313</a> <em class="jxr_javadoccomment">   * They are in one test case so that we don't have to create</em>
+<a class="jxr_linenumber" name="314" href="#314">314</a> <em class="jxr_javadoccomment">   * many tables, and these tests are simple.</em>
+<a class="jxr_linenumber" name="315" href="#315">315</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="316" href="#316">316</a>   @Test
+<a class="jxr_linenumber" name="317" href="#317">317</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMerge() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="318" href="#318">318</a>     LOG.info(<span class="jxr_string">"Starting testMerge"</span>);
+<a class="jxr_linenumber" name="319" href="#319">319</a>     <strong class="jxr_keyword">final</strong> TableName tableName = TableName.valueOf(<span class="jxr_string">"testMerge"</span>);
+<a class="jxr_linenumber" name="320" href="#320">320</a> 
+<a class="jxr_linenumber" name="321" href="#321">321</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="322" href="#322">322</a>       <em class="jxr_comment">// Create table and load data.</em>
+<a class="jxr_linenumber" name="323" href="#323">323</a>       Table table = createTableAndLoadData(MASTER, tableName);
+<a class="jxr_linenumber" name="324" href="#324">324</a>       RegionStates regionStates = MASTER.getAssignmentManager().getRegionStates();
+<a class="jxr_linenumber" name="325" href="#325">325</a>       List&lt;HRegionInfo&gt; regions = regionStates.getRegionsOfTable(tableName);
+<a class="jxr_linenumber" name="326" href="#326">326</a>       <em class="jxr_comment">// Fake offline one region</em>
+<a class="jxr_linenumber" name="327" href="#327">327</a>       HRegionInfo a = regions.get(0);
+<a class="jxr_linenumber" name="328" href="#328">328</a>       HRegionInfo b = regions.get(1);
+<a class="jxr_linenumber" name="329" href="#329">329</a>       regionStates.regionOffline(a);
+<a class="jxr_linenumber" name="330" href="#330">330</a>       <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="331" href="#331">331</a>         <em class="jxr_comment">// Merge offline region. Region a is offline here</em>
+<a class="jxr_linenumber" name="332" href="#332">332</a>         ADMIN.mergeRegions(a.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), false);
+<a class="jxr_linenumber" name="333" href="#333">333</a>         fail(<span class="jxr_string">"Offline regions should not be able to merge"</span>);
+<a class="jxr_linenumber" name="334" href="#334">334</a>       } <strong class="jxr_keyword">catch</strong> (IOException ie) {
+<a class="jxr_linenumber" name="335" href="#335">335</a>         System.out.println(ie);
+<a class="jxr_linenumber" name="336" href="#336">336</a>         assertTrue(<span class="jxr_string">"Exception should mention regions not online"</span>,
+<a class="jxr_linenumber" name="337" href="#337">337</a>           StringUtils.stringifyException(ie).contains(<span class="jxr_string">"regions not online"</span>)
+<a class="jxr_linenumber" name="338" href="#338">338</a>             &amp;&amp; ie instanceof MergeRegionException);
+<a class="jxr_linenumber" name="339" href="#339">339</a>       }
+<a class="jxr_linenumber" name="340" href="#340">340</a>       <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="341" href="#341">341</a>         <em class="jxr_comment">// Merge the same region: b and b.</em>
+<a class="jxr_linenumber" name="342" href="#342">342</a>         ADMIN.mergeRegions(b.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), <strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="343" href="#343">343</a>         fail(<span class="jxr_string">"A region should not be able to merge with itself, even forcifully"</span>);
+<a class="jxr_linenumber" name="344" href="#344">344</a>       } <strong class="jxr_keyword">catch</strong> (IOException ie) {
+<a class="jxr_linenumber" name="345" href="#345">345</a>         assertTrue(<span class="jxr_string">"Exception should mention regions not online"</span>,
+<a class="jxr_linenumber" name="346" href="#346">346</a>           StringUtils.stringifyException(ie).contains(<span class="jxr_string">"region to itself"</span>)
+<a class="jxr_linenumber" name="347" href="#347">347</a>             &amp;&amp; ie instanceof MergeRegionException);
+<a class="jxr_linenumber" name="348" href="#348">348</a>       }
+<a class="jxr_linenumber" name="349" href="#349">349</a>       <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="350" href="#350">350</a>         <em class="jxr_comment">// Merge unknown regions</em>
+<a class="jxr_linenumber" name="351" href="#351">351</a>         ADMIN.mergeRegions(Bytes.toBytes(<span class="jxr_string">"-f1"</span>), Bytes.toBytes(<span class="jxr_string">"-f2"</span>), <strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="352" href="#352">352</a>         fail(<span class="jxr_string">"Unknown region could not be merged"</span>);
+<a class="jxr_linenumber" name="353" href="#353">353</a>       } <strong class="jxr_keyword">catch</strong> (IOException ie) {
+<a class="jxr_linenumber" name="354" href="#354">354</a>         assertTrue(<span class="jxr_string">"UnknownRegionException should be thrown"</span>,
+<a class="jxr_linenumber" name="355" href="#355">355</a>           ie instanceof UnknownRegionException);
+<a class="jxr_linenumber" name="356" href="#356">356</a>       }
+<a class="jxr_linenumber" name="357" href="#357">357</a>       table.close();
+<a class="jxr_linenumber" name="358" href="#358">358</a>     } <strong class="jxr_keyword">finally</strong> {
+<a clas

<TRUNCATED>

[22/30] hbase-site git commit: Published site at 28cd48b673ca743d193874b2951bc995699e8e89.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/89b638a4/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Connection.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Connection.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Connection.html
index e5d9af6..ea9ea4d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Connection.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/RpcServer.Connection.html
@@ -2107,556 +2107,559 @@
 <span class="sourceLineNo">2099</span>  @Override<a name="line.2099"></a>
 <span class="sourceLineNo">2100</span>  public void onConfigurationChange(Configuration newConf) {<a name="line.2100"></a>
 <span class="sourceLineNo">2101</span>    initReconfigurable(newConf);<a name="line.2101"></a>
-<span class="sourceLineNo">2102</span>  }<a name="line.2102"></a>
-<span class="sourceLineNo">2103</span><a name="line.2103"></a>
-<span class="sourceLineNo">2104</span>  private void initReconfigurable(Configuration confToLoad) {<a name="line.2104"></a>
-<span class="sourceLineNo">2105</span>    this.allowFallbackToSimpleAuth = confToLoad.getBoolean(FALLBACK_TO_INSECURE_CLIENT_AUTH, false);<a name="line.2105"></a>
-<span class="sourceLineNo">2106</span>    if (isSecurityEnabled &amp;&amp; allowFallbackToSimpleAuth) {<a name="line.2106"></a>
-<span class="sourceLineNo">2107</span>      LOG.warn("********* WARNING! *********");<a name="line.2107"></a>
-<span class="sourceLineNo">2108</span>      LOG.warn("This server is configured to allow connections from INSECURE clients");<a name="line.2108"></a>
-<span class="sourceLineNo">2109</span>      LOG.warn("(" + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = true).");<a name="line.2109"></a>
-<span class="sourceLineNo">2110</span>      LOG.warn("While this option is enabled, client identities cannot be secured, and user");<a name="line.2110"></a>
-<span class="sourceLineNo">2111</span>      LOG.warn("impersonation is possible!");<a name="line.2111"></a>
-<span class="sourceLineNo">2112</span>      LOG.warn("For secure operation, please disable SIMPLE authentication as soon as possible,");<a name="line.2112"></a>
-<span class="sourceLineNo">2113</span>      LOG.warn("by setting " + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = false in hbase-site.xml");<a name="line.2113"></a>
-<span class="sourceLineNo">2114</span>      LOG.warn("****************************");<a name="line.2114"></a>
-<span class="sourceLineNo">2115</span>    }<a name="line.2115"></a>
-<span class="sourceLineNo">2116</span>  }<a name="line.2116"></a>
-<span class="sourceLineNo">2117</span><a name="line.2117"></a>
-<span class="sourceLineNo">2118</span>  /**<a name="line.2118"></a>
-<span class="sourceLineNo">2119</span>   * Subclasses of HBaseServer can override this to provide their own<a name="line.2119"></a>
-<span class="sourceLineNo">2120</span>   * Connection implementations.<a name="line.2120"></a>
-<span class="sourceLineNo">2121</span>   */<a name="line.2121"></a>
-<span class="sourceLineNo">2122</span>  protected Connection getConnection(SocketChannel channel, long time) {<a name="line.2122"></a>
-<span class="sourceLineNo">2123</span>    return new Connection(channel, time);<a name="line.2123"></a>
-<span class="sourceLineNo">2124</span>  }<a name="line.2124"></a>
-<span class="sourceLineNo">2125</span><a name="line.2125"></a>
-<span class="sourceLineNo">2126</span>  /**<a name="line.2126"></a>
-<span class="sourceLineNo">2127</span>   * Setup response for the RPC Call.<a name="line.2127"></a>
-<span class="sourceLineNo">2128</span>   *<a name="line.2128"></a>
-<span class="sourceLineNo">2129</span>   * @param response buffer to serialize the response into<a name="line.2129"></a>
-<span class="sourceLineNo">2130</span>   * @param call {@link Call} to which we are setting up the response<a name="line.2130"></a>
-<span class="sourceLineNo">2131</span>   * @param error error message, if the call failed<a name="line.2131"></a>
-<span class="sourceLineNo">2132</span>   * @throws IOException<a name="line.2132"></a>
-<span class="sourceLineNo">2133</span>   */<a name="line.2133"></a>
-<span class="sourceLineNo">2134</span>  private void setupResponse(ByteArrayOutputStream response, Call call, Throwable t, String error)<a name="line.2134"></a>
-<span class="sourceLineNo">2135</span>  throws IOException {<a name="line.2135"></a>
-<span class="sourceLineNo">2136</span>    if (response != null) response.reset();<a name="line.2136"></a>
-<span class="sourceLineNo">2137</span>    call.setResponse(null, null, t, error);<a name="line.2137"></a>
-<span class="sourceLineNo">2138</span>  }<a name="line.2138"></a>
-<span class="sourceLineNo">2139</span><a name="line.2139"></a>
-<span class="sourceLineNo">2140</span>  protected void closeConnection(Connection connection) {<a name="line.2140"></a>
-<span class="sourceLineNo">2141</span>    synchronized (connectionList) {<a name="line.2141"></a>
-<span class="sourceLineNo">2142</span>      if (connectionList.remove(connection)) {<a name="line.2142"></a>
-<span class="sourceLineNo">2143</span>        numConnections--;<a name="line.2143"></a>
-<span class="sourceLineNo">2144</span>      }<a name="line.2144"></a>
-<span class="sourceLineNo">2145</span>    }<a name="line.2145"></a>
-<span class="sourceLineNo">2146</span>    connection.close();<a name="line.2146"></a>
-<span class="sourceLineNo">2147</span>  }<a name="line.2147"></a>
-<span class="sourceLineNo">2148</span><a name="line.2148"></a>
-<span class="sourceLineNo">2149</span>  Configuration getConf() {<a name="line.2149"></a>
-<span class="sourceLineNo">2150</span>    return conf;<a name="line.2150"></a>
-<span class="sourceLineNo">2151</span>  }<a name="line.2151"></a>
-<span class="sourceLineNo">2152</span><a name="line.2152"></a>
-<span class="sourceLineNo">2153</span>  /** Sets the socket buffer size used for responding to RPCs.<a name="line.2153"></a>
-<span class="sourceLineNo">2154</span>   * @param size send size<a name="line.2154"></a>
-<span class="sourceLineNo">2155</span>   */<a name="line.2155"></a>
-<span class="sourceLineNo">2156</span>  @Override<a name="line.2156"></a>
-<span class="sourceLineNo">2157</span>  public void setSocketSendBufSize(int size) { this.socketSendBufferSize = size; }<a name="line.2157"></a>
-<span class="sourceLineNo">2158</span><a name="line.2158"></a>
+<span class="sourceLineNo">2102</span>    if (scheduler instanceof ConfigurationObserver) {<a name="line.2102"></a>
+<span class="sourceLineNo">2103</span>      ((ConfigurationObserver)scheduler).onConfigurationChange(newConf);<a name="line.2103"></a>
+<span class="sourceLineNo">2104</span>    }<a name="line.2104"></a>
+<span class="sourceLineNo">2105</span>  }<a name="line.2105"></a>
+<span class="sourceLineNo">2106</span><a name="line.2106"></a>
+<span class="sourceLineNo">2107</span>  private void initReconfigurable(Configuration confToLoad) {<a name="line.2107"></a>
+<span class="sourceLineNo">2108</span>    this.allowFallbackToSimpleAuth = confToLoad.getBoolean(FALLBACK_TO_INSECURE_CLIENT_AUTH, false);<a name="line.2108"></a>
+<span class="sourceLineNo">2109</span>    if (isSecurityEnabled &amp;&amp; allowFallbackToSimpleAuth) {<a name="line.2109"></a>
+<span class="sourceLineNo">2110</span>      LOG.warn("********* WARNING! *********");<a name="line.2110"></a>
+<span class="sourceLineNo">2111</span>      LOG.warn("This server is configured to allow connections from INSECURE clients");<a name="line.2111"></a>
+<span class="sourceLineNo">2112</span>      LOG.warn("(" + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = true).");<a name="line.2112"></a>
+<span class="sourceLineNo">2113</span>      LOG.warn("While this option is enabled, client identities cannot be secured, and user");<a name="line.2113"></a>
+<span class="sourceLineNo">2114</span>      LOG.warn("impersonation is possible!");<a name="line.2114"></a>
+<span class="sourceLineNo">2115</span>      LOG.warn("For secure operation, please disable SIMPLE authentication as soon as possible,");<a name="line.2115"></a>
+<span class="sourceLineNo">2116</span>      LOG.warn("by setting " + FALLBACK_TO_INSECURE_CLIENT_AUTH + " = false in hbase-site.xml");<a name="line.2116"></a>
+<span class="sourceLineNo">2117</span>      LOG.warn("****************************");<a name="line.2117"></a>
+<span class="sourceLineNo">2118</span>    }<a name="line.2118"></a>
+<span class="sourceLineNo">2119</span>  }<a name="line.2119"></a>
+<span class="sourceLineNo">2120</span><a name="line.2120"></a>
+<span class="sourceLineNo">2121</span>  /**<a name="line.2121"></a>
+<span class="sourceLineNo">2122</span>   * Subclasses of HBaseServer can override this to provide their own<a name="line.2122"></a>
+<span class="sourceLineNo">2123</span>   * Connection implementations.<a name="line.2123"></a>
+<span class="sourceLineNo">2124</span>   */<a name="line.2124"></a>
+<span class="sourceLineNo">2125</span>  protected Connection getConnection(SocketChannel channel, long time) {<a name="line.2125"></a>
+<span class="sourceLineNo">2126</span>    return new Connection(channel, time);<a name="line.2126"></a>
+<span class="sourceLineNo">2127</span>  }<a name="line.2127"></a>
+<span class="sourceLineNo">2128</span><a name="line.2128"></a>
+<span class="sourceLineNo">2129</span>  /**<a name="line.2129"></a>
+<span class="sourceLineNo">2130</span>   * Setup response for the RPC Call.<a name="line.2130"></a>
+<span class="sourceLineNo">2131</span>   *<a name="line.2131"></a>
+<span class="sourceLineNo">2132</span>   * @param response buffer to serialize the response into<a name="line.2132"></a>
+<span class="sourceLineNo">2133</span>   * @param call {@link Call} to which we are setting up the response<a name="line.2133"></a>
+<span class="sourceLineNo">2134</span>   * @param error error message, if the call failed<a name="line.2134"></a>
+<span class="sourceLineNo">2135</span>   * @throws IOException<a name="line.2135"></a>
+<span class="sourceLineNo">2136</span>   */<a name="line.2136"></a>
+<span class="sourceLineNo">2137</span>  private void setupResponse(ByteArrayOutputStream response, Call call, Throwable t, String error)<a name="line.2137"></a>
+<span class="sourceLineNo">2138</span>  throws IOException {<a name="line.2138"></a>
+<span class="sourceLineNo">2139</span>    if (response != null) response.reset();<a name="line.2139"></a>
+<span class="sourceLineNo">2140</span>    call.setResponse(null, null, t, error);<a name="line.2140"></a>
+<span class="sourceLineNo">2141</span>  }<a name="line.2141"></a>
+<span class="sourceLineNo">2142</span><a name="line.2142"></a>
+<span class="sourceLineNo">2143</span>  protected void closeConnection(Connection connection) {<a name="line.2143"></a>
+<span class="sourceLineNo">2144</span>    synchronized (connectionList) {<a name="line.2144"></a>
+<span class="sourceLineNo">2145</span>      if (connectionList.remove(connection)) {<a name="line.2145"></a>
+<span class="sourceLineNo">2146</span>        numConnections--;<a name="line.2146"></a>
+<span class="sourceLineNo">2147</span>      }<a name="line.2147"></a>
+<span class="sourceLineNo">2148</span>    }<a name="line.2148"></a>
+<span class="sourceLineNo">2149</span>    connection.close();<a name="line.2149"></a>
+<span class="sourceLineNo">2150</span>  }<a name="line.2150"></a>
+<span class="sourceLineNo">2151</span><a name="line.2151"></a>
+<span class="sourceLineNo">2152</span>  Configuration getConf() {<a name="line.2152"></a>
+<span class="sourceLineNo">2153</span>    return conf;<a name="line.2153"></a>
+<span class="sourceLineNo">2154</span>  }<a name="line.2154"></a>
+<span class="sourceLineNo">2155</span><a name="line.2155"></a>
+<span class="sourceLineNo">2156</span>  /** Sets the socket buffer size used for responding to RPCs.<a name="line.2156"></a>
+<span class="sourceLineNo">2157</span>   * @param size send size<a name="line.2157"></a>
+<span class="sourceLineNo">2158</span>   */<a name="line.2158"></a>
 <span class="sourceLineNo">2159</span>  @Override<a name="line.2159"></a>
-<span class="sourceLineNo">2160</span>  public boolean isStarted() {<a name="line.2160"></a>
-<span class="sourceLineNo">2161</span>    return this.started;<a name="line.2161"></a>
-<span class="sourceLineNo">2162</span>  }<a name="line.2162"></a>
-<span class="sourceLineNo">2163</span><a name="line.2163"></a>
-<span class="sourceLineNo">2164</span>  /** Starts the service.  Must be called before any calls will be handled. */<a name="line.2164"></a>
-<span class="sourceLineNo">2165</span>  @Override<a name="line.2165"></a>
-<span class="sourceLineNo">2166</span>  public synchronized void start() {<a name="line.2166"></a>
-<span class="sourceLineNo">2167</span>    if (started) return;<a name="line.2167"></a>
-<span class="sourceLineNo">2168</span>    authTokenSecretMgr = createSecretManager();<a name="line.2168"></a>
-<span class="sourceLineNo">2169</span>    if (authTokenSecretMgr != null) {<a name="line.2169"></a>
-<span class="sourceLineNo">2170</span>      setSecretManager(authTokenSecretMgr);<a name="line.2170"></a>
-<span class="sourceLineNo">2171</span>      authTokenSecretMgr.start();<a name="line.2171"></a>
-<span class="sourceLineNo">2172</span>    }<a name="line.2172"></a>
-<span class="sourceLineNo">2173</span>    this.authManager = new ServiceAuthorizationManager();<a name="line.2173"></a>
-<span class="sourceLineNo">2174</span>    HBasePolicyProvider.init(conf, authManager);<a name="line.2174"></a>
-<span class="sourceLineNo">2175</span>    responder.start();<a name="line.2175"></a>
-<span class="sourceLineNo">2176</span>    listener.start();<a name="line.2176"></a>
-<span class="sourceLineNo">2177</span>    scheduler.start();<a name="line.2177"></a>
-<span class="sourceLineNo">2178</span>    started = true;<a name="line.2178"></a>
-<span class="sourceLineNo">2179</span>  }<a name="line.2179"></a>
-<span class="sourceLineNo">2180</span><a name="line.2180"></a>
-<span class="sourceLineNo">2181</span>  @Override<a name="line.2181"></a>
-<span class="sourceLineNo">2182</span>  public synchronized void refreshAuthManager(PolicyProvider pp) {<a name="line.2182"></a>
-<span class="sourceLineNo">2183</span>    // Ignore warnings that this should be accessed in a static way instead of via an instance;<a name="line.2183"></a>
-<span class="sourceLineNo">2184</span>    // it'll break if you go via static route.<a name="line.2184"></a>
-<span class="sourceLineNo">2185</span>    this.authManager.refresh(this.conf, pp);<a name="line.2185"></a>
-<span class="sourceLineNo">2186</span>  }<a name="line.2186"></a>
-<span class="sourceLineNo">2187</span><a name="line.2187"></a>
-<span class="sourceLineNo">2188</span>  private AuthenticationTokenSecretManager createSecretManager() {<a name="line.2188"></a>
-<span class="sourceLineNo">2189</span>    if (!isSecurityEnabled) return null;<a name="line.2189"></a>
-<span class="sourceLineNo">2190</span>    if (server == null) return null;<a name="line.2190"></a>
-<span class="sourceLineNo">2191</span>    Configuration conf = server.getConfiguration();<a name="line.2191"></a>
-<span class="sourceLineNo">2192</span>    long keyUpdateInterval =<a name="line.2192"></a>
-<span class="sourceLineNo">2193</span>        conf.getLong("hbase.auth.key.update.interval", 24*60*60*1000);<a name="line.2193"></a>
-<span class="sourceLineNo">2194</span>    long maxAge =<a name="line.2194"></a>
-<span class="sourceLineNo">2195</span>        conf.getLong("hbase.auth.token.max.lifetime", 7*24*60*60*1000);<a name="line.2195"></a>
-<span class="sourceLineNo">2196</span>    return new AuthenticationTokenSecretManager(conf, server.getZooKeeper(),<a name="line.2196"></a>
-<span class="sourceLineNo">2197</span>        server.getServerName().toString(), keyUpdateInterval, maxAge);<a name="line.2197"></a>
-<span class="sourceLineNo">2198</span>  }<a name="line.2198"></a>
-<span class="sourceLineNo">2199</span><a name="line.2199"></a>
-<span class="sourceLineNo">2200</span>  public SecretManager&lt;? extends TokenIdentifier&gt; getSecretManager() {<a name="line.2200"></a>
-<span class="sourceLineNo">2201</span>    return this.secretManager;<a name="line.2201"></a>
-<span class="sourceLineNo">2202</span>  }<a name="line.2202"></a>
-<span class="sourceLineNo">2203</span><a name="line.2203"></a>
-<span class="sourceLineNo">2204</span>  @SuppressWarnings("unchecked")<a name="line.2204"></a>
-<span class="sourceLineNo">2205</span>  public void setSecretManager(SecretManager&lt;? extends TokenIdentifier&gt; secretManager) {<a name="line.2205"></a>
-<span class="sourceLineNo">2206</span>    this.secretManager = (SecretManager&lt;TokenIdentifier&gt;) secretManager;<a name="line.2206"></a>
-<span class="sourceLineNo">2207</span>  }<a name="line.2207"></a>
-<span class="sourceLineNo">2208</span><a name="line.2208"></a>
-<span class="sourceLineNo">2209</span>  /**<a name="line.2209"></a>
-<span class="sourceLineNo">2210</span>   * This is a server side method, which is invoked over RPC. On success<a name="line.2210"></a>
-<span class="sourceLineNo">2211</span>   * the return response has protobuf response payload. On failure, the<a name="line.2211"></a>
-<span class="sourceLineNo">2212</span>   * exception name and the stack trace are returned in the protobuf response.<a name="line.2212"></a>
-<span class="sourceLineNo">2213</span>   */<a name="line.2213"></a>
-<span class="sourceLineNo">2214</span>  @Override<a name="line.2214"></a>
-<span class="sourceLineNo">2215</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,<a name="line.2215"></a>
-<span class="sourceLineNo">2216</span>      Message param, CellScanner cellScanner, long receiveTime, MonitoredRPCHandler status)<a name="line.2216"></a>
-<span class="sourceLineNo">2217</span>  throws IOException {<a name="line.2217"></a>
-<span class="sourceLineNo">2218</span>    try {<a name="line.2218"></a>
-<span class="sourceLineNo">2219</span>      status.setRPC(md.getName(), new Object[]{param}, receiveTime);<a name="line.2219"></a>
-<span class="sourceLineNo">2220</span>      // TODO: Review after we add in encoded data blocks.<a name="line.2220"></a>
-<span class="sourceLineNo">2221</span>      status.setRPCPacket(param);<a name="line.2221"></a>
-<span class="sourceLineNo">2222</span>      status.resume("Servicing call");<a name="line.2222"></a>
-<span class="sourceLineNo">2223</span>      //get an instance of the method arg type<a name="line.2223"></a>
-<span class="sourceLineNo">2224</span>      long startTime = System.currentTimeMillis();<a name="line.2224"></a>
-<span class="sourceLineNo">2225</span>      PayloadCarryingRpcController controller = new PayloadCarryingRpcController(cellScanner);<a name="line.2225"></a>
-<span class="sourceLineNo">2226</span>      Message result = service.callBlockingMethod(md, controller, param);<a name="line.2226"></a>
-<span class="sourceLineNo">2227</span>      long endTime = System.currentTimeMillis();<a name="line.2227"></a>
-<span class="sourceLineNo">2228</span>      int processingTime = (int) (endTime - startTime);<a name="line.2228"></a>
-<span class="sourceLineNo">2229</span>      int qTime = (int) (startTime - receiveTime);<a name="line.2229"></a>
-<span class="sourceLineNo">2230</span>      int totalTime = (int) (endTime - receiveTime);<a name="line.2230"></a>
-<span class="sourceLineNo">2231</span>      if (LOG.isTraceEnabled()) {<a name="line.2231"></a>
-<span class="sourceLineNo">2232</span>        LOG.trace(CurCall.get().toString() +<a name="line.2232"></a>
-<span class="sourceLineNo">2233</span>            ", response " + TextFormat.shortDebugString(result) +<a name="line.2233"></a>
-<span class="sourceLineNo">2234</span>            " queueTime: " + qTime +<a name="line.2234"></a>
-<span class="sourceLineNo">2235</span>            " processingTime: " + processingTime +<a name="line.2235"></a>
-<span class="sourceLineNo">2236</span>            " totalTime: " + totalTime);<a name="line.2236"></a>
-<span class="sourceLineNo">2237</span>      }<a name="line.2237"></a>
-<span class="sourceLineNo">2238</span>      long requestSize = param.getSerializedSize();<a name="line.2238"></a>
-<span class="sourceLineNo">2239</span>      long responseSize = result.getSerializedSize();<a name="line.2239"></a>
-<span class="sourceLineNo">2240</span>      metrics.dequeuedCall(qTime);<a name="line.2240"></a>
-<span class="sourceLineNo">2241</span>      metrics.processedCall(processingTime);<a name="line.2241"></a>
-<span class="sourceLineNo">2242</span>      metrics.totalCall(totalTime);<a name="line.2242"></a>
-<span class="sourceLineNo">2243</span>      metrics.receivedRequest(requestSize);<a name="line.2243"></a>
-<span class="sourceLineNo">2244</span>      metrics.sentResponse(responseSize);<a name="line.2244"></a>
-<span class="sourceLineNo">2245</span>      // log any RPC responses that are slower than the configured warn<a name="line.2245"></a>
-<span class="sourceLineNo">2246</span>      // response time or larger than configured warning size<a name="line.2246"></a>
-<span class="sourceLineNo">2247</span>      boolean tooSlow = (processingTime &gt; warnResponseTime &amp;&amp; warnResponseTime &gt; -1);<a name="line.2247"></a>
-<span class="sourceLineNo">2248</span>      boolean tooLarge = (responseSize &gt; warnResponseSize &amp;&amp; warnResponseSize &gt; -1);<a name="line.2248"></a>
-<span class="sourceLineNo">2249</span>      if (tooSlow || tooLarge) {<a name="line.2249"></a>
-<span class="sourceLineNo">2250</span>        // when tagging, we let TooLarge trump TooSmall to keep output simple<a name="line.2250"></a>
-<span class="sourceLineNo">2251</span>        // note that large responses will often also be slow.<a name="line.2251"></a>
-<span class="sourceLineNo">2252</span>        logResponse(new Object[]{param},<a name="line.2252"></a>
-<span class="sourceLineNo">2253</span>            md.getName(), md.getName() + "(" + param.getClass().getName() + ")",<a name="line.2253"></a>
-<span class="sourceLineNo">2254</span>            (tooLarge ? "TooLarge" : "TooSlow"),<a name="line.2254"></a>
-<span class="sourceLineNo">2255</span>            status.getClient(), startTime, processingTime, qTime,<a name="line.2255"></a>
-<span class="sourceLineNo">2256</span>            responseSize);<a name="line.2256"></a>
-<span class="sourceLineNo">2257</span>      }<a name="line.2257"></a>
-<span class="sourceLineNo">2258</span>      return new Pair&lt;Message, CellScanner&gt;(result, controller.cellScanner());<a name="line.2258"></a>
-<span class="sourceLineNo">2259</span>    } catch (Throwable e) {<a name="line.2259"></a>
-<span class="sourceLineNo">2260</span>      // The above callBlockingMethod will always return a SE.  Strip the SE wrapper before<a name="line.2260"></a>
-<span class="sourceLineNo">2261</span>      // putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't<a name="line.2261"></a>
-<span class="sourceLineNo">2262</span>      // need to pass it over the wire.<a name="line.2262"></a>
-<span class="sourceLineNo">2263</span>      if (e instanceof ServiceException) e = e.getCause();<a name="line.2263"></a>
-<span class="sourceLineNo">2264</span><a name="line.2264"></a>
-<span class="sourceLineNo">2265</span>      // increment the number of requests that were exceptions.<a name="line.2265"></a>
-<span class="sourceLineNo">2266</span>      metrics.exception(e);<a name="line.2266"></a>
+<span class="sourceLineNo">2160</span>  public void setSocketSendBufSize(int size) { this.socketSendBufferSize = size; }<a name="line.2160"></a>
+<span class="sourceLineNo">2161</span><a name="line.2161"></a>
+<span class="sourceLineNo">2162</span>  @Override<a name="line.2162"></a>
+<span class="sourceLineNo">2163</span>  public boolean isStarted() {<a name="line.2163"></a>
+<span class="sourceLineNo">2164</span>    return this.started;<a name="line.2164"></a>
+<span class="sourceLineNo">2165</span>  }<a name="line.2165"></a>
+<span class="sourceLineNo">2166</span><a name="line.2166"></a>
+<span class="sourceLineNo">2167</span>  /** Starts the service.  Must be called before any calls will be handled. */<a name="line.2167"></a>
+<span class="sourceLineNo">2168</span>  @Override<a name="line.2168"></a>
+<span class="sourceLineNo">2169</span>  public synchronized void start() {<a name="line.2169"></a>
+<span class="sourceLineNo">2170</span>    if (started) return;<a name="line.2170"></a>
+<span class="sourceLineNo">2171</span>    authTokenSecretMgr = createSecretManager();<a name="line.2171"></a>
+<span class="sourceLineNo">2172</span>    if (authTokenSecretMgr != null) {<a name="line.2172"></a>
+<span class="sourceLineNo">2173</span>      setSecretManager(authTokenSecretMgr);<a name="line.2173"></a>
+<span class="sourceLineNo">2174</span>      authTokenSecretMgr.start();<a name="line.2174"></a>
+<span class="sourceLineNo">2175</span>    }<a name="line.2175"></a>
+<span class="sourceLineNo">2176</span>    this.authManager = new ServiceAuthorizationManager();<a name="line.2176"></a>
+<span class="sourceLineNo">2177</span>    HBasePolicyProvider.init(conf, authManager);<a name="line.2177"></a>
+<span class="sourceLineNo">2178</span>    responder.start();<a name="line.2178"></a>
+<span class="sourceLineNo">2179</span>    listener.start();<a name="line.2179"></a>
+<span class="sourceLineNo">2180</span>    scheduler.start();<a name="line.2180"></a>
+<span class="sourceLineNo">2181</span>    started = true;<a name="line.2181"></a>
+<span class="sourceLineNo">2182</span>  }<a name="line.2182"></a>
+<span class="sourceLineNo">2183</span><a name="line.2183"></a>
+<span class="sourceLineNo">2184</span>  @Override<a name="line.2184"></a>
+<span class="sourceLineNo">2185</span>  public synchronized void refreshAuthManager(PolicyProvider pp) {<a name="line.2185"></a>
+<span class="sourceLineNo">2186</span>    // Ignore warnings that this should be accessed in a static way instead of via an instance;<a name="line.2186"></a>
+<span class="sourceLineNo">2187</span>    // it'll break if you go via static route.<a name="line.2187"></a>
+<span class="sourceLineNo">2188</span>    this.authManager.refresh(this.conf, pp);<a name="line.2188"></a>
+<span class="sourceLineNo">2189</span>  }<a name="line.2189"></a>
+<span class="sourceLineNo">2190</span><a name="line.2190"></a>
+<span class="sourceLineNo">2191</span>  private AuthenticationTokenSecretManager createSecretManager() {<a name="line.2191"></a>
+<span class="sourceLineNo">2192</span>    if (!isSecurityEnabled) return null;<a name="line.2192"></a>
+<span class="sourceLineNo">2193</span>    if (server == null) return null;<a name="line.2193"></a>
+<span class="sourceLineNo">2194</span>    Configuration conf = server.getConfiguration();<a name="line.2194"></a>
+<span class="sourceLineNo">2195</span>    long keyUpdateInterval =<a name="line.2195"></a>
+<span class="sourceLineNo">2196</span>        conf.getLong("hbase.auth.key.update.interval", 24*60*60*1000);<a name="line.2196"></a>
+<span class="sourceLineNo">2197</span>    long maxAge =<a name="line.2197"></a>
+<span class="sourceLineNo">2198</span>        conf.getLong("hbase.auth.token.max.lifetime", 7*24*60*60*1000);<a name="line.2198"></a>
+<span class="sourceLineNo">2199</span>    return new AuthenticationTokenSecretManager(conf, server.getZooKeeper(),<a name="line.2199"></a>
+<span class="sourceLineNo">2200</span>        server.getServerName().toString(), keyUpdateInterval, maxAge);<a name="line.2200"></a>
+<span class="sourceLineNo">2201</span>  }<a name="line.2201"></a>
+<span class="sourceLineNo">2202</span><a name="line.2202"></a>
+<span class="sourceLineNo">2203</span>  public SecretManager&lt;? extends TokenIdentifier&gt; getSecretManager() {<a name="line.2203"></a>
+<span class="sourceLineNo">2204</span>    return this.secretManager;<a name="line.2204"></a>
+<span class="sourceLineNo">2205</span>  }<a name="line.2205"></a>
+<span class="sourceLineNo">2206</span><a name="line.2206"></a>
+<span class="sourceLineNo">2207</span>  @SuppressWarnings("unchecked")<a name="line.2207"></a>
+<span class="sourceLineNo">2208</span>  public void setSecretManager(SecretManager&lt;? extends TokenIdentifier&gt; secretManager) {<a name="line.2208"></a>
+<span class="sourceLineNo">2209</span>    this.secretManager = (SecretManager&lt;TokenIdentifier&gt;) secretManager;<a name="line.2209"></a>
+<span class="sourceLineNo">2210</span>  }<a name="line.2210"></a>
+<span class="sourceLineNo">2211</span><a name="line.2211"></a>
+<span class="sourceLineNo">2212</span>  /**<a name="line.2212"></a>
+<span class="sourceLineNo">2213</span>   * This is a server side method, which is invoked over RPC. On success<a name="line.2213"></a>
+<span class="sourceLineNo">2214</span>   * the return response has protobuf response payload. On failure, the<a name="line.2214"></a>
+<span class="sourceLineNo">2215</span>   * exception name and the stack trace are returned in the protobuf response.<a name="line.2215"></a>
+<span class="sourceLineNo">2216</span>   */<a name="line.2216"></a>
+<span class="sourceLineNo">2217</span>  @Override<a name="line.2217"></a>
+<span class="sourceLineNo">2218</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,<a name="line.2218"></a>
+<span class="sourceLineNo">2219</span>      Message param, CellScanner cellScanner, long receiveTime, MonitoredRPCHandler status)<a name="line.2219"></a>
+<span class="sourceLineNo">2220</span>  throws IOException {<a name="line.2220"></a>
+<span class="sourceLineNo">2221</span>    try {<a name="line.2221"></a>
+<span class="sourceLineNo">2222</span>      status.setRPC(md.getName(), new Object[]{param}, receiveTime);<a name="line.2222"></a>
+<span class="sourceLineNo">2223</span>      // TODO: Review after we add in encoded data blocks.<a name="line.2223"></a>
+<span class="sourceLineNo">2224</span>      status.setRPCPacket(param);<a name="line.2224"></a>
+<span class="sourceLineNo">2225</span>      status.resume("Servicing call");<a name="line.2225"></a>
+<span class="sourceLineNo">2226</span>      //get an instance of the method arg type<a name="line.2226"></a>
+<span class="sourceLineNo">2227</span>      long startTime = System.currentTimeMillis();<a name="line.2227"></a>
+<span class="sourceLineNo">2228</span>      PayloadCarryingRpcController controller = new PayloadCarryingRpcController(cellScanner);<a name="line.2228"></a>
+<span class="sourceLineNo">2229</span>      Message result = service.callBlockingMethod(md, controller, param);<a name="line.2229"></a>
+<span class="sourceLineNo">2230</span>      long endTime = System.currentTimeMillis();<a name="line.2230"></a>
+<span class="sourceLineNo">2231</span>      int processingTime = (int) (endTime - startTime);<a name="line.2231"></a>
+<span class="sourceLineNo">2232</span>      int qTime = (int) (startTime - receiveTime);<a name="line.2232"></a>
+<span class="sourceLineNo">2233</span>      int totalTime = (int) (endTime - receiveTime);<a name="line.2233"></a>
+<span class="sourceLineNo">2234</span>      if (LOG.isTraceEnabled()) {<a name="line.2234"></a>
+<span class="sourceLineNo">2235</span>        LOG.trace(CurCall.get().toString() +<a name="line.2235"></a>
+<span class="sourceLineNo">2236</span>            ", response " + TextFormat.shortDebugString(result) +<a name="line.2236"></a>
+<span class="sourceLineNo">2237</span>            " queueTime: " + qTime +<a name="line.2237"></a>
+<span class="sourceLineNo">2238</span>            " processingTime: " + processingTime +<a name="line.2238"></a>
+<span class="sourceLineNo">2239</span>            " totalTime: " + totalTime);<a name="line.2239"></a>
+<span class="sourceLineNo">2240</span>      }<a name="line.2240"></a>
+<span class="sourceLineNo">2241</span>      long requestSize = param.getSerializedSize();<a name="line.2241"></a>
+<span class="sourceLineNo">2242</span>      long responseSize = result.getSerializedSize();<a name="line.2242"></a>
+<span class="sourceLineNo">2243</span>      metrics.dequeuedCall(qTime);<a name="line.2243"></a>
+<span class="sourceLineNo">2244</span>      metrics.processedCall(processingTime);<a name="line.2244"></a>
+<span class="sourceLineNo">2245</span>      metrics.totalCall(totalTime);<a name="line.2245"></a>
+<span class="sourceLineNo">2246</span>      metrics.receivedRequest(requestSize);<a name="line.2246"></a>
+<span class="sourceLineNo">2247</span>      metrics.sentResponse(responseSize);<a name="line.2247"></a>
+<span class="sourceLineNo">2248</span>      // log any RPC responses that are slower than the configured warn<a name="line.2248"></a>
+<span class="sourceLineNo">2249</span>      // response time or larger than configured warning size<a name="line.2249"></a>
+<span class="sourceLineNo">2250</span>      boolean tooSlow = (processingTime &gt; warnResponseTime &amp;&amp; warnResponseTime &gt; -1);<a name="line.2250"></a>
+<span class="sourceLineNo">2251</span>      boolean tooLarge = (responseSize &gt; warnResponseSize &amp;&amp; warnResponseSize &gt; -1);<a name="line.2251"></a>
+<span class="sourceLineNo">2252</span>      if (tooSlow || tooLarge) {<a name="line.2252"></a>
+<span class="sourceLineNo">2253</span>        // when tagging, we let TooLarge trump TooSmall to keep output simple<a name="line.2253"></a>
+<span class="sourceLineNo">2254</span>        // note that large responses will often also be slow.<a name="line.2254"></a>
+<span class="sourceLineNo">2255</span>        logResponse(new Object[]{param},<a name="line.2255"></a>
+<span class="sourceLineNo">2256</span>            md.getName(), md.getName() + "(" + param.getClass().getName() + ")",<a name="line.2256"></a>
+<span class="sourceLineNo">2257</span>            (tooLarge ? "TooLarge" : "TooSlow"),<a name="line.2257"></a>
+<span class="sourceLineNo">2258</span>            status.getClient(), startTime, processingTime, qTime,<a name="line.2258"></a>
+<span class="sourceLineNo">2259</span>            responseSize);<a name="line.2259"></a>
+<span class="sourceLineNo">2260</span>      }<a name="line.2260"></a>
+<span class="sourceLineNo">2261</span>      return new Pair&lt;Message, CellScanner&gt;(result, controller.cellScanner());<a name="line.2261"></a>
+<span class="sourceLineNo">2262</span>    } catch (Throwable e) {<a name="line.2262"></a>
+<span class="sourceLineNo">2263</span>      // The above callBlockingMethod will always return a SE.  Strip the SE wrapper before<a name="line.2263"></a>
+<span class="sourceLineNo">2264</span>      // putting it on the wire.  Its needed to adhere to the pb Service Interface but we don't<a name="line.2264"></a>
+<span class="sourceLineNo">2265</span>      // need to pass it over the wire.<a name="line.2265"></a>
+<span class="sourceLineNo">2266</span>      if (e instanceof ServiceException) e = e.getCause();<a name="line.2266"></a>
 <span class="sourceLineNo">2267</span><a name="line.2267"></a>
-<span class="sourceLineNo">2268</span>      if (e instanceof LinkageError) throw new DoNotRetryIOException(e);<a name="line.2268"></a>
-<span class="sourceLineNo">2269</span>      if (e instanceof IOException) throw (IOException)e;<a name="line.2269"></a>
-<span class="sourceLineNo">2270</span>      LOG.error("Unexpected throwable object ", e);<a name="line.2270"></a>
-<span class="sourceLineNo">2271</span>      throw new IOException(e.getMessage(), e);<a name="line.2271"></a>
-<span class="sourceLineNo">2272</span>    }<a name="line.2272"></a>
-<span class="sourceLineNo">2273</span>  }<a name="line.2273"></a>
-<span class="sourceLineNo">2274</span><a name="line.2274"></a>
-<span class="sourceLineNo">2275</span>  /**<a name="line.2275"></a>
-<span class="sourceLineNo">2276</span>   * Logs an RPC response to the LOG file, producing valid JSON objects for<a name="line.2276"></a>
-<span class="sourceLineNo">2277</span>   * client Operations.<a name="line.2277"></a>
-<span class="sourceLineNo">2278</span>   * @param params The parameters received in the call.<a name="line.2278"></a>
-<span class="sourceLineNo">2279</span>   * @param methodName The name of the method invoked<a name="line.2279"></a>
-<span class="sourceLineNo">2280</span>   * @param call The string representation of the call<a name="line.2280"></a>
-<span class="sourceLineNo">2281</span>   * @param tag  The tag that will be used to indicate this event in the log.<a name="line.2281"></a>
-<span class="sourceLineNo">2282</span>   * @param clientAddress   The address of the client who made this call.<a name="line.2282"></a>
-<span class="sourceLineNo">2283</span>   * @param startTime       The time that the call was initiated, in ms.<a name="line.2283"></a>
-<span class="sourceLineNo">2284</span>   * @param processingTime  The duration that the call took to run, in ms.<a name="line.2284"></a>
-<span class="sourceLineNo">2285</span>   * @param qTime           The duration that the call spent on the queue<a name="line.2285"></a>
-<span class="sourceLineNo">2286</span>   *                        prior to being initiated, in ms.<a name="line.2286"></a>
-<span class="sourceLineNo">2287</span>   * @param responseSize    The size in bytes of the response buffer.<a name="line.2287"></a>
-<span class="sourceLineNo">2288</span>   */<a name="line.2288"></a>
-<span class="sourceLineNo">2289</span>  void logResponse(Object[] params, String methodName, String call, String tag,<a name="line.2289"></a>
-<span class="sourceLineNo">2290</span>      String clientAddress, long startTime, int processingTime, int qTime,<a name="line.2290"></a>
-<span class="sourceLineNo">2291</span>      long responseSize)<a name="line.2291"></a>
-<span class="sourceLineNo">2292</span>          throws IOException {<a name="line.2292"></a>
-<span class="sourceLineNo">2293</span>    // base information that is reported regardless of type of call<a name="line.2293"></a>
-<span class="sourceLineNo">2294</span>    Map&lt;String, Object&gt; responseInfo = new HashMap&lt;String, Object&gt;();<a name="line.2294"></a>
-<span class="sourceLineNo">2295</span>    responseInfo.put("starttimems", startTime);<a name="line.2295"></a>
-<span class="sourceLineNo">2296</span>    responseInfo.put("processingtimems", processingTime);<a name="line.2296"></a>
-<span class="sourceLineNo">2297</span>    responseInfo.put("queuetimems", qTime);<a name="line.2297"></a>
-<span class="sourceLineNo">2298</span>    responseInfo.put("responsesize", responseSize);<a name="line.2298"></a>
-<span class="sourceLineNo">2299</span>    responseInfo.put("client", clientAddress);<a name="line.2299"></a>
-<span class="sourceLineNo">2300</span>    responseInfo.put("class", server == null? "": server.getClass().getSimpleName());<a name="line.2300"></a>
-<span class="sourceLineNo">2301</span>    responseInfo.put("method", methodName);<a name="line.2301"></a>
-<span class="sourceLineNo">2302</span>    if (params.length == 2 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2302"></a>
-<span class="sourceLineNo">2303</span>        params[0] instanceof byte[] &amp;&amp;<a name="line.2303"></a>
-<span class="sourceLineNo">2304</span>        params[1] instanceof Operation) {<a name="line.2304"></a>
-<span class="sourceLineNo">2305</span>      // if the slow process is a query, we want to log its table as well<a name="line.2305"></a>
-<span class="sourceLineNo">2306</span>      // as its own fingerprint<a name="line.2306"></a>
-<span class="sourceLineNo">2307</span>      TableName tableName = TableName.valueOf(<a name="line.2307"></a>
-<span class="sourceLineNo">2308</span>          HRegionInfo.parseRegionName((byte[]) params[0])[0]);<a name="line.2308"></a>
-<span class="sourceLineNo">2309</span>      responseInfo.put("table", tableName.getNameAsString());<a name="line.2309"></a>
-<span class="sourceLineNo">2310</span>      // annotate the response map with operation details<a name="line.2310"></a>
-<span class="sourceLineNo">2311</span>      responseInfo.putAll(((Operation) params[1]).toMap());<a name="line.2311"></a>
-<span class="sourceLineNo">2312</span>      // report to the log file<a name="line.2312"></a>
-<span class="sourceLineNo">2313</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2313"></a>
-<span class="sourceLineNo">2314</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2314"></a>
-<span class="sourceLineNo">2315</span>    } else if (params.length == 1 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2315"></a>
-<span class="sourceLineNo">2316</span>        params[0] instanceof Operation) {<a name="line.2316"></a>
-<span class="sourceLineNo">2317</span>      // annotate the response map with operation details<a name="line.2317"></a>
-<span class="sourceLineNo">2318</span>      responseInfo.putAll(((Operation) params[0]).toMap());<a name="line.2318"></a>
-<span class="sourceLineNo">2319</span>      // report to the log file<a name="line.2319"></a>
-<span class="sourceLineNo">2320</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2320"></a>
-<span class="sourceLineNo">2321</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2321"></a>
-<span class="sourceLineNo">2322</span>    } else {<a name="line.2322"></a>
-<span class="sourceLineNo">2323</span>      // can't get JSON details, so just report call.toString() along with<a name="line.2323"></a>
-<span class="sourceLineNo">2324</span>      // a more generic tag.<a name="line.2324"></a>
-<span class="sourceLineNo">2325</span>      responseInfo.put("call", call);<a name="line.2325"></a>
-<span class="sourceLineNo">2326</span>      LOG.warn("(response" + tag + "): " + MAPPER.writeValueAsString(responseInfo));<a name="line.2326"></a>
-<span class="sourceLineNo">2327</span>    }<a name="line.2327"></a>
-<span class="sourceLineNo">2328</span>  }<a name="line.2328"></a>
-<span class="sourceLineNo">2329</span><a name="line.2329"></a>
-<span class="sourceLineNo">2330</span>  /** Stops the service.  No new calls will be handled after this is called. */<a name="line.2330"></a>
-<span class="sourceLineNo">2331</span>  @Override<a name="line.2331"></a>
-<span class="sourceLineNo">2332</span>  public synchronized void stop() {<a name="line.2332"></a>
-<span class="sourceLineNo">2333</span>    LOG.info("Stopping server on " + port);<a name="line.2333"></a>
-<span class="sourceLineNo">2334</span>    running = false;<a name="line.2334"></a>
-<span class="sourceLineNo">2335</span>    if (authTokenSecretMgr != null) {<a name="line.2335"></a>
-<span class="sourceLineNo">2336</span>      authTokenSecretMgr.stop();<a name="line.2336"></a>
-<span class="sourceLineNo">2337</span>      authTokenSecretMgr = null;<a name="line.2337"></a>
-<span class="sourceLineNo">2338</span>    }<a name="line.2338"></a>
-<span class="sourceLineNo">2339</span>    listener.interrupt();<a name="line.2339"></a>
-<span class="sourceLineNo">2340</span>    listener.doStop();<a name="line.2340"></a>
-<span class="sourceLineNo">2341</span>    responder.interrupt();<a name="line.2341"></a>
-<span class="sourceLineNo">2342</span>    scheduler.stop();<a name="line.2342"></a>
-<span class="sourceLineNo">2343</span>    notifyAll();<a name="line.2343"></a>
-<span class="sourceLineNo">2344</span>  }<a name="line.2344"></a>
-<span class="sourceLineNo">2345</span><a name="line.2345"></a>
-<span class="sourceLineNo">2346</span>  /** Wait for the server to be stopped.<a name="line.2346"></a>
-<span class="sourceLineNo">2347</span>   * Does not wait for all subthreads to finish.<a name="line.2347"></a>
-<span class="sourceLineNo">2348</span>   *  See {@link #stop()}.<a name="line.2348"></a>
-<span class="sourceLineNo">2349</span>   * @throws InterruptedException e<a name="line.2349"></a>
-<span class="sourceLineNo">2350</span>   */<a name="line.2350"></a>
-<span class="sourceLineNo">2351</span>  @Override<a name="line.2351"></a>
-<span class="sourceLineNo">2352</span>  public synchronized void join() throws InterruptedException {<a name="line.2352"></a>
-<span class="sourceLineNo">2353</span>    while (running) {<a name="line.2353"></a>
-<span class="sourceLineNo">2354</span>      wait();<a name="line.2354"></a>
-<span class="sourceLineNo">2355</span>    }<a name="line.2355"></a>
-<span class="sourceLineNo">2356</span>  }<a name="line.2356"></a>
-<span class="sourceLineNo">2357</span><a name="line.2357"></a>
-<span class="sourceLineNo">2358</span>  /**<a name="line.2358"></a>
-<span class="sourceLineNo">2359</span>   * Return the socket (ip+port) on which the RPC server is listening to. May return null if<a name="line.2359"></a>
-<span class="sourceLineNo">2360</span>   * the listener channel is closed.<a name="line.2360"></a>
-<span class="sourceLineNo">2361</span>   * @return the socket (ip+port) on which the RPC server is listening to, or null if this<a name="line.2361"></a>
-<span class="sourceLineNo">2362</span>   * information cannot be determined<a name="line.2362"></a>
-<span class="sourceLineNo">2363</span>   */<a name="line.2363"></a>
-<span class="sourceLineNo">2364</span>  @Override<a name="line.2364"></a>
-<span class="sourceLineNo">2365</span>  public synchronized InetSocketAddress getListenerAddress() {<a name="line.2365"></a>
-<span class="sourceLineNo">2366</span>    if (listener == null) {<a name="line.2366"></a>
-<span class="sourceLineNo">2367</span>      return null;<a name="line.2367"></a>
-<span class="sourceLineNo">2368</span>    }<a name="line.2368"></a>
-<span class="sourceLineNo">2369</span>    return listener.getAddress();<a name="line.2369"></a>
-<span class="sourceLineNo">2370</span>  }<a name="line.2370"></a>
-<span class="sourceLineNo">2371</span><a name="line.2371"></a>
-<span class="sourceLineNo">2372</span>  /**<a name="line.2372"></a>
-<span class="sourceLineNo">2373</span>   * Set the handler for calling out of RPC for error conditions.<a name="line.2373"></a>
-<span class="sourceLineNo">2374</span>   * @param handler the handler implementation<a name="line.2374"></a>
-<span class="sourceLineNo">2375</span>   */<a name="line.2375"></a>
-<span class="sourceLineNo">2376</span>  @Override<a name="line.2376"></a>
-<span class="sourceLineNo">2377</span>  public void setErrorHandler(HBaseRPCErrorHandler handler) {<a name="line.2377"></a>
-<span class="sourceLineNo">2378</span>    this.errorHandler = handler;<a name="line.2378"></a>
-<span class="sourceLineNo">2379</span>  }<a name="line.2379"></a>
-<span class="sourceLineNo">2380</span><a name="line.2380"></a>
-<span class="sourceLineNo">2381</span>  @Override<a name="line.2381"></a>
-<span class="sourceLineNo">2382</span>  public HBaseRPCErrorHandler getErrorHandler() {<a name="line.2382"></a>
-<span class="sourceLineNo">2383</span>    return this.errorHandler;<a name="line.2383"></a>
-<span class="sourceLineNo">2384</span>  }<a name="line.2384"></a>
-<span class="sourceLineNo">2385</span><a name="line.2385"></a>
-<span class="sourceLineNo">2386</span>  /**<a name="line.2386"></a>
-<span class="sourceLineNo">2387</span>   * Returns the metrics instance for reporting RPC call statistics<a name="line.2387"></a>
-<span class="sourceLineNo">2388</span>   */<a name="line.2388"></a>
-<span class="sourceLineNo">2389</span>  @Override<a name="line.2389"></a>
-<span class="sourceLineNo">2390</span>  public MetricsHBaseServer getMetrics() {<a name="line.2390"></a>
-<span class="sourceLineNo">2391</span>    return metrics;<a name="line.2391"></a>
-<span class="sourceLineNo">2392</span>  }<a name="line.2392"></a>
-<span class="sourceLineNo">2393</span><a name="line.2393"></a>
-<span class="sourceLineNo">2394</span>  @Override<a name="line.2394"></a>
-<span class="sourceLineNo">2395</span>  public void addCallSize(final long diff) {<a name="line.2395"></a>
-<span class="sourceLineNo">2396</span>    this.callQueueSize.add(diff);<a name="line.2396"></a>
-<span class="sourceLineNo">2397</span>  }<a name="line.2397"></a>
-<span class="sourceLineNo">2398</span><a name="line.2398"></a>
-<span class="sourceLineNo">2399</span>  /**<a name="line.2399"></a>
-<span class="sourceLineNo">2400</span>   * Authorize the incoming client connection.<a name="line.2400"></a>
-<span class="sourceLineNo">2401</span>   *<a name="line.2401"></a>
-<span class="sourceLineNo">2402</span>   * @param user client user<a name="line.2402"></a>
-<span class="sourceLineNo">2403</span>   * @param connection incoming connection<a name="line.2403"></a>
-<span class="sourceLineNo">2404</span>   * @param addr InetAddress of incoming connection<a name="line.2404"></a>
-<span class="sourceLineNo">2405</span>   * @throws org.apache.hadoop.security.authorize.AuthorizationException<a name="line.2405"></a>
-<span class="sourceLineNo">2406</span>   *         when the client isn't authorized to talk the protocol<a name="line.2406"></a>
-<span class="sourceLineNo">2407</span>   */<a name="line.2407"></a>
-<span class="sourceLineNo">2408</span>  public synchronized void authorize(UserGroupInformation user, ConnectionHeader connection,<a name="line.2408"></a>
-<span class="sourceLineNo">2409</span>      InetAddress addr)<a name="line.2409"></a>
-<span class="sourceLineNo">2410</span>  throws AuthorizationException {<a name="line.2410"></a>
-<span class="sourceLineNo">2411</span>    if (authorize) {<a name="line.2411"></a>
-<span class="sourceLineNo">2412</span>      Class&lt;?&gt; c = getServiceInterface(services, connection.getServiceName());<a name="line.2412"></a>
-<span class="sourceLineNo">2413</span>      this.authManager.authorize(user != null ? user : null, c, getConf(), addr);<a name="line.2413"></a>
-<span class="sourceLineNo">2414</span>    }<a name="line.2414"></a>
-<span class="sourceLineNo">2415</span>  }<a name="line.2415"></a>
-<span class="sourceLineNo">2416</span><a name="line.2416"></a>
-<span class="sourceLineNo">2417</span>  /**<a name="line.2417"></a>
-<span class="sourceLineNo">2418</span>   * When the read or write buffer size is larger than this limit, i/o will be<a name="line.2418"></a>
-<span class="sourceLineNo">2419</span>   * done in chunks of this size. Most RPC requests and responses would be<a name="line.2419"></a>
-<span class="sourceLineNo">2420</span>   * be smaller.<a name="line.2420"></a>
-<span class="sourceLineNo">2421</span>   */<a name="line.2421"></a>
-<span class="sourceLineNo">2422</span>  private static int NIO_BUFFER_LIMIT = 64 * 1024; //should not be more than 64KB.<a name="line.2422"></a>
-<span class="sourceLineNo">2423</span><a name="line.2423"></a>
-<span class="sourceLineNo">2424</span>  /**<a name="line.2424"></a>
-<span class="sourceLineNo">2425</span>   * This is a wrapper around {@link java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)}.<a name="line.2425"></a>
-<span class="sourceLineNo">2426</span>   * If the amount of data is large, it writes to channel in smaller chunks.<a name="line.2426"></a>
-<span class="sourceLineNo">2427</span>   * This is to avoid jdk from creating many direct buffers as the size of<a name="line.2427"></a>
-<span class="sourceLineNo">2428</span>   * buffer increases. This also minimizes extra copies in NIO layer<a name="line.2428"></a>
-<span class="sourceLineNo">2429</span>   * as a result of multiple write operations required to write a large<a name="line.2429"></a>
-<span class="sourceLineNo">2430</span>   * buffer.<a name="line.2430"></a>
-<span class="sourceLineNo">2431</span>   *<a name="line.2431"></a>
-<span class="sourceLineNo">2432</span>   * @param channel writable byte channel to write to<a name="line.2432"></a>
-<span class="sourceLineNo">2433</span>   * @param bufferChain Chain of buffers to write<a name="line.2433"></a>
-<span class="sourceLineNo">2434</span>   * @return number of bytes written<a name="line.2434"></a>
-<span class="sourceLineNo">2435</span>   * @throws java.io.IOException e<a name="line.2435"></a>
-<span class="sourceLineNo">2436</span>   * @see java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)<a name="line.2436"></a>
-<span class="sourceLineNo">2437</span>   */<a name="line.2437"></a>
-<span class="sourceLineNo">2438</span>  protected long channelWrite(GatheringByteChannel channel, BufferChain bufferChain)<a name="line.2438"></a>
-<span class="sourceLineNo">2439</span>  throws IOException {<a name="line.2439"></a>
-<span class="sourceLineNo">2440</span>    long count =  bufferChain.write(channel, NIO_BUFFER_LIMIT);<a name="line.2440"></a>
-<span class="sourceLineNo">2441</span>    if (count &gt; 0) this.metrics.sentBytes(count);<a name="line.2441"></a>
-<span class="sourceLineNo">2442</span>    return count;<a name="line.2442"></a>
-<span class="sourceLineNo">2443</span>  }<a name="line.2443"></a>
-<span class="sourceLineNo">2444</span><a name="line.2444"></a>
-<span class="sourceLineNo">2445</span>  /**<a name="line.2445"></a>
-<span class="sourceLineNo">2446</span>   * This is a wrapper around {@link java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer)}.<a name="line.2446"></a>
-<span class="sourceLineNo">2447</span>   * If the amount of data is large, it writes to channel in smaller chunks.<a name="line.2447"></a>
-<span class="sourceLineNo">2448</span>   * This is to avoid jdk from creating many direct buffers as the size of<a name="line.2448"></a>
-<span class="sourceLineNo">2449</span>   * ByteBuffer increases. There should not be any performance degredation.<a name="line.2449"></a>
-<span class="sourceLineNo">2450</span>   *<a name="line.2450"></a>
-<span class="sourceLineNo">2451</span>   * @param channel writable byte channel to write on<a name="line.2451"></a>
-<span class="sourceLineNo">2452</span>   * @param buffer buffer to write<a name="line.2452"></a>
-<span class="sourceLineNo">2453</span>   * @return number of bytes written<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>   * @throws java.io.IOException e<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>   * @see java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer)<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>   */<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>  protected int channelRead(ReadableByteChannel channel,<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>                                   ByteBuffer buffer) throws IOException {<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span><a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>    int count = (buffer.remaining() &lt;= NIO_BUFFER_LIMIT) ?<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>           channel.read(buffer) : channelIO(channel, null, buffer);<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span>    if (count &gt; 0) {<a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      metrics.receivedBytes(count);<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>    }<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>    return count;<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>  }<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span><a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>  /**<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>   * Helper for {@link #channelRead(java.nio.channels.ReadableByteChannel, java.nio.ByteBuffer)}<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>   * and {@link #channelWrite(GatheringByteChannel, BufferChain)}. Only<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span>   * one of readCh or writeCh should be non-null.<a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>   *<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>   * @param readCh read channel<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>   * @param writeCh write channel<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>   * @param buf buffer to read or write into/out of<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>   * @return bytes written<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>   * @throws java.io.IOException e<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>   * @see #channelRead(java.nio.channels.ReadableByteChannel, java.nio.ByteBuffer)<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>   * @see #channelWrite(GatheringByteChannel, BufferChain)<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>   */<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>  private static int channelIO(ReadableByteChannel readCh,<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>                               WritableByteChannel writeCh,<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>                               ByteBuffer buf) throws IOException {<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span><a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    int originalLimit = buf.limit();<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    int initialRemaining = buf.remaining();<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>    int ret = 0;<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span><a name="line.2488"></a>
-<span class="sourceLineNo">2489</span>    while (buf.remaining() &gt; 0) {<a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>      try {<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>        int ioSize = Math.min(buf.remaining(), NIO_BUFFER_LIMIT);<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>        buf.limit(buf.position() + ioSize);<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span><a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>        ret = (readCh == null) ? writeCh.write(buf) : readCh.read(buf);<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span><a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>        if (ret &lt; ioSize) {<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>          break;<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>        }<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span><a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      } finally {<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>        buf.limit(originalLimit);<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>      }<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>    }<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span><a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>    int nBytes = initialRemaining - buf.remaining();<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    return (nBytes &gt; 0) ? nBytes : ret;<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>  }<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span><a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>  /**<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>   * Needed for features such as delayed calls.  We need to be able to store the current call<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>   * so that we can complete it later or ask questions of what is supported by the current ongoing<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span>   * call.<a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>   * @return An RpcCallContext backed by the currently ongoing call (gotten from a thread local)<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>   */<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>  public static RpcCallContext getCurrentCall() {<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    return CurCall.get();<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>  }<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span><a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>  public static boolean isInRpcCallContext() {<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>    return CurCall.get() != null;<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>  }<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span><a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>  /**<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>   * Returns the user credentials associated with the current RPC request or<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>   * &lt;code&gt;null&lt;/code&gt; if no credentials were provided.<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>   * @return A User<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>   */<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  public static User getRequestUser() {<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span>    RpcCallContext ctx = getCurrentCall();<a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>    return ctx == null? null: ctx.getRequestUser();<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>  }<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span><a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  /**<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>   * Returns the username for any user associated with the current RPC<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>   * request or &lt;code&gt;null&lt;/code&gt; if no user is set.<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>   */<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>  public static String getRequestUserName() {<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    User user = getRequestUser();<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>    return user == null? null: user.getShortName();<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>  }<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span><a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>  /**<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>   * @return Address of remote client if a request is ongoing, else null<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>   */<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span>  public static InetAddress getRemoteAddress() {<a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>    RpcCallContext ctx = getCurrentCall();<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>    return ctx == null? null: ctx.getRemoteAddress();<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>  }<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span><a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>  /**<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span>   * @param services Available service instances<a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>   * @return Matching BlockingServiceAndInterface pair<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   */<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>  static BlockingServiceAndInterface getServiceAndInterface(<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>      final List&lt;BlockingServiceAndInterface&gt; services, final String serviceName) {<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>    for (BlockingServiceAndInterface bs : services) {<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>      if (bs.getBlockingService().getDescriptorForType().getName().equals(serviceName)) {<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>        return bs;<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>      }<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>    }<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>    return null;<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>  }<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span><a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>  /**<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>   * @param services Available services and their service interfaces.<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>   * @return Service interface class for &lt;code&gt;serviceName&lt;/code&gt;<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>   */<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>  static Class&lt;?&gt; getServiceInterface(<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>      final List&lt;BlockingServiceAndInterface&gt; services,<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>      final String serviceName) {<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>    BlockingServiceAndInterface bsasi =<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span>        getServiceAndInterface(services, serviceName);<a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>    return bsasi == null? null: bsasi.getServiceInterface();<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>  }<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span><a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>  /**<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>   * @param serviceName Some arbitrary string that represents a 'service'.<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>   * @param services Available services and their service interfaces.<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>   * @return BlockingService that goes with the passed &lt;code&gt;serviceName&lt;/code&gt;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>   */<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>  static BlockingService getService(<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>      final List&lt;BlockingServiceAndInterface&gt; services,<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span>      final String serviceName) {<a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    BlockingServiceAndInterface bsasi =<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>        getServiceAndInterface(services, serviceName);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    return bsasi == null? null: bsasi.getBlockingService();<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span>  }<a name="line.2589"></a>
-<span class="sourceLineNo">2590</span><a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>  static MonitoredRPCHandler getStatus() {<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // It is ugly the way we park status up in RpcServer.  Let it be for now.  TODO.<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    MonitoredRPCHandler status = RpcServer.MONITORED_RPC.get();<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    if (status != null) {<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>      return status;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    }<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>    status = TaskMonitor.get().createRPCStatus(Thread.currentThread().getName());<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>    status.pause("Waiting for a call");<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>    RpcServer.MONITORED_RPC.set(status);<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>    return status;<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span>  }<a name="line.2601"></a>
-<span class="sourceLineNo">2602</span><a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>  /** Returns the remote side ip address when invoked inside an RPC<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>   *  Returns null incase of an error.<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span>   *  @return InetAddress<a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>   */<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>  public static InetAddress getRemoteIp() {<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>    Call call = CurCall.get();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>    if (call != null &amp;&amp; call.connection != null &amp;&amp; call.connection.socket != null) {<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      return call.connection.socket.getInetAddress();<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>    }<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>    return null;<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>  }<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span><a name="line.2614"></a>
-<span class="sourceLineNo">2615</span><a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>  /**<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>   * A convenience method to bind to a given address and report<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>   * better exceptions if the address is not a valid host.<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>   * @param socket the socket to bind<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>   * @param address the address to bind to<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>   * @param backlog the number of connections allowed in the queue<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>   * @throws BindException if the address can't be bound<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>   * @throws UnknownHostException if the address isn't a valid host name<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>   * @throws IOException other random errors from bind<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>   */<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span>  public static void bind(ServerSocket socket, InetSocketAddress address,<a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>                          int backlog) throws IOException {<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>    try {<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span>      socket.bind(address, backlog);<a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>    } catch (BindException e) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>      BindException bindException =<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        new BindException("Problem binding to " + address + " : " +<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>            e.getMessage());<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>      bindException.initCause(e);<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>      throw bindException;<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>    } catch (SocketException e) {<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>      // If they try to bind to a different host's address, give a better<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // error message.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      if ("Unresolved address".equals(e.getMessage())) {<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>        throw new UnknownHostException("Invalid hostname for server: " +<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>                                       address.getHostName());<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      }<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      throw e;<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>    }<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>  }<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span><a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>  @Override<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>  public RpcScheduler getScheduler() {<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>    return scheduler;<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>  }<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>}<a name="line.2651"></a>
+<span class="sourceLineNo">2268</span>      // increment the number of requests that were exceptions.<a name="line.2268"></a>
+<span class="sourceLineNo">2269</span>      metrics.exception(e);<a name="line.2269"></a>
+<span class="sourceLineNo">2270</span><a name="line.2270"></a>
+<span class="sourceLineNo">2271</span>      if (e instanceof LinkageError) throw new DoNotRetryIOException(e);<a name="line.2271"></a>
+<span class="sourceLineNo">2272</span>      if (e instanceof IOException) throw (IOException)e;<a name="line.2272"></a>
+<span class="sourceLineNo">2273</span>      LOG.error("Unexpected throwable object ", e);<a name="line.2273"></a>
+<span class="sourceLineNo">2274</span>      throw new IOException(e.getMessage(), e);<a name="line.2274"></a>
+<span class="sourceLineNo">2275</span>    }<a name="line.2275"></a>
+<span class="sourceLineNo">2276</span>  }<a name="line.2276"></a>
+<span class="sourceLineNo">2277</span><a name="line.2277"></a>
+<span class="sourceLineNo">2278</span>  /**<a name="line.2278"></a>
+<span class="sourceLineNo">2279</span>   * Logs an RPC response to the LOG file, producing valid JSON objects for<a name="line.2279"></a>
+<span class="sourceLineNo">2280</span>   * client Operations.<a name="line.2280"></a>
+<span class="sourceLineNo">2281</span>   * @param params The parameters received in the call.<a name="line.2281"></a>
+<span class="sourceLineNo">2282</span>   * @param methodName The name of the method invoked<a name="line.2282"></a>
+<span class="sourceLineNo">2283</span>   * @param call The string representation of the call<a name="line.2283"></a>
+<span class="sourceLineNo">2284</span>   * @param tag  The tag that will be used to indicate this event in the log.<a name="line.2284"></a>
+<span class="sourceLineNo">2285</span>   * @param clientAddress   The address of the client who made this call.<a name="line.2285"></a>
+<span class="sourceLineNo">2286</span>   * @param startTime       The time that the call was initiated, in ms.<a name="line.2286"></a>
+<span class="sourceLineNo">2287</span>   * @param processingTime  The duration that the call took to run, in ms.<a name="line.2287"></a>
+<span class="sourceLineNo">2288</span>   * @param qTime           The duration that the call spent on the queue<a name="line.2288"></a>
+<span class="sourceLineNo">2289</span>   *                        prior to being initiated, in ms.<a name="line.2289"></a>
+<span class="sourceLineNo">2290</span>   * @param responseSize    The size in bytes of the response buffer.<a name="line.2290"></a>
+<span class="sourceLineNo">2291</span>   */<a name="line.2291"></a>
+<span class="sourceLineNo">2292</span>  void logResponse(Object[] params, String methodName, String call, String tag,<a name="line.2292"></a>
+<span class="sourceLineNo">2293</span>      String clientAddress, long startTime, int processingTime, int qTime,<a name="line.2293"></a>
+<span class="sourceLineNo">2294</span>      long responseSize)<a name="line.2294"></a>
+<span class="sourceLineNo">2295</span>          throws IOException {<a name="line.2295"></a>
+<span class="sourceLineNo">2296</span>    // base information that is reported regardless of type of call<a name="line.2296"></a>
+<span class="sourceLineNo">2297</span>    Map&lt;String, Object&gt; responseInfo = new HashMap&lt;String, Object&gt;();<a name="line.2297"></a>
+<span class="sourceLineNo">2298</span>    responseInfo.put("starttimems", startTime);<a name="line.2298"></a>
+<span class="sourceLineNo">2299</span>    responseInfo.put("processingtimems", processingTime);<a name="line.2299"></a>
+<span class="sourceLineNo">2300</span>    responseInfo.put("queuetimems", qTime);<a name="line.2300"></a>
+<span class="sourceLineNo">2301</span>    responseInfo.put("responsesize", responseSize);<a name="line.2301"></a>
+<span class="sourceLineNo">2302</span>    responseInfo.put("client", clientAddress);<a name="line.2302"></a>
+<span class="sourceLineNo">2303</span>    responseInfo.put("class", server == null? "": server.getClass().getSimpleName());<a name="line.2303"></a>
+<span class="sourceLineNo">2304</span>    responseInfo.put("method", methodName);<a name="line.2304"></a>
+<span class="sourceLineNo">2305</span>    if (params.length == 2 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2305"></a>
+<span class="sourceLineNo">2306</span>        params[0] instanceof byte[] &amp;&amp;<a name="line.2306"></a>
+<span class="sourceLineNo">2307</span>        params[1] instanceof Operation) {<a name="line.2307"></a>
+<span class="sourceLineNo">2308</span>      // if the slow process is a query, we want to log its table as well<a name="line.2308"></a>
+<span class="sourceLineNo">2309</span>      // as its own fingerprint<a name="line.2309"></a>
+<span class="sourceLineNo">2310</span>      TableName tableName = TableName.valueOf(<a name="line.2310"></a>
+<span class="sourceLineNo">2311</span>          HRegionInfo.parseRegionName((byte[]) params[0])[0]);<a name="line.2311"></a>
+<span class="sourceLineNo">2312</span>      responseInfo.put("table", tableName.getNameAsString());<a name="line.2312"></a>
+<span class="sourceLineNo">2313</span>      // annotate the response map with operation details<a name="line.2313"></a>
+<span class="sourceLineNo">2314</span>      responseInfo.putAll(((Operation) params[1]).toMap());<a name="line.2314"></a>
+<span class="sourceLineNo">2315</span>      // report to the log file<a name="line.2315"></a>
+<span class="sourceLineNo">2316</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2316"></a>
+<span class="sourceLineNo">2317</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2317"></a>
+<span class="sourceLineNo">2318</span>    } else if (params.length == 1 &amp;&amp; server instanceof HRegionServer &amp;&amp;<a name="line.2318"></a>
+<span class="sourceLineNo">2319</span>        params[0] instanceof Operation) {<a name="line.2319"></a>
+<span class="sourceLineNo">2320</span>      // annotate the response map with operation details<a name="line.2320"></a>
+<span class="sourceLineNo">2321</span>      responseInfo.putAll(((Operation) params[0]).toMap());<a name="line.2321"></a>
+<span class="sourceLineNo">2322</span>      // report to the log file<a name="line.2322"></a>
+<span class="sourceLineNo">2323</span>      LOG.warn("(operation" + tag + "): " +<a name="line.2323"></a>
+<span class="sourceLineNo">2324</span>               MAPPER.writeValueAsString(responseInfo));<a name="line.2324"></a>
+<span class="sourceLineNo">2325</span>    } else {<a name="line.2325"></a>
+<span class="sourceLineNo">2326</span>      // can't get JSON details, so just report call.toString() along with<a name="line.2326"></a>
+<span class="sourceLineNo">2327</span>      // a more generic tag.<a name="line.2327"></a>
+<span class="sourceLineNo">2328</span>      responseInfo.put("call", call);<a name="line.2328"></a>
+<span class="sourceLineNo">2329</span>      LOG.warn("(response" + tag + "): " + MAPPER.writeValueAsString(responseInfo));<a name="line.2329"></a>
+<span class="sourceLineNo">2330</span>    }<a name="line.2330"></a>
+<span class="sourceLineNo">2331</span>  }<a name="line.2331"></a>
+<span class="sourceLineNo">2332</span><a name="line.2332"></a>
+<span class="sourceLineNo">2333</span>  /** Stops the service.  No new calls will be handled after this is called. */<a name="line.2333"></a>
+<span class="sourceLineNo">2334</span>  @Override<a name="line.2334"></a>
+<span class="sourceLineNo">2335</span>  public synchronized void stop() {<a name="line.2335"></a>
+<span class="sourceLineNo">2336</span>    LOG.info("Stopping server on " + port);<a name="line.2336"></a>
+<span class="sourceLineNo">2337</span>    running = false;<a name="line.2337"></a>
+<span class="sourceLineNo">2338</span>    if (authTokenSecretMgr != null) {<a name="line.2338"></a>
+<span class="sourceLineNo">2339</span>      authTokenSecretMgr.stop();<a name="line.2339"></a>
+<span class="sourceLineNo">2340</span>      authTokenSecretMgr = null;<a name="line.2340"></a>
+<span class="sourceLineNo">2341</span>    }<a name="line.2341"></a>
+<span class="sourceLineNo">2342</span>    listener.interrupt();<a name="line.2342"></a>
+<span class="sourceLineNo">2343</span>    listener.doStop();<a name="line.2343"></a>
+<span class="sourceLineNo">2344</span>    responder.interrupt();<a name="line.2344"></a>
+<span class="sourceLineNo">2345</span>    scheduler.stop();<a name="line.2345"></a>
+<span class="sourceLineNo">2346</span>    notifyAll();<a name="line.2346"></a>
+<span class="sourceLineNo">2347</span>  }<a name="line.2347"></a>
+<span class="sourceLineNo">2348</span><a name="line.2348"></a>
+<span class="sourceLineNo">2349</span>  /** Wait for the server to be stopped.<a name="line.2349"></a>
+<span class="sourceLineNo">2350</span>   * Does not wait for all subthreads to finish.<a name="line.2350"></a>
+<span class="sourceLineNo">2351</span>   *  See {@link #stop()}.<a name="line.2351"></a>
+<span class="sourceLineNo">2352</span>   * @throws InterruptedException e<a name="line.2352"></a>
+<span class="sourceLineNo">2353</span>   */<a name="line.2353"></a>
+<span class="sourceLineNo">2354</span>  @Override<a name="line.2354"></a>
+<span class="sourceLineNo">2355</span>  public synchronized void join() throws InterruptedException {<a name="line.2355"></a>
+<span class="sourceLineNo">2356</span>    while (running) {<a name="line.2356"></a>
+<span class="sourceLineNo">2357</span>      wait();<a name="line.2357"></a>
+<span class="sourceLineNo">2358</span>    }<a name="line.2358"></a>
+<span class="sourceLineNo">2359</span>  }<a name="line.2359"></a>
+<span class="sourceLineNo">2360</span><a name="line.2360"></a>
+<span class="sourceLineNo">2361</span>  /**<a name="line.2361"></a>
+<span class="sourceLineNo">2362</span>   * Return the socket (ip+port) on which the RPC server is listening to. May return null if<a name="line.2362"></a>
+<span class="sourceLineNo">2363</span>   * the listener channel is closed.<a name="line.2363"></a>
+<span class="sourceLineNo">2364</span>   * @return the socket (ip+port) on which the RPC server is listening to, or null if this<a name="line.2364"></a>
+<span class="sourceLineNo">2365</span>   * information cannot be determined<a name="line.2365"></a>
+<span class="sourceLineNo">2366</span>   */<a name="line.2366"></a>
+<span class="sourceLineNo">2367</span>  @Override<a name="line.2367"></a>
+<span class="sourceLineNo">2368</span>  public synchronized InetSocketAddress getListenerAddress() {<a name="line.2368"></a>
+<span class="sourceLineNo">2369</span>    if (listener == null) {<a name="line.2369"></a>
+<span class="sourceLineNo">2370</span>      return null;<a name="line.2370"></a>
+<span class="sourceLineNo">2371</span>    }<a name="line.2371"></a>
+<span class="sourceLineNo">2372</span>    return listener.getAddress();<a name="line.2372"></a>
+<span class="sourceLineNo">2373</span>  }<a name="line.2373"></a>
+<span class="sourceLineNo">2374</span><a name="line.2374"></a>
+<span class="sourceLineNo">2375</span>  /**<a name="line.2375"></a>
+<span class="sourceLineNo">2376</span>   * Set the handler for calling out of RPC for error conditions.<a name="line.2376"></a>
+<span class="sourceLineNo">2377</span>   * @param handler the handler implementation<a name="line.2377"></a>
+<span class="sourceLineNo">2378</span>   */<a name="line.2378"></a>
+<span class="sourceLineNo">2379</span>  @Override<a name="line.2379"></a>
+<span class="sourceLineNo">2380</span>  public void setErrorHandler(HBaseRPCErrorHandler handler) {<a name="line.2380"></a>
+<span class="sourceLineNo">2381</span>    this.errorHandler = handler;<a name="line.2381"></a>
+<span class="sourceLineNo">2382</span>  }<a name="line.2382"></a>
+<span class="sourceLineNo">2383</span><a name="line.2383"></a>
+<span class="sourceLineNo">2384</span>  @Override<a name="line.2384"></a>
+<span class="sourceLineNo">2385</span>  public HBaseRPCErrorHandler getErrorHandler() {<a name="line.2385"></a>
+<span class="sourceLineNo">2386</span>    return this.errorHandler;<a name="line.2386"></a>
+<span class="sourceLineNo">2387</span>  }<a name="line.2387"></a>
+<span class="sourceLineNo">2388</span><a name="line.2388"></a>
+<span class="sourceLineNo">2389</span>  /**<a name="line.2389"></a>
+<span class="sourceLineNo">2390</span>   * Returns the metrics instance for reporting RPC call statistics<a name="line.2390"></a>
+<span class="sourceLineNo">2391</span>   */<a name="line.2391"></a>
+<span class="sourceLineNo">2392</span>  @Override<a name="line.2392"></a>
+<span class="sourceLineNo">2393</span>  public MetricsHBaseServer getMetrics() {<a name="line.2393"></a>
+<span class="sourceLineNo">2394</span>    return metrics;<a name="line.2394"></a>
+<span class="sourceLineNo">2395</span>  }<a name="line.2395"></a>
+<span class="sourceLineNo">2396</span><a name="line.2396"></a>
+<span class="sourceLineNo">2397</span>  @Override<a name="line.2397"></a>
+<span class="sourceLineNo">2398</span>  public void addCallSize(final long diff) {<a name="line.2398"></a>
+<span class="sourceLineNo">2399</span>    this.callQueueSize.add(diff);<a name="line.2399"></a>
+<span class="sourceLineNo">2400</span>  }<a name="line.2400"></a>
+<span class="sourceLineNo">2401</span><a name="line.2401"></a>
+<span class="sourceLineNo">2402</span>  /**<a name="line.2402"></a>
+<span class="sourceLineNo">2403</span>   * Authorize the incoming client connection.<a name="line.2403"></a>
+<span class="sourceLineNo">2404</span>   *<a name="line.2404"></a>
+<span class="sourceLineNo">2405</span>   * @param user client user<a name="line.2405"></a>
+<span class="sourceLineNo">2406</span>   * @param connection incoming connection<a name="line.2406"></a>
+<span class="sourceLineNo">2407</span>   * @param addr InetAddress of incoming connection<a name="line.2407"></a>
+<span class="sourceLineNo">2408</span>   * @throws org.apache.hadoop.security.authorize.AuthorizationException<a name="line.2408"></a>
+<span class="sourceLineNo">2409</span>   *         when the client isn't authorized to talk the protocol<a name="line.2409"></a>
+<span class="sourceLineNo">2410</span>   */<a name="line.2410"></a>
+<span class="sourceLineNo">2411</span>  public synchronized void authorize(UserGroupInformation user, ConnectionHeader connection,<a name="line.2411"></a>
+<span class="sourceLineNo">2412</span>      InetAddress addr)<a name="line.2412"></a>
+<span class="sourceLineNo">2413</span>  throws AuthorizationException {<a name="line.2413"></a>
+<span class="sourceLineNo">2414</span>    if (authorize) {<a name="line.2414"></a>
+<span class="sourceLineNo">2415</span>      Class&lt;?&gt; c = getServiceInterface(services, connection.getServiceName());<a name="line.2415"></a>
+<span class="sourceLineNo">2416</span>      this.authManager.authorize(user != null ? user : null, c, getConf(), addr);<a name="line.2416"></a>
+<span class="sourceLineNo">2417</span>    }<a name="line.2417"></a>
+<span class="sourceLineNo">2418</span>  }<a name="line.2418"></a>
+<span class="sourceLineNo">2419</span><a name="line.2419"></a>
+<span class="sourceLineNo">2420</span>  /**<a name="line.2420"></a>
+<span class="sourceLineNo">2421</span>   * When the read or write buffer size is larger than this limit, i/o will be<a name="line.2421"></a>
+<span class="sourceLineNo">2422</span>   * done in chunks of this size. Most RPC requests and responses would be<a name="line.2422"></a>
+<span class="sourceLineNo">2423</span>   * be smaller.<a name="line.2423"></a>
+<span class="sourceLineNo">2424</span>   */<a name="line.2424"></a>
+<span class="sourceLineNo">2425</span>  private static int NIO_BUFFER_LIMIT = 64 * 1024; //should not be more than 64KB.<a name="line.2425"></a>
+<span class="sourceLineNo">2426</span><a name="line.2426"></a>
+<span class="sourceLineNo">2427</span>  /**<a name="line.2427"></a>
+<span class="sourceLineNo">2428</span>   * This is a wrapper around {@link java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer)}.<a name=

<TRUNCATED>